14/05/2016
Perancangan SBD dengan Model Relasional
Basis Data I Danny Kriestanto, S.Kom., M.Eng
•Normalisasi 1 •Normalisasi 2 •Normalisasi 3 •BCNF
Normalisasi (Ramon, 2004)
Normalisasi (Hoffer,2002)
• Merupakan proses langkah demi langkah yang dapat reversibel (dapat dibalik) yang menjadikan sebuah himpunan yang diketahui dari suatu relasi digantikan oleh kumpulan berurutan dari relasirelasi yang memiliki suatu struktur yang lebih sederhana dan biasa.
•Sebuah proses normal untuk menentukan atribut mana yang harus dikelompokkan bersamasama di dalam sebuah relasi.
• Setiap langkah dikenal sebagai suatu bentuk normal, mendefinisikan sebuah himpunan kriteria. • Karena reversibel, maka himpunan asli dari relasi dapat dikembalikan tanpa ada informasi yang hilang.
Tujuan Normalisasi
Redundansi
•Normalisasi ditujukan untuk menciptakan relasi yang berstruktur baik, dengan memenuhi kondisi (Kadir,2009):
•Data yang disimpan berkali-kali •Nama lainnya: duplikasi data
•Mengandung redundansi sesedikit mungkin •Memungkinkan baris-baris dalam relasi disisipkan, dimodifikasi, dan dihapus tanpa menimbulkan kesalahan atau ketidakkonsistenan
1
14/05/2016
Anomali Data • Anomali data akan terjadi pada proses insertion, deletion, dan update; yakni proses INSERT, DELETE, dan UPDATE. • Namun umumnya hanya ada dua, yakni: UPDATE dan INSERT/DELETE karena yang mengalami anomali DELETE pasti juga akan mengalami anomali INSERT • Dibutuhkan analisis tupel pada tabel untuk mengetahui apakah sebuah field/kolom akan mengalami anomali/kehilangan data ataukah tidak.
Anomali Data • Contoh kasus: PEMASOK_BARANG Kode
Nama_Brg
Harga
Kd_Pemasok
Nm_Pemasok
Kota
T-001
TV SN 14”
600000
P22
PT Sumber
Jakarta
T-002
TV SN 21”
950000
P22
PT Sumber
Jakarta
T-003
TV SS 14”
450000
P11
PT Tunas Jaya
Surabaya
T-004
TV M 34”
4500000
P33
PT Mekar
Semarang
T-005
TV S 24”
1200000
P44
PT Holic
Semarang
• Perhatikan tiap-tiap tahap normalisasi!
Anomali Data
Anomali Data BARANG
•Anomali Penyisipan (INSERT)
Kode_Barang
Nama_Barang
T-001
TV SN 14”
600000 P22
T-002
TV SN 21”
950000 P11
T-003
TV SS 14”
450000 P22
T-004
TV M 34”
4500000 P33
T-005
TV S 12”
1200000 P44
• Kunci ada yang bernilai null • Ada data yang perlu diisikan ulang (redundansi tinggi)
•Anomali Pengubahan (UPDATE) • Apabila ada satu sel yang berubah, tupel seluruh tabel dengan data yang mirip juga harus diubah (kerancuan data). Contoh: ada perusahaan yang pindah alamat
•Anomali Penghapusan (DELETE) • Saat data dihapus ada data lain yang ikut hilang
Harga_Jual
Kode_Pemasok
PEMASOK Kode_Pemasok
Nama_Pemasok
Kota
P11
PT Tunas Jaya
Surabaya
P22
PT Sumber
Jakarta
P33
PT Mekar
Semarang
P44
PT Holic
Semarang
Dependensi
Dependensi Fungsional
•Dependensi sering digunakan dalam normalisasi. •Ada beberapa jenis:
•Sering kali cukup disebut dependensi saja. •Merupakan kekangan antara dua buah atribut atau dua buah himpunan atribut.
•Dependensi fungsional •Dependensi sepenuhnya •Dependensi parsial •Dependensi total •Dependensi transitif
•Contoh: R(A, B, …) •B memiliki dependensi fungsional terhadap A apabila nilai A memiliki hubungan satu nilai dengan B
2
14/05/2016
Dependensi Fungsional
Dependensi Fungsional
•Notasi: AB
• Contoh kasus: PEMASOK_BARANG
•Dapat dibaca sebagai: •A panah B, •A menentukan B, atau •B tergantung secara fungsional pada A
Kode
Nama_Brg
Harga
Kd_Pemasok
Nm_Pemasok
Kota
T-001
TV SN 14”
600.000
P22
PT Sumber
Jakarta
T-002
TV SN 21”
950.000
P22
PT Sumber
Jakarta
T-003
TV SS 14”
450.000
P11
PT Tunas Jaya
Surabaya
T-004
TV M 34”
4.500.000
P33
PT Mekar
Semarang
T-005
TV S 24”
1.200.000
P44
PT Holic
Semarang
Item di sebelah kiri disebut penentu/determinan, sebelah kanan disebut dependen (“yang bergantung”)
Dependensi Fungsional Berdasarkan tabel tersebut, diperoleh: • Kode Nama_Brg • Kode Harga • Kode Kd_Pemasok • Kode Nm_Pemasok • Kd_Pemasok Nm_Pemasok
Dependensi Fungsional Catatan: Bagaimana kalau dibalik? Harga tidak menentukan barangnya, (karena banyak barang mempunyai harga yang sama); tapi satu jenis barang punya satu harga. •Nama_Brg Kode •Nm_Pemasok Kode_Pemasok
Setiap Kode pasti berhubungan dengan satu Nama_Brg begitu juga antara Kode dan Harga. Begitu seterusnya. Misalnya: T-001 hanya cocok dengan 1 barang, yaitu TV SN 14”
Dependensi Fungsional • Perhatikan bagian ini: • Kode Nama_Brg • Kode Harga • Kode Kd_Pemasok • Kode Nm_pemasok • Kd_Pemasok Nm_Pemasok Ternyata, Kode menentukan lebih dari satu atribut. Notasinya dapat diganti sebagai berikut: • Kode {Nama_Brg, Harga, Kd_Pemasok} • Kode Nm_Pemasok (yang ini bagaimana?)
Dependensi Fungsional • Contoh lain: DOSEN_PENDIDIKAN No_Dosen
Nama_Dosen
Jns_Klmn
D41
Lintang
Pria
S1
Strata
1987
Lulus_Thn
D41
Lintang
Pria
S2
1990
D42
Murni
Wanita
S1
1988
D42
Murni
Wanita
S2
1990
D42
Murni
Wanita
S3
1999
D43
Rio
Pria
S1
1994
• Sebuah atribut bisa tergantung lebih dari satu atribut. Contoh dalam kasus ini: {No_Dosen, Strata} Lulus_Thn
3
14/05/2016
Dependensi Fungsional
Dependensi Sepenuhnya
{No_Dosen, Strata} Lulus_Thn •No_Dosen saja tidak menentukan Lulus_Thn, karena untuk D41 saja ada 2 tahun lulus. •Tapi pasangan No_Dosen dan Strata hanya memiliki satu nilai tahun lulus. •Contohnya: {D42, S3} 1999
Dikatakan memiliki dependensi sepenuhnya jika memiliki dua syarat berikut: 1. B mempunyai dependensi fungsional terhadap A 2. B tidak mempunyai dependensi terhadap bagian dari A
Dependensi Sepenuhnya
Dependensi Parsial
• Lulus_Thn tidak bergantung pada No_Dosen saja karena: 1. Untuk dosen D41 memiliki 2 nilai Lulus_Thn yaitu: 1987 dan 1990. 2. Strata S1 memiliki 3 nilai, yakni: 1987, 1988, 1994 • Dengan demikian, Lulus_Thn bergantung sepenuhnya terhadap gabungan No_Dosen dan Strata, dan tidak bergantung pada bagian dari {No_Dosen, Strata}. • Oleh karena itu Lulus_Thn dikatakan memiliki dependensi sepenuhnya terhadap {No_Dosen, Strata}
Dependensi Total • Dikatakan dependensi total jika memenuhi syarat berikut: 1. B memiliki dependensi fungsional terhadap A 2. A mempunyai dependensi fungsional terhadap B • Notasinya : A ↔ B Seperti pada contoh : • Nm_Pemasok Kd_Pemasok • Kd_Pemasok Nm_Pemasok • Dapat ditulis : Kd_Pemasok ↔ Nm_Pemasok
• Syaratnya adalah sebagai berikut: 1. B adalah atribut bukan kunci primer dan A adalah kunci primer 2. B memiliki dependensi terhadap bagian dari A Contoh: Pada tabel DOSEN_PENDIDIKAN memiliki kunci primer {No_Dosen, Strata}. Atribut Jns_Klmn bergantung pada No_Dosen namun tidak pada Strata, dikatakan memiliki dependensi parsial.
Dependensi Transitif • Dikatakan memiliki dependensi transitif jika: 1. C memiliki dependensi fungsional terhadap B 2. B memiliki dependensi fungsional terhadap A
• Notasinya : A B C Pada contoh di depan: • Kode Kd_Pemasok • Kd_Pemasok Nm_Pemasok • Kode Nm_Pemasok Jadi ketiga dependensi ini sebenarnya dapat ditulis: • Kode Kd_Pemasok Nm_Pemasok
4
14/05/2016
Tahapan Normalisasi 1. 1st Normal Form • Atribut dengan nilai ganda (atau kelompok yang berulangulang) dihilangkan, menyisakan nilai tunggal (atau juga null) pada setiap cell. 2. 2nd Normal Form • Dependensi parsial dihilangkan 3. 3rd Normal Form • Dependensi transitif dihilangkan 4. Boyce/Codd Normal Form • Semua anomali yang tersisa dari dependensi fungsional dihilangkan 5. 4th Normal Form • Dependensi nilai ganda dihilangkan 6. 5th Normal Form • Anomali yang tersisa dihilangkan
Data Tidak Ternormalisasi No_peg Nama_peg E37 Nina
E38
Tono
E39
Hadi
No_klien K05 K08 K02 K04 K10 K24 K06 K24 K90
1NF (First Normal Form) •Sebuah relasi sudah berada di 1NF jika tidak ada satu pun atribut dengan nilai ganda. •Jika Tabel dikonversi dari ERD, otomatis sudah tidak ada nilai ganda (lihat cara konversi data dengan nilai ganda)
Data 1NF Nama_klien Martini Anton Sarmini Eka Andin Buyung Mitha Buyung Indah
2NF (Second Normal Form)
No_peg E37 E37 E37 E38 E38 E38 E39 E39 E39
Nama_peg Nina Nina Nina Tono Tono Tono Hadi Hadi Hadi
No_klien K05 K08 K02 K04 K10 K24 K06 K24 K90
Nama_klien Martini Anton Sarmini Eka Andin Buyung Mitha Buyung Indah
Menghilangkan Dependensi Parsial
•Syarat dari 2NF adalah: • Sudah berada dalam bentuk 1NF • Setiap atribut bukan kunci primer telah bergantung sepenuhnya pada kunci primer.
Hilangkan Dependensi Parsial, langkahnya: • Ubahlah tiap dependensi parsial menjadi relasi, dengan kunci primer sebagai penentunya (baca lagi pengertian dependensi parsial) • Ubah dependensi yang terkait langsung dengan kunci primer sebagai relasi tersendiri dan kunci primernya adalah kunci primer dalam relasi semula.
Diandaikan terdapat sebuah relasi R dengan: •R(A,B,C,D) •Kunci Primer (A,B) •AD Maka relasi R dapat digantikan dengan dua buah relasi R1 dan R2 sebagai berikut: •R1(A,D) dengan Primary Key-nya (A) •R2(A,B,C) dengan Primary Key-nya (A,B) dan Foreign Key-nya (A) Referensi R1
5
14/05/2016
Menghilangkan Dependensi Parsial
Sehingga contoh kasus pada slide 27 dapat diubah menjadi: •PEGAWAI(No_peg, Nama_peg) •KLIEN(Id_klien, Nama_klien) •PEGAWAI_KLIEN(No_Peg, Id_Klien)
Menghilangkan Dependensi Parsial PEGAWAI No_peg
KLIEN Nama_peg
Id_klien
Nama_klien
E37
Nina
K05
Martini
E37
Nina
K08
Anton
E37
Nina
K02
Sarmini
E38
Tono
K04
Eka
E38
Tono
K10
Andin
E38
Tono
K24
Buyung
E39
Hadi
K06
Mitha
E39
Hadi
K24
Buyung
E39
Hadi
K90
Indah
Menghilangkan Dependensi Parsial
3NF (Third Normal Form)
PEGAWAI_KLIEN
•Syarat dari bentuk normal ketiga adalah:
No_peg E37 E37 E37 E38 E38 E38 E39 E39 E39
Id_klien K05 K08 K02 K04 K10 K24 K06 K24 K90
Tips: pisahkan entitas objek dengan semua atribut yang melekat padanya dan buat tabel penghubung
• Sudah berada dalam bentuk normal kedua • Tidak ada dependensi transitif (baca lagi pengertian tentang dependensi transitif)
Mudahnya, dependensi transitif di dalam sebuah relasi adalah sebuah dependensi fungsional di antara dua atau lebih atribut yang bukan kunci primer
Menghilangkan Dependensi Transitif
Menghilangkan Dependensi Transitif
Bila terdapat sebuah relasi R •R(A, B, C) dengan kunci primer (A) •B C Maka relasi R dapat digantikan dengan dua buah relasi R1 dan R2 sebagai berikut: •R1(B, C) dengan kunci primer (B) •R2(A, B) dengan kunci primer (A) dan kunci tamu (B) referensi R1
•Jika diaplikasikan untuk tabel PEMASOK_BARANG pada slide 14, dapat dihasilkan: •PEMASOK(Kd_Pemasok, Nm_Pemasok, Kota) •BARANG(Kode, Nama_Brg, Harga, Kd_Pemasok)
6
14/05/2016
BCNF (Boyce-Codd Normal Form)
•Suatu relasi sudah dalam BCNF bila semua dependensi/ketergantungan dalam relasi tersebut hanya terhadap kunci. •BCNF disebut juga sebagai 3,5NF dan jarang terjadi karena pada umumnya 3NF sudah cukup.
7