3.1 Normalisasi basis data
Bentuk normal adalah properti dari relasi dalam model data relasional yang mencirikannya dalam hal redundansi, berpotensi mengarah pada hasil pengambilan sampel atau perubahan data yang salah secara logis. Bentuk normal didefinisikan sebagai kumpulan persyaratan yang harus dipenuhi oleh suatu relasi (tabel dalam database).
Proses mengubah relasi basis data ke bentuk yang sesuai dengan bentuk normal disebut normalisasi. Normalisasi dimaksudkan untuk membawa struktur basis data ke bentuk yang memberikan redundansi logis minimal , dan tidak dimaksudkan untuk mengurangi atau meningkatkan kinerja, atau mengurangi atau menambah volume fisik basis data .
Tujuan akhir normalisasi adalah untuk mengurangi potensi ketidakkonsistenan informasi yang disimpan dalam database. Tujuan umum dari proses normalisasi adalah sebagai berikut:
- pengecualian jenis redundansi tertentu;
- perbaiki beberapa anomali pembaruan;
- pengembangan proyek basis data yang merupakan representasi dunia nyata yang cukup "berkualitas tinggi", intuitif dan dapat berfungsi sebagai dasar yang baik untuk ekspansi selanjutnya;
- menyederhanakan prosedur untuk menerapkan batasan integritas yang diperlukan.
Redundansi biasanya dihilangkan dengan mendekomposisi relasi sedemikian rupa sehingga hanya fakta primer yang disimpan dalam setiap relasi (yaitu, fakta yang tidak berasal dari fakta tersimpan lainnya).
Sementara ide normalisasi sangat berguna untuk desain database, mereka tidak berarti cara universal atau lengkap untuk meningkatkan kualitas desain database. Hal ini disebabkan terlalu banyaknya ragam kemungkinan kesalahan dan kekurangan dalam struktur database yang tidak dapat dihilangkan dengan normalisasi.
Terlepas dari pertimbangan ini, teori normalisasi adalah pencapaian yang sangat berharga dari teori dan praktik relasional, karena memberikan kriteria ilmiah yang ketat dan masuk akal untuk kualitas proyek database dan metode formal untuk meningkatkan kualitas ini. Ini membuat teori normalisasi menonjol dari pendekatan desain empiris murni yang ditawarkan dalam model data lain. Selain itu, dapat dikatakan bahwa di seluruh bidang teknologi informasi praktis tidak ada metode untuk mengevaluasi dan meningkatkan solusi desain yang sebanding dengan teori normalisasi basis data relasional dalam hal tingkat kekakuan formal.
Normalisasi terkadang dikritik dengan alasan bahwa "itu hanya akal sehat" dan setiap profesional yang kompeten akan "secara alami" merancang database yang sepenuhnya dinormalisasi tanpa harus menerapkan teori ketergantungan.
Namun, seperti yang dicatat oleh Profesor Christopher Date, normalisasi adalah prinsip-prinsip akal sehat yang memandu seorang desainer dewasa dalam pikirannya, yaitu prinsip-prinsip normalisasi adalah akal sehat yang diformalkan . Sementara itu, mengidentifikasi dan memformalkan prinsip-prinsip akal sehat adalah tugas yang sangat sulit, dan keberhasilan menyelesaikannya merupakan pencapaian yang signifikan.
3.2 Bentuk normal pertama
Bentuk normal pertama (1NF) adalah bentuk normal dasar dari suatu relasi dalam model data relasional.
Suatu variabel relasi berada dalam bentuk normal pertama jika dan hanya jika, dalam sembarang nilai yang valid dari variabel tersebut, setiap tuple relasi berisi tepat satu nilai untuk setiap atribut.
Dalam model relasional, suatu relasi selalu dalam bentuk normal pertama, menurut definisi konsep relasi.
Adapun berbagai tabel, mereka mungkin bukan representasi hubungan yang benar dan, karenanya, mungkin tidak ada di 1NF. Menurut definisi Christopher Date untuk kasus seperti itu, sebuah tabel dinormalisasi (ekuivalen, dalam bentuk normal pertama) jika dan hanya jika itu adalah representasi langsung dan benar dari beberapa relasi. Lebih khusus lagi, tabel yang dimaksud harus memenuhi lima syarat berikut:
- Tidak ada pengurutan baris dari atas ke bawah (dengan kata lain, urutan baris tidak menyampaikan informasi apapun).
- Tidak ada urutan kolom dari kiri ke kanan (dengan kata lain, urutan kolom tidak membawa informasi).
- Tidak ada garis duplikat.
- Setiap persimpangan baris dan kolom berisi tepat satu nilai dari domain yang sesuai (dan tidak ada yang lain).
- Semua kolom adalah "biasa".
"Keteraturan" dari semua kolom tabel berarti bahwa tidak ada komponen "tersembunyi" dalam tabel yang hanya dapat diakses dengan memanggil beberapa operator khusus alih-alih merujuk ke nama kolom reguler, atau yang menyebabkan efek samping untuk baris. atau tabel saat memanggil operator standar.
Tabel asli yang tidak dinormalisasi (yaitu, bukan representasi yang benar dari beberapa relasi):
Karyawan | Nomor telepon |
---|---|
Ivanov I.I. |
283-56-82 390-57-34 |
Petrov P.P. | 708-62-34 |
Sidorov S.S. |
Tabel dikurangi menjadi 1NF, yang merupakan representasi yang benar dari beberapa relasi:
Karyawan | Nomor telepon |
---|---|
Ivanov I.I. | 283-56-82 |
Ivanov I.I. | 390-57-34 |
Petrov P.P. | 708-62-34 |
3.3 Bentuk normal kedua
Variabel relasi berada dalam bentuk normal kedua jika dan hanya jika berada dalam bentuk normal pertama dan setiap atribut bukan kunci bergantung secara tak tereduksi pada (setiap) kunci kandidatnya .
Irreducibility berarti kunci potensial tidak mengandung subset atribut yang lebih kecil dari mana dependensi fungsional ini juga dapat diturunkan. Untuk ketergantungan fungsional yang tidak dapat direduksi, konsep setara "ketergantungan fungsional penuh" sering digunakan.
Jika kunci kandidat sederhana, yaitu terdiri dari satu atribut, maka setiap ketergantungan fungsional padanya tidak dapat direduksi (lengkap). Jika kunci kandidat adalah kunci gabungan, maka menurut definisi bentuk normal kedua, tidak boleh ada atribut bukan kunci dalam relasi yang bergantung pada bagian kunci kandidat gabungan.
Contoh konversi relasi ke bentuk normal kedua
Biarkan pasangan atribut {Company branch, Position} membentuk kunci utama dalam relasi berikut:
Cabang perusahaan | Judul pekerjaan | Gaji | Ketersediaan komputer |
---|---|---|---|
Cabang di Tomsk | Pembersih | 20000 | TIDAK |
Cabang di Moskow | Programmer | 40000 | Makan |
Cabang di Tomsk | Programmer | 25000 | Makan |
Katakanlah gaji bergantung pada cabang dan jabatan, dan ketersediaan komputer hanya bergantung pada jabatan.
Ada ketergantungan fungsional Posisi -> Memiliki komputer, di mana sisi kiri (penentu) hanya sebagian dari kunci utama, yang melanggar kondisi bentuk normal kedua.
Untuk mereduksi menjadi 2NF, relasi asli harus didekomposisi menjadi dua relasi:
Cabang perusahaan | Judul pekerjaan | Gaji |
---|---|---|
Cabang di Tomsk | Pembersih | 20000 |
Cabang di Moskow | Programmer | 40000 |
Cabang di Tomsk | Programmer | 25000 |
Judul pekerjaan | Ketersediaan komputer |
---|---|
Pembersih | TIDAK |
Programmer | Makan |
Programmer | Makan |
3.4 Bentuk normal ketiga (3NF)
Suatu variabel relasi R berada dalam 3NF jika dan hanya jika kondisi berikut ini benar:
- Rberada dalam bentuk normal kedua.
- tidak ada atribut bukan kunciRtidak dalam ketergantungan fungsional transitif pada kunci kandidatR.
Penjelasan untuk definisi:
Atribut bukan kunci dari relasi R adalah atribut yang bukan milik salah satu kunci kandidat dari R.
Ketergantungan fungsional himpunan atribut Z pada himpunan atribut X (ditulis X → Z, dilafalkan “x menentukan z”) bersifat transitif jika terdapat himpunan atribut Y sehingga X → Y dan Y → Z. Dalam hal ini kasus, tidak ada himpunan X, Y dan Z bukan subset dari yang lain, yaitu dependensi fungsional X → Z, X → Y, dan Y → Z tidak sepele, dan juga tidak ada ketergantungan fungsional Y → X.
Definisi 3NF, setara dengan Codd's tetapi dengan kata-kata yang berbeda, diberikan oleh Carlo Zaniolo pada tahun 1982. Menurutnya, sebuah variabel relasi berada dalam 3NF jika dan hanya jika masing-masing dependensi fungsionalnya X → A memenuhi setidaknya satu dari kondisi berikut:
- X berisi A (yaitu, X → A adalah ketergantungan fungsional sepele)
- X - kunci super
- A adalah atribut kunci (yaitu, A adalah bagian dari kunci kandidat).
Definisi Zaniolo dengan jelas mendefinisikan perbedaan antara 3NF dan Bentuk Normal Boyce-Codd (BCNF) yang lebih ketat: BCNF mengecualikan kondisi ketiga ("A adalah atribut kunci").
Ringkasan yang berkesan dan deskriptif tradisional dari definisi 3NF Codd diberikan oleh Bill Kent: setiap atribut non-kunci "harus memberikan informasi tentang kunci, kunci lengkap, dan tidak lain adalah kunci ".
Kondisi bergantung pada "kunci penuh" dari atribut bukan kunci memastikan bahwa relasi berada dalam bentuk normal kedua; dan syarat bagi mereka untuk bergantung pada "tidak lain hanyalah kunci" adalah bahwa mereka berada dalam bentuk normal ketiga.
Chris Date berbicara tentang ringkasan Kent sebagai "fitur yang menarik secara intuitif" dari 3NF, dan mengamati bahwa, dengan sedikit modifikasi, itu juga dapat berfungsi sebagai definisi bentuk normal Boyce-Codd yang lebih ketat: "setiap atribut harus memberikan informasi tentang kunci , kunci lengkap, dan bukan apa pun kecuali kuncinya.
Definisi 3NF versi Kent tidak seketat versi formulasi Data versi normal Boyce-Codd, karena yang pertama hanya menyatakan bahwa atribut non-kunci bergantung pada kunci.
Atribut primer (yang merupakan kunci atau bagian darinya) tidak perlu bergantung secara fungsional sama sekali; masing-masing memberikan informasi tentang kunci dengan memberikan kunci itu sendiri atau bagian darinya. Perlu dicatat di sini bahwa aturan ini hanya berlaku untuk atribut bukan kunci, karena menerapkannya ke semua atribut akan sepenuhnya menonaktifkan semua kunci alternatif kompleks, karena setiap elemen dari kunci tersebut akan melanggar kondisi "kunci penuh".
Pertimbangkan variabel relasi R1 sebagai contoh:
Karyawan | Departemen | Telepon |
---|---|---|
Grishin | Akuntansi | 11-22-33 |
Vasiliev | Akuntansi | 11-22-33 |
Petrov | Memasok | 44-55-66 |
Setiap karyawan secara eksklusif dimiliki oleh satu departemen; setiap departemen memiliki satu telepon. Atribut Karyawan adalah kunci utama. Karyawan tidak memiliki telepon pribadi, dan nomor telepon karyawan hanya bergantung pada departemen.
Dalam contoh, dependensi fungsional berikut ada: Karyawan → Departemen, Departemen → Telepon, Karyawan → Telepon.
Variabel relasi R1 berada dalam bentuk normal kedua karena setiap atribut memiliki dependensi fungsional yang tidak dapat direduksi pada kunci potensial Karyawan.
Relasi Employee → Phone bersifat transitif, sehingga relasinya tidak dalam bentuk normal ketiga.
Memisahkan R1 menghasilkan dua variabel relasi yang berada di 3NF:
Departemen | Telepon |
---|---|
Akuntansi | 11-22-33 |
Memasok | 44-55-66 |
Karyawan | Departemen |
---|---|
Grishin | Akuntansi |
Vasiliev | Akuntansi |
Petrov | Memasok |
Relasi awal R1, jika perlu, mudah diperoleh sebagai hasil operasi penggabungan relasi R2 dan R3.