Isi kandungan:
Video: SQL Databases and the Firebase Database - The Firebase Database For SQL Developers #1 2025
Terdapat tiga sumber anomali ubahsuaian dalam SQL Ini didefinisikan sebagai bentuk biasa pertama, kedua, dan ketiga (1NF, 2NF, 3NF). Bentuk-bentuk normal ini bertindak sebagai remedi untuk pengubahsuaian anomali.
Borang normal pertama
Untuk berada dalam bentuk biasa pertama (1NF), jadual mesti mempunyai kualiti berikut:
-
Jadual dua dimensi dengan baris dan lajur.
-
Setiap baris mengandungi data yang berkaitan dengan beberapa perkara atau bahagian sesuatu.
-
Setiap lajur mengandungi data untuk satu atribut pada perkara yang diterangkannya.
-
Setiap sel (persimpangan baris dan lajur) jadual mesti mempunyai satu nilai sahaja.
-
Penyertaan dalam mana-mana lajur mestilah semua sama. Jika, sebagai contoh, kemasukan dalam satu baris sesuatu lajur mengandungi nama pekerja, semua baris lain mesti mengandungi nama pekerja dalam lajur itu juga.
-
Setiap lajur mesti mempunyai nama unik.
-
Tiada dua baris mungkin sama (iaitu, setiap baris mestilah unik).
-
Urutan lajur dan urutan baris tidak penting.
Jadual (hubungan) dalam bentuk normal pertama adalah kebal kepada beberapa jenis anomali ubahsuaian tetapi masih tertakluk kepada yang lain. Jadual JUALAN adalah dalam bentuk pertama yang pertama, dan jadual adalah tertakluk kepada penghapusan dan penyisipan anomali. Bentuk pertama yang pertama mungkin terbukti berguna dalam beberapa aplikasi tetapi tidak dapat dipercayai di orang lain.
Borang normal kedua
Untuk menghargai bentuk kedua yang kedua, anda mesti memahami idea kebergantungan fungsi. A pergantungan berfungsi adalah hubungan antara atau antara atribut. Satu atribut bergantung kepada fungsi yang lain jika nilai atribut kedua menentukan nilai atribut pertama. Sekiranya anda mengetahui nilai atribut kedua, anda boleh menentukan nilai atribut pertama.
Anggap, sebagai contoh, bahawa jadual mempunyai atribut (tiang) StandardCharge, NumberOfTests, dan TotalCharge yang berkaitan dengan persamaan berikut:
TotalCharge = StandardCharge * NumberOfTests
TotalCharge bergantung secara fungsional kepada StandardCharge dan NumberOfTests. Sekiranya anda mengetahui nilai StandardCharge dan NumberOfTests, anda boleh menentukan nilai TotalCharge.
Setiap jadual dalam bentuk normal pertama mesti mempunyai kunci utama yang unik. Kunci itu boleh terdiri daripada satu atau lebih daripada satu lajur. Kunci yang terdiri daripada lebih daripada satu lajur dipanggil kunci komposit . Untuk berada dalam bentuk biasa kedua (2NF), semua atribut bukan kunci mesti bergantung pada keseluruhan kekunci. Oleh itu, setiap perhubungan yang ada dalam 1NF dengan kunci atribut tunggal secara automatik dalam bentuk normal kedua.
Jika hubungan mempunyai kunci komposit, semua atribut bukan kunci mesti bergantung kepada semua komponen kunci. Jika anda mempunyai jadual di mana beberapa atribut bukan kunci tidak bergantung kepada semua komponen kunci, putuskan jadual sehingga dua atau lebih jadual supaya - dalam setiap jadual baru - semua atribut bukan kunci bergantung kepada semua komponen kunci utama.
Bunyi yang mengelirukan? Lihat contoh untuk menjelaskan perkara. Pertimbangkan jadual JUALAN. Daripada merakam hanya satu pembelian untuk setiap pelanggan, anda menambah satu baris setiap kali pelanggan membeli item untuk kali pertama. Perbezaan tambahan ialah pelanggan piagam (mereka yang mempunyai nilai Pelanggan_ID 1001 hingga 1007) mendapat diskaun dari harga biasa.
Customer_ID tidak mengenal pasti satu baris. Dalam dua baris, Customer_ID adalah 1001. Dalam dua baris lain, Customer_ID adalah 1010. Gabungan kolom Pelanggan_ID dan lajur Produk unik mengenal pasti baris. Kedua-dua lajur ini bersama-sama adalah kunci komposit.
Jika bukan untuk fakta bahawa sesetengah pelanggan layak mendapat diskaun dan yang lain tidak, jadual tidak akan berada dalam bentuk normal kedua, kerana Harga (atribut bukan kunci) hanya akan bergantung kepada bahagian kunci (Produk). Oleh kerana sesetengah pelanggan layak mendapat diskaun, Harga bergantung pada Pelanggan dan Produk Pelanggan, dan jadualnya berada dalam bentuk biasa kedua.
Ketiga bentuk biasa
Jadual dalam bentuk normal kedua adalah sangat terdedah kepada beberapa jenis anomali pengubahsuaian - khususnya, yang berasal dari dependensi transitif.
A ketergantungan transitif berlaku apabila satu atribut bergantung kepada atribut kedua, yang bergantung kepada atribut ketiga. Pemadaman dalam jadual dengan ketergantungan seperti itu boleh menyebabkan kehilangan maklumat yang tidak diingini. Hubungan dalam bentuk normal ketiga adalah hubungan dalam bentuk normal kedua tanpa kebergantungan transitif.
Lihat lagi di meja JUALAN, yang anda tahu berada dalam bentuk pertama yang pertama. Selagi anda menghalang penyertaan untuk membenarkan hanya satu baris untuk setiap Pelanggan_ID, anda mempunyai kunci utama tunggal-atribut, dan jadual dalam bentuk normal kedua. Walau bagaimanapun, jadual masih tertakluk kepada anomali. Bagaimana jika pelanggan 1010 tidak berpuas hati dengan peluntur klorin, sebagai contoh, dan mengembalikan item untuk bayaran balik?
Anda ingin mengeluarkan baris ketiga dari jadual, yang mencatatkan fakta bahawa pelanggan 1010 membeli peluntur klorin. Anda mempunyai masalah: Jika anda mengeluarkan baris itu, anda juga kehilangan hakikat bahawa peluntur klorin mempunyai harga $ 4. Keadaan ini adalah contoh pergantungan transitif. Harga bergantung pada Produk, yang pada gilirannya bergantung pada utama pelanggan Customer_ID.
Memecahkan jadual JUALAN ke dalam dua jadual memecahkan masalah pergantungan transitif. Kedua-dua jadual membentuk pangkalan data yang berada dalam bentuk ketiga yang ketiga.
