MODUL 6
IMPLEMENTASI TABEL-TABEL BASIS DATA
(2)
(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. Landasan
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:
-
www.postgresql.org
-
www.postgresql.org/docs
-
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 Keyyang 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
VALUES (,
...);
2. Untuk
memasukkan data pada kolom-kolom tertentu:
INSERT INTO
(, ...)
VALUES (,
...);
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 tableadalah
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:
• NO ACTION
atau RESTRICT: update atau delete tidak dilakukan. Ini merupakan pilihan
default.
• CASCADE:
nilai kolom di tabel kedua disesuaikan dengan nilai kolom di tabel utama.
• SET NULL:
nilai kolom di tabel kedua dijadikan NULL.
• 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-langkah Praktikum
1. Jalankan pgAdmin III
2. Double klik pada Postgre SQL lalu masukan
password
3. Membuat database baru dengan mengklik
database pilih new database, isi nama database
kemudian klik OK
4. Membuat
Table nasabah, cabang_bank, rekening, transaksi, nasabah_has_rekening. Berikut
adalah screenshot cara membuat table nasabah, table yang lain dengan cara yang
sama sesuai perintah yang ada di modul.
5. Melihat
hasil table yang sudah dibuat dengan menggunakan perintah \dt
6. Mengisikan
record kedalam table yang sudah dibuat. Berikut contoh mengisikan record
kedalam table nasabah. pengisian record kedalam table yang lain dengan cara
yang sama.
7. Melihat daftar record yang sudah ditambahkan
pada table dengan perintah select *from nasabah
Analisa :
Dalam pembuatan database harus mengetahui perintah apa yang harus digunakan
dalam membuat table, mengisikan record kedalam table, menghapus table dsb dan
tahu tipe data apa yang digunaka. Dalam pengisian record yang perlu
diperhatikan adalah urutan atribut yang ada pada suatu table, karena apabila
tidak sesuai urutan maka record yang diisikan pun akan terbalik tidak sesuai
dengan atribut table. Apabila ingin menambahkan record ke beberapa atribut
saja, tinggal tulis atibut apa yang ingin diisi kemudian baru nilainya. Apabila
semua table akan diisi semua maka tidak perlu menulis lagi nama atribut
langsung menulis value atau nilai yang akan dimasukan, dengan sendirinya value
akan urut sesuai urutan atribut dalam table
F. Tugas
Implementasikan
hasil rancangan database yang menangani data kuliah pada tugas modul 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.
1. Membuat
database dengan nama kuliah
2. Membuat
Table mahasiswa, dosen, mata_kuliah, dan ruang beserta mengisi field atau
atribut
3. Melihat
Table yang sudah dibuat melalui PSQL Console
4. Mengisi
record ke dalam table mahasiswa, dosen, mata_kuliah dan ruang ke masing-masing
atribut
5. Melihat
daftar record yang telah dimasukan
a. Table Mahasiswa
b. Table Dosen
c. Table Mata_kuliah
d. Table Ruang
e. Table Mahasiswa_has_mata_kuliah
Analisa :
Pada tabel mata_kuliah ada key tamu atau Foreign Key yakni dosenFK yang berasal
dari table dosen. Hal ini terjadi karena adanya relasi One to Many(1:n),
sehingga primary key dari entitas dosen akan masuk ke table mata_kuliah.
Sedangkan table mahasiswa_has_mata_kuliah akibat dari relasi Many to Many(m:n)
antara mahasiswa dengan mata_kuliah. Masing-massing primary key dari kedua
table akan menjadi atribut baru dari table mahasiswa_has_mata_kuliah.
Tidak ada komentar:
Posting Komentar