3.1 Normalisasi pangkalan data
Bentuk normal ialah sifat hubungan dalam model data hubungan yang mencirikannya dari segi redundansi, yang berpotensi membawa kepada keputusan persampelan atau perubahan data yang salah secara logik. Bentuk normal ditakrifkan sebagai set keperluan yang mesti dipenuhi oleh hubungan (jadual dalam pangkalan data).
Proses menukar hubungan pangkalan data kepada bentuk yang mematuhi bentuk biasa dipanggil normalisasi. Normalisasi bertujuan untuk membawa struktur pangkalan data kepada bentuk yang memberikan lebihan logik yang minimum , dan tidak bertujuan untuk mengurangkan atau meningkatkan prestasi, atau mengurangkan atau meningkatkan volum fizikal pangkalan data .
Matlamat utama normalisasi adalah untuk mengurangkan potensi ketidakkonsistenan maklumat yang disimpan dalam pangkalan data. Tujuan umum proses normalisasi adalah seperti berikut:
- pengecualian jenis redundansi tertentu;
- betulkan beberapa anomali kemas kini;
- pembangunan projek pangkalan data yang merupakan perwakilan yang cukup "berkualiti tinggi" bagi dunia sebenar, adalah intuitif dan boleh berfungsi sebagai asas yang baik untuk pengembangan seterusnya;
- memudahkan prosedur untuk menggunakan kekangan integriti yang diperlukan.
Lebihan biasanya dihapuskan dengan menguraikan hubungan sedemikian rupa sehingga hanya fakta utama disimpan dalam setiap hubungan (iaitu fakta yang tidak diperoleh daripada fakta tersimpan lain).
Walaupun idea penormalan sangat berguna untuk reka bentuk pangkalan data, ia bukanlah cara universal atau menyeluruh untuk meningkatkan kualiti reka bentuk pangkalan data. Ini disebabkan oleh fakta bahawa terdapat terlalu banyak kemungkinan ralat dan kekurangan dalam struktur pangkalan data yang tidak dapat dihapuskan dengan normalisasi.
Di sebalik pertimbangan ini, teori normalisasi adalah pencapaian yang sangat berharga bagi teori dan amalan hubungan, kerana ia menyediakan kriteria saintifik yang ketat dan munasabah untuk kualiti projek pangkalan data dan kaedah formal untuk meningkatkan kualiti ini. Ini menjadikan teori normalisasi menonjol daripada pendekatan reka bentuk empirikal semata-mata yang ditawarkan dalam model data lain. Selain itu, boleh dikatakan bahawa dalam keseluruhan bidang teknologi maklumat tidak ada kaedah untuk menilai dan menambah baik penyelesaian reka bentuk yang setanding dengan teori normalisasi pangkalan data hubungan dari segi tahap ketegasan formal.
Normalisasi kadangkala dikritik atas alasan bahawa "itu hanya akal sehat" dan mana-mana profesional yang cekap akan "secara semula jadi" mereka bentuk pangkalan data yang dinormalisasi sepenuhnya tanpa perlu menggunakan teori pergantungan.
Walau bagaimanapun, seperti yang dinyatakan oleh Profesor Christopher Date, normalisasi ialah prinsip akal sehat yang membimbing seorang pereka matang dalam fikirannya, iaitu, prinsip normalisasi adalah akal sehat yang diformalkan . Sementara itu, mengenal pasti dan memformalkan prinsip akal adalah tugas yang sangat sukar, dan kejayaan dalam menyelesaikannya adalah pencapaian yang signifikan.
3.2 Bentuk normal pertama
Bentuk normal pertama (1NF) ialah bentuk normal asas hubungan dalam model data hubungan.
Pembolehubah hubungan berada dalam bentuk normal pertama jika dan hanya jika, dalam mana-mana nilai sah pembolehubah itu, setiap tuple hubungan mengandungi tepat satu nilai untuk setiap atribut.
Dalam model hubungan, hubungan sentiasa dalam bentuk normal pertama, mengikut definisi konsep hubungan.
Bagi pelbagai jadual, ia mungkin bukan representasi perhubungan yang betul dan, oleh itu, mungkin tidak berada dalam 1NF. Menurut definisi Christopher Date untuk kes sedemikian, jadual dinormalisasi (setara, dalam bentuk normal pertama) jika dan hanya jika ia merupakan perwakilan langsung dan benar bagi sesetengah hubungan. Secara lebih khusus, jadual berkenaan mesti memenuhi lima syarat berikut:
- Tiada susunan baris dari atas ke bawah (dengan kata lain, susunan baris tidak menyampaikan sebarang maklumat).
- Tiada susunan lajur dari kiri ke kanan (dengan kata lain, susunan lajur tidak membawa maklumat).
- Tiada baris pendua.
- Setiap persilangan baris dan lajur mengandungi tepat satu nilai daripada domain yang sepadan (dan tiada yang lain).
- Semua lajur adalah "biasa".
"Keteraturan" semua lajur jadual bermakna tiada komponen "tersembunyi" dalam jadual yang hanya boleh diakses dalam pemanggilan beberapa pengendali khas dan bukannya merujuk kepada nama lajur biasa, atau yang membawa kepada kesan sampingan untuk baris. atau jadual apabila menggunakan operator standard.
Jadual asal tidak dinormalkan (iaitu, bukan perwakilan yang betul bagi sesetengah hubungan):
Pekerja | Nombor telefon |
---|---|
Ivanov I.I. |
283-56-82 390-57-34 |
Petrov P.P. | 708-62-34 |
Sidorov S.S. |
Jadual dikurangkan kepada 1NF, yang merupakan perwakilan yang betul bagi beberapa hubungan:
Pekerja | Nombor telefon |
---|---|
Ivanov I.I. | 283-56-82 |
Ivanov I.I. | 390-57-34 |
Petrov P.P. | 708-62-34 |
3.3 Bentuk normal kedua
Pembolehubah hubungan berada dalam bentuk normal kedua jika dan hanya jika ia berada dalam bentuk normal pertama dan setiap atribut bukan kunci tidak dapat dikurangkan bergantung pada (setiap) kunci calonnya .
Ketakterulangan bermakna bahawa kunci berpotensi tidak mengandungi subset atribut yang lebih kecil dari mana kebergantungan fungsi ini juga boleh diperolehi. Untuk kebergantungan fungsi yang tidak dapat dikurangkan, konsep yang setara dengan "pergantungan fungsi penuh" sering digunakan.
Jika kunci calon adalah mudah, iaitu, ia terdiri daripada satu atribut, maka sebarang pergantungan fungsi padanya tidak dapat dikurangkan (lengkap). Jika kunci calon ialah kunci komposit, maka, mengikut takrifan bentuk normal kedua, tidak boleh ada atribut bukan kunci dalam hubungan yang bergantung pada sebahagian daripada kunci calon komposit.
Contoh menukarkan hubungan kepada bentuk normal kedua
Biarkan pasangan atribut {Cawangan syarikat, Kedudukan} membentuk kunci utama dalam hubungan berikut:
Cawangan syarikat | Tajuk kerja | Gaji | Ketersediaan komputer |
---|---|---|---|
Cawangan di Tomsk | Lebih bersih | 20000 | Tidak |
Cawangan di Moscow | Pengaturcara | 40000 | makan |
Cawangan di Tomsk | Pengaturcara | 25000 | makan |
Katakan gaji bergantung pada cawangan dan jawatan, dan ketersediaan komputer hanya bergantung pada jawatan.
Terdapat pergantungan berfungsi Kedudukan -> Mempunyai komputer, di mana bahagian kiri (penentu) hanya sebahagian daripada kunci utama, yang melanggar keadaan bentuk normal kedua.
Untuk mengurangkan kepada 2NF, hubungan asal harus diuraikan kepada dua hubungan:
Cawangan syarikat | Tajuk kerja | Gaji |
---|---|---|
Cawangan di Tomsk | Lebih bersih | 20000 |
Cawangan di Moscow | Pengaturcara | 40000 |
Cawangan di Tomsk | Pengaturcara | 25000 |
Tajuk kerja | Ketersediaan komputer |
---|---|
Lebih bersih | Tidak |
Pengaturcara | makan |
Pengaturcara | makan |
3.4 Bentuk normal ketiga (3NF)
Pembolehubah hubungan R berada dalam 3NF jika dan hanya jika keadaan berikut adalah benar:
- Rberada dalam bentuk normal kedua.
- tiada atribut bukan kunciRtidak berada dalam pergantungan fungsi transitif pada kunci calonR.
Penjelasan untuk definisi:
Atribut bukan kunci bagi hubungan R ialah atribut yang bukan milik mana-mana kunci calon R.
Kebergantungan fungsi set atribut Z pada set atribut X (ditulis X → Z, disebut "x menentukan z") adalah transitif jika terdapat set atribut Y yang X → Y dan Y → Z. Dalam ini kes, tiada satu pun set X, Y dan Z bukan subset daripada yang lain, iaitu kebergantungan fungsi X → Z, X → Y, dan Y → Z tidak remeh, dan juga tiada kebergantungan fungsi Y → X.
Takrif 3NF, bersamaan dengan Codd tetapi perkataan berbeza, diberikan oleh Carlo Zaniolo pada tahun 1982. Menurutnya, pembolehubah hubungan berada dalam 3NF jika dan hanya jika setiap kebergantungan fungsinya X → A memenuhi sekurang-kurangnya satu daripada syarat berikut:
- X mengandungi A (iaitu, X → A ialah kebergantungan fungsi yang remeh)
- X - superkey
- A ialah atribut utama (iaitu, A ialah sebahagian daripada kunci calon).
Takrifan Zaniolo dengan jelas mentakrifkan perbezaan antara 3NF dan Boyce-Codd Normal Form (BCNF) yang lebih ketat: BCNF mengecualikan syarat ketiga ("A ialah atribut utama").
Ringkasan deskriptif takrif 3NF Codd yang boleh diingati dan tradisional telah diberikan oleh Bill Kent: setiap atribut bukan kunci "harus memberikan maklumat tentang kunci, kunci penuh dan tiada apa-apa selain kunci ".
Syarat bergantung pada "kunci penuh" atribut bukan kunci memastikan hubungan itu berada dalam bentuk normal kedua; dan syarat untuk mereka bergantung pada "tiada apa-apa selain kunci" ialah mereka berada dalam bentuk normal ketiga.
Chris Date bercakap tentang ringkasan Kent sebagai "ciri menarik secara intuitif" 3NF, dan memerhatikan bahawa, dengan sedikit pengubahsuaian, ia juga boleh berfungsi sebagai definisi bentuk biasa Boyce-Codd yang lebih ketat: "setiap atribut mesti menyediakan maklumat tentang kunci , kunci penuh dan tiada apa-apa selain kunci.
Takrifan 3NF versi Kent adalah kurang ketat daripada versi bentuk biasa Boyce-Codd bagi rumusan Data, kerana versi pertama hanya menyatakan bahawa atribut bukan kunci bergantung pada kekunci.
Atribut utama (yang merupakan kunci atau sebahagian daripadanya) tidak semestinya bergantung secara fungsi sama sekali; setiap daripada mereka memberikan maklumat tentang kunci dengan menyediakan kunci itu sendiri atau sebahagian daripadanya. Perlu diingatkan di sini bahawa peraturan ini hanya sah untuk atribut bukan kunci, kerana penggunaannya pada semua atribut akan melumpuhkan sepenuhnya semua kunci alternatif yang kompleks, kerana setiap elemen kunci sedemikian akan melanggar syarat "kunci penuh".
Pertimbangkan pembolehubah hubungan R1 sebagai contoh:
Pekerja | Jabatan | telefon |
---|---|---|
Grishin | Perakaunan | 11-22-33 |
Vasiliev | Perakaunan | 11-22-33 |
Petrov | Bekalan | 44-55-66 |
Setiap pekerja hanya dimiliki oleh satu jabatan; setiap jabatan mempunyai telefon tunggal. Atribut Pekerja ialah kunci utama. Pekerja tidak mempunyai telefon peribadi dan nombor telefon pekerja bergantung sepenuhnya pada jabatan.
Dalam contoh, kebergantungan fungsi berikut wujud: Pekerja → Jabatan, Jabatan → Telefon, Pekerja → Telefon.
Pembolehubah hubungan R1 berada dalam bentuk normal kedua kerana setiap atribut mempunyai kebergantungan fungsi yang tidak dapat dikurangkan pada potensi Pekerja utama.
Hubungan Pekerja → Telefon adalah transitif, jadi hubungan itu bukan dalam bentuk normal ketiga.
Pemisahan R1 menghasilkan dua pembolehubah hubungan yang berada dalam 3NF:
Jabatan | telefon |
---|---|
Perakaunan | 11-22-33 |
Bekalan | 44-55-66 |
Pekerja | Jabatan |
---|---|
Grishin | Perakaunan |
Vasiliev | Perakaunan |
Petrov | Bekalan |
Hubungan awal R1, jika perlu, mudah diperoleh hasil daripada operasi penyambungan hubungan R2 dan R3.
GO TO FULL VERSION