Kami telah melihat beberapa aspek untuk menormalkan jadual pangkalan data. Pertama, kita membincangkan prinsip-prinsip asas pengaturcaraan pangkalan data. Kali terakhir, kami meneroka keperluan asas yang ditetapkan oleh bentuk biasa pertama (1NF). Kini, mari meneruskan perjalanan kami dan merangkumi prinsip-prinsip bentuk normal kedua (2NF).
Keperluan Am 2NF
- Keluarkan subset data yang digunakan untuk berbilang baris jadual dan letakkannya dalam jadual berasingan.
- Buat hubungan antara jadual-jadual baru dan pendahulunya melalui penggunaan kunci asing.
Peraturan ini boleh diringkaskan dalam pernyataan mudah: Usaha 2NF untuk mengurangkan jumlah data yang berlebihan dalam jadual dengan mengekstraknya, meletakkannya di dalam jadual baru dan membuat hubungan di antara jadual tersebut.
Mari lihat contoh. Bayangkan kedai dalam talian yang mengekalkan maklumat pelanggan dalam pangkalan data. Mereka mungkin mempunyai satu jadual yang dipanggil Pelanggan dengan elemen berikut:
- CustNum
- Nama pertama
- Nama terakhir
- Alamat
- City
- Negeri
- ZIP
Melihat ringkas pada jadual ini mendedahkan sejumlah kecil data berlebihan. Kami menyimpan "Sea Cliff, NY 11579" dan "Miami, FL 33157" menyerahkan dua kali setiap satu. Sekarang, itu mungkin tidak kelihatan seperti penyimpanan terlalu banyak dalam contoh mudah kita, tetapi bayangkan ruang yang sia-sia jika kita mempunyai beribu-ribu baris dalam jadual kami. Di samping itu, jika kod ZIP untuk Sea Cliff akan berubah, kita perlu membuat perubahan itu di banyak tempat di seluruh pangkalan data.
Dalam struktur pangkalan data yang bersesuaian dengan 2NF, maklumat berlebihan ini diekstrak dan disimpan dalam jadual berasingan. Jadual baru kami (mari kita panggil ZIP) mungkin mempunyai medan berikut:
- ZIP
- City
- Negeri
Sekiranya kita mahu menjadi lebih cekap, kita dapat mengisi jadual ini terlebih dahulu - pejabat pos menyediakan direktori semua kod ZIP yang sah dan hubungan bandar / negara mereka. Sudah tentu, anda menghadapi situasi di mana pangkalan data jenis ini digunakan. Seseorang yang mengambil pesanan mungkin telah meminta kod ZIP anda dahulu dan kemudian mengetahui bandar dan negeri yang anda panggil. Susunan jenis ini mengurangkan kesilapan pengendali dan meningkatkan kecekapan.
Sekarang bahawa kami telah mengalih keluar data pendua daripada jadual Pelanggan, kami telah memenuhi peraturan pertama bentuk normal kedua. Kami masih perlu menggunakan kunci asing untuk mengikat dua jadual bersama. Kami akan menggunakan kod ZIP (kunci primer dari jadual ZIP) untuk mewujudkan hubungan itu. Berikut adalah jadual Pelanggan kami yang baru:
- CustNum
- Nama pertama
- Nama terakhir
- Alamat
- ZIP
Kami kini meminimumkan jumlah maklumat berlebihan yang disimpan dalam pangkalan data dan struktur kami berada dalam bentuk biasa kedua.