Basis Data I
Danny Kriestanto, S.Kom., M.Eng
Perancangan SBD dengan Model Relasional
•
Normalisasi 1
•
Normalisasi 2
•
Normalisasi 3
•
BCNF
Normalisasi (Ramon, 2004)
•Merupakan proses langkah demi langkah yang dapat reversibel (dapat dibalik) yang menjadikan sebuah himpunan yang diketahui dari suatu relasi digantikan oleh kumpulan berurutan dari relasi-relasi yang memiliki suatu struktur yang lebih sederhana dan biasa.
•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.
Normalisasi (Hoffer,2002)
•
Sebuah proses normal untuk
menentukan atribut mana yang
harus dikelompokkan
bersama-sama di dalam sebuah relasi.
Tujuan Normalisasi
•Normalisasi ditujukan untuk
menciptakan relasi yang berstruktur
baik, dengan memenuhi kondisi
(Kadir,2009):
•
Mengandung redundansi sesedikit
mungkin
•
Memungkinkan baris-baris dalam relasi
disisipkan, dimodifikasi, dan dihapus tanpa
menimbulkan kesalahan atau
ketidakkonsistenan
Redundansi
•
Data yang disimpan berkali-kali
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.
•Perhatikan tiap-tiap tahap normalisasi!
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
Anomali Data
•
Anomali Penyisipan (INSERT)
•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
Anomali Data
Kode_Barang Nama_Barang Harga_Jual Kode_Pemasok
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
BARANG
Kode_Pemasok Nama_Pemasok Kota
P11 PT Tunas Jaya Surabaya P22 PT Sumber Jakarta P33 PT Mekar Semarang P44 PT Holic Semarang
PEMASOK
Dependensi
•Dependensi sering digunakan dalam
normalisasi.
•Ada beberapa jenis:
•
Dependensi fungsional
•
Dependensi sepenuhnya
•
Dependensi parsial
•
Dependensi total
•
Dependensi transitif
Dependensi Fungsional
•Sering kali cukup disebut dependensi
saja.
•Merupakan kekangan antara dua buah
atribut atau dua buah himpunan atribut.
•Contoh: R(A, B, …)
•B memiliki dependensi fungsional
terhadap A apabila nilai A memiliki
hubungan satu nilai dengan B
Dependensi Fungsional
•Notasi: A
B
•Dapat dibaca sebagai:
•
A panah B,
•
A menentukan B, atau
•
B tergantung secara fungsional pada A
Item di sebelah kiri disebut
penentu/determinan, sebelah kanan
disebut dependen (“yang bergantung”)
Dependensi Fungsional
•Contoh kasus: PEMASOK_BARANG
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
Dependensi Fungsional
Berdasarkan tabel tersebut, diperoleh:
•Kode Nama_Brg
•KodeHarga
•Kode Kd_Pemasok
•Kode Nm_Pemasok
•Kd_PemasokNm_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
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
Dependensi Fungsional
•Perhatikan bagian ini:
•Kode Nama_Brg •KodeHarga •Kode Kd_Pemasok
•Kode Nm_pemasok
•Kd_PemasokNm_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
•Sebuah atribut bisa tergantung lebih dari satu atribut. Contoh dalam kasus ini:
{No_Dosen, Strata} Lulus_Thn
No_Dosen Nama_Dosen Jns_Klmn Strata Lulus_Thn
D41 Lintang Pria S1 1987 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
Dependensi Fungsional
{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
Dependensi Sepenuhnya
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
•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 Parsial
•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 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_PemasokKd_Pemasok
•Kd_PemasokNm_Pemasok
•Dapat ditulis : Kd_Pemasok ↔ Nm_Pemasok
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_PemasokNm_Pemasok
•Kode Nm_Pemasok
Jadi ketiga dependensi ini sebenarnya dapat ditulis:
1. 1stNormal Form
•Atribut dengan nilai ganda (atau kelompok yang berulang-ulang) dihilangkan, menyisakan nilai tunggal (atau juga
null) pada setiap cell.
2. 2ndNormal Form
• Dependensi parsial dihilangkan
3. 3rdNormal Form
•Dependensi transitif dihilangkan
4. Boyce/Codd Normal Form
•Semua anomali yang tersisa dari dependensi fungsional dihilangkan
5. 4thNormal Form
•Dependensi nilai ganda dihilangkan 6. 5thNormal Form
•Anomali yang tersisa dihilangkan
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 Tidak Ternormalisasi
No_peg Nama_peg No_klien Nama_klien
E37 Nina K05 Martini
K08 Anton
K02 Sarmini
E38 Tono K04 Eka
K10 Andin
K24 Buyung
E39 Hadi K06 Mitha
K24 Buyung
K90 Indah
Data 1NF
No_peg Nama_peg No_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
2NF (Second Normal Form)
•
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.
Menghilangkan Dependensi Parsial
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
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 KLIEN No_peg Nama_peg E37 Nina E37 Nina E37 Nina E38 Tono E38 Tono E38 Tono E39 Hadi E39 Hadi E39 Hadi Id_klien Nama_klien K05 Martini K08 Anton K02 Sarmini K04 Eka K10 Andin K24 Buyung K06 Mitha K24 Buyung K90 Indah
Menghilangkan Dependensi Parsial
PEGAWAI_KLIENTips: pisahkan entitas objek dengan semua atribut yang melekat padanya dan buat tabel penghubung No_peg Id_klien E37 K05 E37 K08 E37 K02 E38 K04 E38 K10 E38 K24 E39 K06 E39 K24 E39 K90
3NF (Third Normal Form)
•
Syarat dari bentuk normal ketiga adalah:
•Sudah berada dalam bentuk normal kedua
•Tidak ada dependensi transitif (baca lagi pengertian tentang dependensi transitif)