IMPLEMENTASI TABEL-TABEL BASIS DATA
(1)
(PENGGUNAAN INSTRUKSI CREATE TABLE &OPTIONS-NYA
SERTA MEMASUKKAN RECORD KE DALAM TABEL-TABEL BASIS DATA
A.
Tujuan
Mahasiswa mampu membuat
struktur tabel-tabel basis data berdasarkan perancangan di modul 3 dan
mengimplementasikan tabel-tabel tersebut di basis data.
B.
Dasar
Teori
Basis data dapat diimplementasikan
berdasarkan E-R diagram yang telah dibuat. Implementasi database bisa:
1. Secara
manual (dengan perintah SQL ‘CREATE TABLE’)
2. Secara
semi-manual dengan bantuan client berbasis GUI (MySQL Front, PgAccess,
phpPgAdmin, dst.)
3. Secara
otomatis dengan CASE Tools (DBDesigner)
·
Pengenalan
PostgreSQL
PostgreSQL adalah
sebuah object-relational database
management system (ORDBMS), bersifat open
source, mendukung standar SQL92 dan SQL99 serta mendukung bahasa
pemrograman C, C++, Java, Tcl, Perl, Python, PHP, dst.
Fitur penting
PostgreSQL: Inheritance, Data types, Functions, Constraints,
Triggers, Rules, dan Transactional
Integrity.
Arsitektur PostgreSQL
berbasis Client-Server. Backend Software untuk
database server (server-side) adalah
Postmaster.
Frontend
software (client-side):
·
Psql (disediakan dalam paket PostgreSQL)
·
Client berbasis GUI (PgAdmin, PgAccess,
ApplixWare)
·
Buat aplikasi sendiri (C, C++, Java,
PHP, dsb.)
Beberapa URL untuk
PostgreSQL:
·
techdocs.postgresql.org
·
Tahap
Pembuatan Tabel
1. Membuat
semua tabel yang paling utama (yang tidak memiliki FK).
2. Membuat
semua tabel yang berhubungan langsung (atau memiliki relationship) dengan tabel
yang dibuat di tahap sebelumnya. Mulailah secara urut dari tabel dengan jumlah
FK yang paling ssedikit ke ang paling banyak.
3. Ulangi
tahap 2 sampai semua tabel selesai dibuat.
·
Implementasi
Manual
Contoh untuk menetukan Primary Key (PK):
·
CREATE TABLE dosen (nip INTEGER PRIMARY
KEY, nama_dosen VARCHAR(45), alamat_dosen VARCHAR(255));
Contoh untuk menentukan
Foreign Key (FK):
·
CREATE TABLE mahasiswa (nim INTEGER
PRIMARY KEY, nip INTEGER REFERENCES dosen(nip), nama_mhs VARCHAR(45),
alamat_mhs VARCHAR(255));
·
Referential Integrity
1. Integritas
databse mengacu pada hubungan antar tabel melalui Foreign Key yang bersangkutan.
2. Pada
insert, record harus dimasukkan di tabel utama dahulu,
kemudian baru di tabel kedua.
3. Pada
delete, record harus dihapus di tabel
kedua dahulu, kemudian baru di tabel utama.
4. Secara
default, PostgreSQL akan menolak insert atau delete yang melanggar integritas database.
·
Insert Table
1. Perintah
SQL untuk memasukkan data di tabel untuk semua kolom:
INSERT INTO <nama tabel>
VALUES (<nilai
kolom>, ...);
2. Untuk
memasukkan data pada kolom-kolom tertentu:
INSERT INTO <nama
tabel> (<nama kolom>, ...)
VALUES (<nilai
kolom>, ...);
·
Tahap
Insert Table
1. Tahap
insert table mengikuti tahap
pembuatan tabel
2. Tahap
1: Lakukan insert pada semua tabel
yang paling utama (yang tidak memiliki FK).
3. Tahap
2: Lakukan insert pada semua tabel
yang langsung berhubungan dengan tabel yang di-insert di tahap sebelumnya, secara urut dari tabel dengan jumlah FK
yang paling sedikit ke yang paling banyak.
4. Tahap
3: ulangi tahap 2 sampai semua insert
selesai dilakukan.
·
Tahap
Delete Table
1. Untuk
menjaga integritas database, maka tahap untuk melakukan delete table adalah kebalikan dari tahap insert table.
2. Secara
default, PostgerSQL akan menolak delete yang melanggar integritas
database. Dengan kata lain, record di
tabel utama tidak akan dihapus jika masih ada record di tabel kedua yang berhubungan dengan record utama tersebut.
Advanced Create Table Options:
·
Default
Untuk menentukan nilai
default kolom jika tidak ada data yang di-insert untuk kolo itu:
-
CREATE TABLE mahasiswa (nim integer
PRIMARY KEY, nama_mhs VARCHAR(45), fakultas VARCHAR(5) DEFAULT ‘FKI’:
Contoh insert:
-
INSERT INTO mahasiswa (nim, nam_mhs)
VALUES (1, ‘Ali Topan’);
·
Not Null
Untuk membatasi agar
nilai kolom tidak boleh NULL:
-
CREATE TABLE ruang (kode_ruang
VARCHAR(20) PRIMARY KEY, lokasi_ruang VARCHAR(255) NOT NULL, kapasitas_ruang
INTEGER NOT NULL);
Jika kolom ditentukan
NOT NULL, maka insert harus
memasukkan nilai untuk kolom tersebut. Bisa menggunakan DEFAULT sehingga nilai
kolom ditambahkan secara otomatis.
Pengertian
NULL
Khusus untuk tipe
string (varchar atau char), NULL tidak sama dengan kosong. Jika nilai kolom
adalah NULL, artinya nilai tidak diketahui atau nilai tidak ada sama sekali.
Jika nilaikolom adalah kosong, artinya kolom tersebut memang diketahui nilainya
(ada nilainya), yaitu nilai kosong (empty
string).
Contoh:
-
CREATE TABLE test (kode INTEGER PRIMARY
KEY, nama VARCHAR(20));
-
INSERT INTO test (kode) VALUES (1);
-
INSERT INTO test VALUES (2, ‘ ’);
Perhatikan hasil
berikut:
-
SELECT* FROM test WHERE nama IS NULL;
-
SELECT* FROM test WHERE nama = ‘ ‘;
·
Unique
Untuk memastikan bahwa
nilai kolom unik:
-
CREATE TABLE mata_kulaih (kode_mk
INTEGER PRIMARY KEY, nama_mk VARCHAR(45) UNIQUE);
Untuk multikolom yang
unik:
-
CREATE TABLE dosen (nip INTEGER PRIMARY
KEY, nama_dosen VARCHAR(45), alamat_dosen VARCHAR(255), UNIQUE (nama_dosen,
alamat_dosen));
·
Check
Untuk membatasi nilai
kolom, misalnya:
-
CREATE TABLE produk (kode_produk INTEGER
PRIMARY KEY, nama_produk VARCHAR(45), harga INTEGER, CHECK (harga <= 100000
AND kode_produk > 100));
Check di atas membatasi
bahwa harga harus maksimal Rp 100000, dan kode_produk harus di atas 100.
Penentuan
Referential Integrity
Contoh:
-
CREATE TABLE pemasok (kode_pemasok
INTEGER PRIMARY KEY, nama_pemasok VARCHAR(45), kode_produk INTEGER REFERENCES
produk ON DELETE CASCADE ON UPDATE CASCADE);
Untuk contoh di atas,
jika ada update atau delete di tabel utama, maka tabel kedua
secara otomatis disesuaikan.
Macam
action:
o
NO ACTION atau RESTRICT: update atau delete tidak dilakukan. Ini merupakan pilihan default.
o
CASCADE: nilai kolom di tabel kedua
disesuaikan dengan nilai kolom di tabel utama.
o
SET NULL: nilai kolom di tabel kedua
dijadikan NULL.
o
SET DEFAULT: nilai kolom di tabel kedua
dijadikan nilai DEFAULT (nilai DEFAULT harus ditentukan pada waktu pembuatan
tabel).
·
Autoincrement
Untuk fitur autoincrement, gunakan “serial”:
-
CREATE TABLE nasabah (id_nasabah SERIAL
PRIMARY KEY, nama_nasabah VARCHAR(45));
Untuk contoh di atas,
id_nasabah tidak perlu di-insert,
karena database secara otomatis akan menambahkannya secara urut. Kita cukup
hanya memasukkan nam_nasabah saja:
-
INSERT INTO nasabah (nama_nasabah)
VALUES (‘Ali Topan’);
Serial hanya bisa dari
1 sampai 232. Jika tidak cukup, gunakan bigserial yang bisa dari 1 sampai 264.
Penghapusan record tidak akan
mempengaruhi urutan untuk serial dan bigserial. Nilai untuk kolom yang menggunakan
serial/bigserial akan selalu bertambah 1, tidak akan pernah kembali mundur.
Misalnya:
-
DELETE FROM nasabah WHERE id_nasabah=1;
-
INSERT INTO nasabah (nama_nasabah)
VALUES (‘Ali Topan’);
-
Perhatikan id_nasabah: SELECT* FROM
nasabah;
C.
Alat
dan Bahan
1. Komputer
dengan sistem operasi Windows 7.
2. Program
aplikasi PostgreSQL 9.3
3. Modul
Praktikum Sistem Berkas dan Basis Data.
D.
Langkah
Kerja
1. Jalankan
pgAdmin III pada PostgreSQL 9.3, caranya dengan membuka Start > All Programs > PostgreSQL 9.3 > pgAdmin III.
2. Pada
tab object browser (sebelah kiri),
double klik pada PostgreSQL 9.3
(localhost:5432), kemudian klik kanan pada Databases (1)> New Database, beri nama pada kolom nama, karena
ingin membuat database bank, maka beri nama bank, kemudian klik OK.
3. Pada
tab properties, klik pada bank, lalu pilih ikon gambar puzzle
(warna kuning dan hijau) lalu pilih CREATE script.
4. Membuat
tabel nasabah, cabang_bank, rekening, dan
transaksi:
5. Membuat
tabel nasabah_has_rekening:
6. Untuk
mengecek hasil pembuatan tabel gunakan perintah \dt atau dengan select *from
table yang diinginkan
7. Selanjutnya,
memasukkan record-record ke dalam tabel yang telah dibuat dengan perintah
insert into.
Pada tabel rekening:
Pada tabel nasabah_has_rekening:
Pada tabel transaksi:
8. Melihat
hasil pada masing-masing tabel.
Pada tabel nasabah:
Pada tabel cabang_bank:
Pada tabel rekening:
Pada tabel nasabah_has_rekening:
Pada tabel transaksi:
E.
Analisa
Pada percobaan menggunakan PostgreSQL
9.3 dengan PSQL console perlu teliti, karena sepenuhnya berbasis teks. Jadi
untuk membuat, memasukan, dan menghapus data menggunakan perintah-perintah
tertentu yang telah dibakukan oleh SQL. Maka dalam percobaan menggunakan
PostgreSQL 9.3 harus dibutuhkan kemampuan menghafal yang baik serta kita juga
harus memahami setiap perintah yang diketikkan.
F.
Tugas
Implementasikan hasil rancangan
database yang menangani data kuliah pada tugas modul 3 ke dalam program pgAdmin
III. Masukkan beberapa record ke
setiap tabel dalam database yang telah dibuat. Print out hasil implemenatasi
rancangan tersebut dan analisa hasilnya.
Pada tabel mahasiswa:
Pada tabel dosen:
Pada tabel matakuliah:
Pada tabel ruang_kelas:
Pada tabel mahasiswa_has_mk:
Pada tabel mk_has_ruang:
Dari
implementasi database data-data kuliah untuk setiap relasi dari satu ke banyak
(1:n) akan ada atribut primary key dari tabel (dengan relasi satu) yang
ditambahkan ke tabel dengan relasi banyak. Misalnya untuk relasi dari dosen ke
mata_kuliah (1:n), pada tabel mata_kuliah akan ditambahkan primary key dari
dosen, yaitu nik.
Kemudian untuk relasi
dari banyak ke banyak (m:n), kita harus membuat tabel baru yang menghubungkan
dua tabel yang saling berelasi tadi. Misal, dari relasi mahasiswa ke
mata_kuliah (m:n), dibuat tabel baru dengan nama mahasiswa_has_mata_kuliah yang
berisikan atribut primary key dari kedua tabel (mahasiswa dan mata_kuliah)
yaitu nim dan kode_mk.