Normalisasi Basis Data Normalisasi adalah proses pembentukan relasi
Normalisasi Basis Data
�Normalisasi adalah proses pembentukan relasi basis data kedalam bentuk normal, sehingga sebagian besar ambiguity bisa dihilangkan. �Bentu normal adalah aturan-aturan yang harus dipenuhi oleh relasi-relasi dalam basis data. Normalisasi
�Tahap Normalisasi dimulai dari tahap paling ringan (1 NF) hingga paling ketat (5 NF) �Biasanya hanya sampai pada tingkat 3 NF atau BCNF karena sudah cukup memadai untuk menghasilkan tabel-tabel yang berkualitas baik.
Jika kriteria ketiga (BCNF) tidak dapat terpenuhi, maka paling tidak tabel tersebut tidak melanggar Bentuk Normal tahap ketiga (3 rd Normal Form / 3 NF). Normalisasi
Tabel Universal (Universal / Star Table) sebuah tabel yang merangkum semua kelompok data yang saling berhubungan, bukan merupakan tabel yang baik. Misalnya: Tabel Universal
Tabel Universal
1. 2. 3. 4. 5. 6. Bentuk Normal Tahap Pertama (1 st Normal Form / 1 NF) Bentuk Normal Tahap Kedua (2 nd Normal Form / 2 NF) Bentuk Normal Tahap (3 rd Normal Form / 3 NF) Boyce-Code Normal Form (BCNF) Bentuk Normal Tahap (4 th Normal Form / 4 NF) Bentuk Normal Tahap (5 th Normal Form / 5 NF) Bentuk-bentuk Normal
�Bentuk normal 1 NF terpenuhi jika sebuah tabel tidak memiliki atribut bernilai banyak (multivalued attribute), atribut composite. �Setiap atribut dalam tabel tersebut harus bernilai atomic (tidak dapat dibagi-bagi lagi) Bentuk Normal Tahap Pertama (1 st Normal Form / 1 NF)
Contoh 1 Misal data mahasiswa sbb: Atau: Tabel-tabel di atas tidak memenuhi syarat 1 NF
Contoh 1 Didekomposisi menjadi: Ø Tabel Mahasiswa Ø Tabel Hobi
Contoh 2 (composite) Jadwal. Kuliah Kodekul Nama. Kul Dosen Kelas Jadwal Dimana nilai pada atribut jadwal berisi gabungan antara Hari dan Jam. Ø Jika asumsi hari dan jam memegang peranan penting dalam sistem basis data, maka atribut Jadwal perlu dipisah sehingga menjadi Jadwal. Hari dan Jadwal. Jam sbb: Ø Jadwal. Kuliah Kodekul Nama. Kul Dosen Kelas Jadwal. Hari Jadwal. Jam
�Bentuk normal 2 NF terpenuhi dalam sebuah tabel jika telah memenuhi bentuk 1 NF �Sebuah tabel tidak memenuhi 2 NF, jika ada atribut yang ketergantungannya (Functional Dependency) hanya tergantung pada sebagian dari primary key �Jika terdapat atribut yang tidak memiliki ketergantungan terhadap primary key, maka atribut tersebut harus dipindah atau dihilangkan Bentuk Normal Tahap Kedua (2 nd Normal Form)
Contoh Tabel berikut memenuhi 1 NF tapi tidak termasuk 2 NF: Mhs_nrp Ø mhs_nama mhs_alamat mk_nama mk_sks nihuruf Tidak memenuhi 2 NF, karena {Mhs_nrp, mk_kode} yang dianggap sebagai primary key sedangkan: {Mhs_nrp, mk_kode} {Mhs_nrp, mk_kode} Ø mk_kode mhs_nama mhs_alamat mk_nama mk_sks nihuruf Tabel di atas perlu didekomposisi menjadi beberapa tabel yang memenuhi syarat 2 NF
Functional dependencynya sbb: {Mhs_nrp, mk_kode} nihuruf Mhs_nrp {mhs_nama, mhs_alamat} Mk_kode {mk_nama, mk_sks} fd 1 fd 2 fd 3 (fd 1) (fd 2) (fd 3) (mhs_nrp, mk_kode, nihuruf) Tabel Nilai (Mhs_nrp, mhs_nama, mhs_alamat) Tabel Mahasiswa (mk_kode, mk_nama, mk_sks) Tabel Mata. Kuliah Contoh
�Bentuk normal 3 NF terpenuhi jika telah memenuhi bentuk 2 NF, dan jika tidak ada atribut non primary key yang memiliki ketergantungan terhadap atribut non primary key yang lainnya. Bentuk Normal Tahap Ketiga (3 rd Normal Form /3 NF)
Contoh Tabel berikut memenuhi 2 NF, tapi tidak memenuhi 3 NF: Mahasiswa Nrp Nama Alm_Jalan Alm_Kota Alm_Provinsi Alm_Kodepos Ø karena masih terdapat atribut non primary key (yakni alm_kota dan alm_Provinsi) yang memiliki ketergantungan terhadap atribut non primary key yang lain (yakni alm_kodepos): alm_kodepos {alm_Provinsi, alm_kota} Ø Sehingga tabel tersebut perlu didekomposisi menjadi: Mahasiswa (Nrp, nama, alm_jalan, alm_kodepos) Kodepos (alm_kodepos, alm_provinsi, alm_kota)
latihan Normalisasikan tabel tersebut!!
1. Tabel tersebut tidak memenuhi 1 NF, karena ada atribut multivalue (hobbi) maka harus didekomposisi menjadi
Atau jika kita lihat recordnya seperti ini!
Dari tabel siswa dan hobby yang di hasilkan apakah tabel tersebut sudah bisa dikatakan normal? Mengapa?
Pada tabel siswa ketergantungan pada primari key nya bersifat sebagian, muncul asumsi bahwa nis dan kode_mk adalah primary key. . . maka tebel siswa TIDAK memenuhi 2 NF, maka tabel siswa di dekomposisi menjadi
Query diatas untuk menampilkan siswa yang suka memasak Hasil Queri diatas
Query diatas untuk menampilkan siswa dan nilai nya
- Slides: 25