Lab Basis Data II

23
Normalisasi Basis Normalisasi Basis Data Data

Transcript of Lab Basis Data II

Normalisasi Basis Normalisasi Basis DataData

NormalisasiNormalisasi Normalisasi Normalisasi adalah proses pembentukan adalah proses pembentukan struktur basis data sehingga sebagian struktur basis data sehingga sebagian besar besar ambiguity ambiguity bisa dihilangkan. bisa dihilangkan.

Tahap Normalisasi dimulai dari tahap Tahap Normalisasi dimulai dari tahap paling ringan (1NF) hingga paling paling ringan (1NF) hingga paling ketat (5NF) ketat (5NF)

Biasanya hanya sampai pada tingkat Biasanya hanya sampai pada tingkat 3NF atau BCNF karena sudah cukup 3NF atau BCNF karena sudah cukup memadai untuk menghasilkan tabel-memadai untuk menghasilkan tabel-tabel yang berkualitas baik. tabel yang berkualitas baik.

NormalisasiNormalisasiSebuah tabel dikatakan baik (efisien) atau Sebuah tabel dikatakan baik (efisien) atau normal jika memenuhi 3 kriteria sbb:normal jika memenuhi 3 kriteria sbb:1.1. Jika ada dekomposisi (penguraian) tabel, Jika ada dekomposisi (penguraian) tabel,

maka dekomposisinya harus dijamin aman maka dekomposisinya harus dijamin aman ((Lossless-Join DecompositionLossless-Join Decomposition). Artinya, setelah ). Artinya, setelah tabel tersebut diuraikan / didekomposisi tabel tersebut diuraikan / didekomposisi menjadi tabel-tabel baru, tabel-tabel baru menjadi tabel-tabel baru, tabel-tabel baru tersebut bisa menghasilkan tabel semula tersebut bisa menghasilkan tabel semula dengan sama persis.dengan sama persis.

2.2. Terpeliharanya ketergantungan fungsional Terpeliharanya ketergantungan fungsional pada saat perubahan data (Dependency pada saat perubahan data (Dependency Preservation).Preservation).

3.3. Tidak melanggar Boyce-Code Normal Form Tidak melanggar Boyce-Code Normal Form (BCNF) (-akan dijelaskan kemudian-)(BCNF) (-akan dijelaskan kemudian-)

NormalisasiNormalisasi

Jika kriteria ketiga (BCNF) tidak Jika kriteria ketiga (BCNF) tidak dapat terpenuhi, maka paling tidak dapat terpenuhi, maka paling tidak tabel tersebut tidak melanggar Bentuk tabel tersebut tidak melanggar Bentuk Normal tahap ketiga (3rd Normal Normal tahap ketiga (3rd Normal Form / 3NF).Form / 3NF).

Tabel UniversalTabel UniversalTabel Universal (Tabel Universal (Universal / Star TableUniversal / Star Table) ) sebuah tabel yang merangkum semua sebuah tabel yang merangkum semua kelompok data yang saling berhubungan, kelompok data yang saling berhubungan, bukan merupakan tabel yang baik. bukan merupakan tabel yang baik.

Misalnya:

Tabel UniversalTabel Universal

Functional DependencyFunctional Dependency Notasi: A Notasi: A B B A dan B adalah A dan B adalah atribut dari sebuah tabel. Berarti atribut dari sebuah tabel. Berarti secara fungsional A menentukan B atau B secara fungsional A menentukan B atau B tergantung pada A, jika dan hanya jika tergantung pada A, jika dan hanya jika ada 2 baris data dengan nilai A yang ada 2 baris data dengan nilai A yang sama, maka nilai B juga sama sama, maka nilai B juga sama

Notasi: A Notasi: A B B atau A xatau A x B BAdalah kebalikan dari notasi Adalah kebalikan dari notasi sebelumnya.sebelumnya.

Functional DependencyFunctional DependencyContoh tabel nilaiContoh tabel nilai

Functional DependencyFunctional DependencyFunctional Dependency dari tabel Functional Dependency dari tabel nilainilai Nrp Nrp namaMhs namaMhsKarena untuk setiap nilai nrp yang sama, maka Karena untuk setiap nilai nrp yang sama, maka nilai namaMhs juga sama.nilai namaMhs juga sama.

{Namakul, nrp} {Namakul, nrp} NiHuruf NiHurufKarena attribut Nihuruf tergantung pada Namakul Karena attribut Nihuruf tergantung pada Namakul dan nrp secara bersama-sama. Dalam arti lain dan nrp secara bersama-sama. Dalam arti lain untuk Namakul dan nrp yang sama, maka NiHuruf untuk Namakul dan nrp yang sama, maka NiHuruf juga sama, karena Namakul dan nrp merupakan key juga sama, karena Namakul dan nrp merupakan key (bersifat unik).(bersifat unik). NamaKul NamaKul nrp nrp

Nrp Nrp NiHuruf NiHuruf

Bentuk-bentuk NormalBentuk-bentuk Normal1.1. Bentuk Normal Tahap Pertama (1st Bentuk Normal Tahap Pertama (1st

Normal Form / 1NF)Normal Form / 1NF)2.2. Bentuk Normal Tahap Kedua (2nd Bentuk Normal Tahap Kedua (2nd

Normal Form / 2NF)Normal Form / 2NF)3.3. Bentuk Normal Tahap (3rd Normal Bentuk Normal Tahap (3rd Normal

Form / 3NF)Form / 3NF)4.4. Boyce-Code Normal Form (BCNF)Boyce-Code Normal Form (BCNF)5.5. Bentuk Normal Tahap (4th Normal Bentuk Normal Tahap (4th Normal

Form / 4NF)Form / 4NF)6.6. Bentuk Normal Tahap (5th Normal Bentuk Normal Tahap (5th Normal

Form / 5NF)Form / 5NF)

Bentuk Normal Tahap Bentuk Normal Tahap Pertama (1st Normal Form / Pertama (1st Normal Form /

1NF)1NF) Bentuk normal 1NF terpenuhi jika Bentuk normal 1NF terpenuhi jika sebuah tabel tidak memiliki atribut sebuah tabel tidak memiliki atribut bernilai banyak (bernilai banyak (multivalued attributemultivalued attribute), ), atribut composite atau kombinasinya atribut composite atau kombinasinya dalam domain data yang sama. dalam domain data yang sama.

Setiap atribut dalam tabel tersebut Setiap atribut dalam tabel tersebut harus bernilai harus bernilai atomicatomic (tidak dapat (tidak dapat dibagi-bagi lagi) dibagi-bagi lagi)

Contoh 1Contoh 1Misal data mahasiswa sbb:Misal data mahasiswa sbb:

AtauAtau::

Tabel-tabel di atas tidak memenuhi Tabel-tabel di atas tidak memenuhi syarat 1NFsyarat 1NF

Contoh 1Contoh 1Didekomposisi menjadi:Didekomposisi menjadi: Tabel Tabel MahasiswaMahasiswa

Tabel Tabel HobiHobi

Contoh 2 (composite)Contoh 2 (composite)JadwalKuliahJadwalKuliah

KodekulKodekul NamaKulNamaKul DosenDosen KelasKelas JadwalJadwal

Dimana nilai pada atribut jadwal berisi Dimana nilai pada atribut jadwal berisi gabungan antara Hari dan Jam.gabungan antara Hari dan Jam.

Jika asumsi hari dan jam memegang peranan Jika asumsi hari dan jam memegang peranan penting dalam sistem basis data, maka penting dalam sistem basis data, maka atribut Jadwal perlu dipisah sehingga atribut Jadwal perlu dipisah sehingga menjadi JadwalHari dan JadwalJam sbb:menjadi JadwalHari dan JadwalJam sbb:

JadwalKuliJadwalKuliahahKodekulKodekul NamaKulNamaKul DosenDosen KelasKelas JadwalHarJadwalHar

ii JadwalJamJadwalJam

Bentuk Normal Tahap Kedua Bentuk Normal Tahap Kedua (2nd Normal Form)(2nd Normal Form)

Bentuk normal 2NF terpenuhi dalam sebuah Bentuk normal 2NF terpenuhi dalam sebuah tabel jika telah memenuhi bentuk 1NF, dan tabel jika telah memenuhi bentuk 1NF, dan semua atribut selain primary key, secara semua atribut selain primary key, secara utuh memiliki Functional Dependency pada utuh memiliki Functional Dependency pada primary keyprimary key

Sebuah tabel tidak memenuhi 2NF, jika ada Sebuah tabel tidak memenuhi 2NF, jika ada atribut yang ketergantungannya atribut yang ketergantungannya (Functional Dependency) hanya bersifat (Functional Dependency) hanya bersifat parsial saja (hanya tergantung pada parsial saja (hanya tergantung pada sebagian dari primary key) sebagian dari primary key)

Jika terdapat atribut yang tidak memiliki Jika terdapat atribut yang tidak memiliki ketergantungan terhadap primary key, maka ketergantungan terhadap primary key, maka atribut tersebut harus dipindah atau atribut tersebut harus dipindah atau dihilangkan dihilangkan

ContohContohTabel berikut memenuhi 1NF tapi tidak termasuk 2NF:Tabel berikut memenuhi 1NF tapi tidak termasuk 2NF:

Mhs_nrpMhs_nrp mhs_namamhs_nama mhs_alamamhs_alamatt

mk_kodemk_kode mk_namamk_nama mk_sksmk_sks nihurunihuruff

Tidak memenuhi 2NF, karena {Mhs_nrp, Tidak memenuhi 2NF, karena {Mhs_nrp, mk_kode} yang dianggap sebagai primary mk_kode} yang dianggap sebagai primary key sedangkan:key sedangkan:{Mhs_nrp, mk_kode}{Mhs_nrp, mk_kode} mhs_namamhs_nama{Mhs_nrp, mk_kode} {Mhs_nrp, mk_kode} mhs_alamatmhs_alamat{Mhs_nrp, mk_kode} {Mhs_nrp, mk_kode} mk_namamk_nama{Mhs_nrp, mk_kode} {Mhs_nrp, mk_kode} mk_sksmk_sks{Mhs_nrp, mk_kode}{Mhs_nrp, mk_kode} nihurufnihuruf Tabel di atas perlu didekomposisi menjadi Tabel di atas perlu didekomposisi menjadi beberapa tabel yang memenuhi syarat 2NF beberapa tabel yang memenuhi syarat 2NF

ContohContohFunctional dependencynya sbb:Functional dependencynya sbb:

{Mhs_nrp, mk_kode} nihuruf (fd1)

Mhs_nrp {mhs_nama, mhs_alamat} (fd2)Mk_kode {mk_nama, mk_sks} (fd3)

fd1 (mhs_nrp, mk_kode, nihuruf) Tabel Nilaifd2 (Mhs_nrp, mhs_nama, mhs_alamat) Tabel Mahasiswafd3 (mk_kode, mk_nama, mk_sks) Tabel MataKuliah

Bentuk Normal Tahap Ketiga Bentuk Normal Tahap Ketiga (3rd Normal Form /3NF) (3rd Normal Form /3NF)

Bentuk normal 3NF terpenuhi jika Bentuk normal 3NF terpenuhi jika telah memenuhi bentuk 2NF, dan jika telah memenuhi bentuk 2NF, dan jika tidak adatidak ada atribut atribut non primary key non primary key yang yang memiliki ketergantungan terhadap memiliki ketergantungan terhadap atribut atribut non primary key non primary key yang lainnya. yang lainnya.

Untuk setiap Functional Dependency Untuk setiap Functional Dependency dengan notasi X dengan notasi X A, maka: A, maka: • X harus menjadi superkey pada tabel tsb.X harus menjadi superkey pada tabel tsb.• Atau A merupakan bagian dari primary key Atau A merupakan bagian dari primary key pada tabel tsb.pada tabel tsb.

ContohContohTabel berikut memenuhi 2NF, tapi tidak memenuhi 3NF:Tabel berikut memenuhi 2NF, tapi tidak memenuhi 3NF:

Mahasiswa NrpNrp NamaNama Alm_JalaAlm_Jala

nn Alm_KotaAlm_Kota Alm_ProvinAlm_Provin

sisi Alm_KodeposAlm_Kodepos

karena masih terdapat atribut karena masih terdapat atribut non primary key non primary key (yakni (yakni alm_kota alm_kota dan dan alm_Provinsialm_Provinsi) yang memiliki ) yang memiliki ketergantungan terhadap atribut ketergantungan terhadap atribut non primary key non primary key yang yang lain (yakni lain (yakni alm_kodeposalm_kodepos):):

alm_kodepos {alm_Provinsi, alm_kota} Sehingga tabel tersebut perlu didekomposisi Sehingga tabel tersebut perlu didekomposisi menjadi:menjadi:Mahasiswa (Nrp, nama, alm_jalan,

alm_kodepos)Kodepos (alm_kodepos, alm_provinsi,

alm_kota)

Boyce-Code Normal Form Boyce-Code Normal Form (BCNF)(BCNF)

Bentuk BCNF terpenuhi dalam sebuah tabel, Bentuk BCNF terpenuhi dalam sebuah tabel, jika untuk setiap jika untuk setiap functional dependencyfunctional dependency terhadap terhadap setiap atribut atau gabungan atribut dalam setiap atribut atau gabungan atribut dalam bentuk:bentuk: X X Y maka Y maka X X adalah adalah super keysuper key

tabel tersebut harus di-dekomposisi tabel tersebut harus di-dekomposisi berdasarkan berdasarkan functional dependency functional dependency yang ada, yang ada, sehingga X menjadi sehingga X menjadi super key super key dari tabel-tabel dari tabel-tabel hasil dekomposisi hasil dekomposisi

Setiap tabel dalam BCNF merupakan 3NF. Akan Setiap tabel dalam BCNF merupakan 3NF. Akan tetapi setiap 3NF belum tentu termasuk tetapi setiap 3NF belum tentu termasuk BCNF . Perbedaannya, untuk functional BCNF . Perbedaannya, untuk functional dependency X dependency X A, BCNF tidak membolehkan A A, BCNF tidak membolehkan A sebagai bagian dari primary key.sebagai bagian dari primary key.

Bentuk Normal Tahap Bentuk Normal Tahap Keempat (4th Normal Keempat (4th Normal

Form /4NF)Form /4NF) Bentuk normal 4NF terpenuhi Bentuk normal 4NF terpenuhi dalam sebuah tabel jika telah dalam sebuah tabel jika telah memenuhi bentuk BCNF, dan tabel memenuhi bentuk BCNF, dan tabel tersebut tidak boleh memiliki tersebut tidak boleh memiliki lebih dari sebuah lebih dari sebuah multivalued multivalued atributeatribute

Untuk setiap Untuk setiap multivalued dependencies multivalued dependencies (MVD) juga harus merupakan (MVD) juga harus merupakan functional dependenciesfunctional dependencies

ContohContohMisal, tabel berikut tidak memenuhi 4NF:Misal, tabel berikut tidak memenuhi 4NF:

Setiap employee dapat bekerja di lebih dari Setiap employee dapat bekerja di lebih dari project dan dapat memiliki lebih dari satu project dan dapat memiliki lebih dari satu skill. Untuk kasus seperti ini tabel tersebut skill. Untuk kasus seperti ini tabel tersebut harus di-dekomposisi menjadi:harus di-dekomposisi menjadi:

(Employee, Project)(Employee, Skill)

Bentuk Normal Tahap Bentuk Normal Tahap Keempat (5th Normal Keempat (5th Normal

Form /5NF)Form /5NF) Bentuk normal 5NF terpenuhi jika tidak Bentuk normal 5NF terpenuhi jika tidak dapat memiliki sebuah dapat memiliki sebuah lossless decomposition lossless decomposition menjadi tabel-tabel yg lebih kecil.menjadi tabel-tabel yg lebih kecil.

Jika 4 bentuk normal sebelumnya Jika 4 bentuk normal sebelumnya dibentuk berdasarkan dibentuk berdasarkan functional dependencyfunctional dependency, , 5NF dibentuk berdasarkan konsep 5NF dibentuk berdasarkan konsep join join dependencedependence. Yakni apabila sebuah tabel . Yakni apabila sebuah tabel telah di-dekomposisi menjadi tabel-telah di-dekomposisi menjadi tabel-tabel lebih kecil, harus bisa tabel lebih kecil, harus bisa digabungkan lagi (join) untuk membentuk digabungkan lagi (join) untuk membentuk tabel semula tabel semula