Basis Data - WordPress.com

advertisement
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
Download