Pemodelan Basis Data Entity-Relationship Diagram (contoh kasus 2) Yusuf Priyandari @Agustus 2010 Tahap Pengembangan Basis Data Model 1 1 2 3 Topics discussed 4 6 2 5 7 pri.and.ari@2010 Database Design Methodology Topics discussed 3 pri.and.ari@2010 Transformasi ERD ke Dalam Tabel Tahapan ini adalah tahapan transformasi diagram ER yang telah dibuat ke dalam tabel basis data dan memeriksa struktur tabel tersebut. Tujuan utama adalah menyusun deskripsi tabel-tabel kemudian memeriksa normalisasi tabel-tabel tersebut. 4 4 pri.and.ari@2010 Studi Kasus THE STAYHOME VIDEO RENTALS 5 pri.and.ari@2010 1. Menyusun Tabel-Tabel 1.1 Tabel-Tabel dari Entitas Untuk setiap entitas yang telah diidentifikasi dalam model ER, susunlah/dokumentasikan tabel-tabel. Untuk atribut komposit, simpanlah atribut sederhananya (penyusunnya). Misal, alamat disimpan dalam bentuk : namajalan, kota, negara bagian dan kodepos. Bila mungkin, identifikasi field yang dapat menjadi primary key. Tabel berikut menyajikan struktur awal tabel-tabel dari entitas yang telah diidentifikasi sebelumnya. 6 pri.and.ari@2010 1. Menyusun Tabel-Tabel 1.2 Tabel-Tabel dari Relasi Relasi antara satu entitas dengan entitas lainnya direpresentasikan melalui mekanisme primary key/foreign key. Identifikasi terlebih dahulu entitas “parent” dan “child”. Identifikasi tersebut perlu mempertimbangkan jenis relasi antar entitas, yakni relasi: a. b. c. d. e. f. g. 7 One-to-many (1:*) binary relationship One-to-many (1:*) recursive relationship One-to-one (1:1) binary relationship One-to-one (1:1) recursive relationship Many-to-many (*:*) binary relationship Complex relationship Multi-valued attributes. pri.and.ari@2010 1. Menyusun Tabel-Tabel 1.2 Tabel-Tabel dari Relasi a. One-to-many (1:*) binary relationship 8 Copy primary key dari tabel “parent” ke tabel “child” sebagai foreign key. pri.and.ari@2010 1. Menyusun Tabel-Tabel 1.2 Tabel-Tabel dari Relasi b. One-to-many (1:*) recursive relationship 9 Buatlah sebuah field baru yang menyimpan primary key dari “parent” ke “child” sebagai foreign key. pri.and.ari@2010 1. Menyusun Tabel-Tabel 1.2 Tabel-Tabel dari Relasi c. One-to-one (1:1) binary relationship Transformasi relasi ini lebih komplek dari sebelumnya karena perlu mempertimbangkan cardinalitas relasi. Ada 3 bentuk cardinalitas yang mungkin terjadi pada relasi 1:1 tersebut, yakni: 1) Relasi bersifat mandatory pada kedua entitas relasi 1:1 2) Relasi bersifat mandatory pada salah satu entitas relasi 1:1 3) Relasi bersifat opsional pada kedua sisi entitas relasi 1:1 10 pri.and.ari@2010 1. Menyusun Tabel-Tabel 1.2 Tabel-Tabel dari Relasi c. One-to-one (1:1) binary relationship 1). Relasi bersifat mandatory pada kedua entitas relasi 1:1 11 Gabungkan kedua entitas ke dalam sebuah tabel baru dan pilih salah satu primary key dari kedua tabel asal sebagai primary key tabel baru, dan primary key asal lainnya sebagai alternate key. pri.and.ari@2010 1. Menyusun Tabel-Tabel 1.2 Tabel-Tabel dari Relasi c. One-to-one (1:1) binary relationship 2). Relasi bersifat mandatory pada salah satu entitas relasi 1:1 12 Identifikasi entitas “parent” dan “child”, yakni entitas yang memiliki cardinalitas opsional dijadikan sebagai tabel “parent”. Copy primary key dari tabel “parent” ke tabel “child” sebagai foreign key. pri.and.ari@2010 1. Menyusun Tabel-Tabel 1.2 Tabel-Tabel dari Relasi c. One-to-one (1:1) binary relationship 2). Relasi bersifat mandatory pada salah satu entitas relasi 1:1 13 . pri.and.ari@2010 1. Menyusun Tabel-Tabel 1.2 Tabel-Tabel dari Relasi c. One-to-one (1:1) binary relationship 3). Relasi bersifat opsional pada kedua entitas relasi 1:1 14 Penentuan entitas “parent” dan “child” pada kondisi ini sebenarnya bebas, tergantung tingkat pemahaman terhadap realitas di lapangan pada relasi kedua entitas tersebut. Copy primary key dari tabel “parent” ke tabel “child” sebagai foreign key atau sebaliknya (ini jk sudah ada informasi tambahan). pri.and.ari@2010 1. Menyusun Tabel-Tabel 1.2 Tabel-Tabel dari Relasi d. One-to-one (1:1) recursive relationship Sama dengan one-to-one (1:1) binary relationship. Apabila cardinality berbentuk mandatory pada kedua entitas, maka representasikan relasi sebagai sebuah tabel baru dengan mengkopi primary key dari kedua tabel. Apabila cardinality berbentuk mandatory pada salah satu entitas, maka: Membuat sebuah field baru di tabel “child” dengan mengkopi primary key dari tabel “parent”, atau Membuat sebuah tabel baru untuk menyajikan relasi tersebut, dimana tabel baru itu memiliki dua buah kolom yang keduanya berisi primary key dari kedua tabel asal 15 pri.and.ari@2010 1. Menyusun Tabel-Tabel 1.2 Tabel-Tabel dari Relasi e. Many-to-many (*:*) binary relationship 16 Untuk setiap relasi biner many-tomany (*:*) buatlah sebuah tabel baru untuk menyajikan relasi kedua entitas. Tabel baru itu dikenal sebagai tabel transaksional. Copy primary key dari kedua entitas ke dalam tabel baru yang bertindak sebagai foreign key. pri.and.ari@2010 1. Menyusun Tabel-Tabel 1.2 Tabel-Tabel dari Relasi f. Complex relationship 17 Buatlah sebuah tabel baru untuk menyajikan relasi antar entitas. Copy primary key dari entitas-entitas ke dalam tabel baru yang bertindak sebagai foreign key. pri.and.ari@2010 1. Menyusun Tabel-Tabel 1.2 Tabel-Tabel dari Relasi f. Complex relationship 18 Buatlah sebuah tabel baru untuk menyajikan relasi antar entitas. Copy primary key dari entitas-entitas ke dalam tabel baru yang bertindak sebagai foreign key. pri.and.ari@2010 1. Menyusun Tabel-Tabel 1.2 Tabel-Tabel dari Relasi g. Multi-valued Atribute 19 Aturannya sama dengan relasi 1:*. Pisahkan atribut bernilai jamak (multi atribut) tersebut ke dalam sebuah tabel baru. Copy primary key dari entitas “parent” ke dalam tabel baru yang dibentuk. pri.and.ari@2010 1. Menyusun Tabel-Tabel Hasil pembuatan tabel disajikan sebagai berikut. 20 pri.and.ari@2010 2. Periksa Struktur Tabel (Normalisasi) Periksa apakah setiap tabel yang telah dibentuk telah memenuhi aturan normalisasi, minimum memenuhi bentul 3NF. 21 pri.and.ari@2010 3. Periksa Kemampuan Tabel Mendukung Transaksi 22 pri.and.ari@2010 3. Periksa Kemampuan Tabel Mendukung Transaksi 23 pri.and.ari@2010 3. Periksa Kemampuan Tabel Mendukung Transaksi 24 pri.and.ari@2010 3. Periksa Kemampuan Tabel Mendukung Transaksi 25 pri.and.ari@2010 3. Periksa Kemampuan Tabel Mendukung Transaksi 26 pri.and.ari@2010 4. Periksa Business Rule a. Data yang diperlukan Periksa kembali dalam kamus data, data mana saja yang boleh bernilai null dan data mana yang tidak boleh. Apakah data2 tersedia untuk pengujian. b. Batasan domain fields c. Periksa kembali domain tiap field, misal untuk posisi jabatan, apakah benar hanya berupa Manager, Supervisor, atau Staff. Periksa kembali tipe data yang akan digunakan. Integritas entitas Periksa kembali apakah field yang dijadikan primary key selalu bernilai not null. Hal ini untuk menjamin adanya kesatuan relasi dalam basis data. d. Cardinalitas Periksa kembali cardinalitas hubungan antar tabel. e. Integritas referensial 27 … pri.and.ari@2010 4. Periksa Business Rule e. Integritas referensial Integritas referensial adalah jika suatu foreign key berisi nilai, maka nilai tersebut harus benar-benar merujuk pada record di tabel induk. Dua hal yang harus dicermati: 1. Apakah null diperkenankan untuk suatu foreign key ? Sample: noCabang bolehkan bernilai null pada tabel Staff ? 2. Bagaimana menjamin adanya integritas referensial Apa kondisi yang diperbolehka pada suatu foreign key apabila terjadi proses update, atau deleted terhadap tabel induk (primary key) ?. Ada sejumlah aturan yang dapat dipakai dalam integritas referensial (on Update / Delete ) : 1. 2. 3. 4. 5. 28 NO ACTION CASCADE SET NULL SET DEFAULT NO CHECK pri.and.ari@2010 4. Periksa Business Rule e. Integritas referensial Ada sejumlah aturan yang dapat dipakai dalam integritas referensial (on Update / Delete ) : 1. 2. 3. 4. 5. 29 NO ACTION tidak boleh menghapus/update sebuah record di tabel induk apabila record tersebut ada dipakai oleh tabel anak sebagai FK. CASCADE Hapus secara otomatis data FK di tabel anak apabila sebuah record di tabel induk di hapus. SET NULL Apabila record di tabel induk dihapus, maka data FK di tabel anak akan di set bernilai Null. SET DEFAULT Apabila record di tabel induk dihapus, maka data FK di tabel anak akan di set menjadi nilai default. NO CHECK Apabila record di tabel induk dihapus, maka tidak dilakukan pengecekan terhadap tabel anak yang menggunakan record tersebut.. pri.and.ari@2010 4. Periksa Business Rule e. Integritas referensial 30 pri.and.ari@2010 5. Review logikal basis data dengan Pengguna 31 Komunikasikan basis data yang telah dirancang dengan pengguna. pri.and.ari@2010 Diskusi 32 32 pri.and.ari@2010 Tugas Mandiri Baca buku [1] chapter 11 33 33 pri.and.ari@2010