Video: C$50 Finance 2025
Banyak masalah - dipanggil pengubahsuaian anomali - boleh melumpuhkan pangkalan data jika anda tidak menstruktur Pangkalan data SQL dengan betul. Untuk mengelakkan masalah ini, anda boleh menormalkan struktur pangkalan data. Normalisasi biasanya melibatkan pembahagian satu jadual pangkalan data menjadi dua jadual yang lebih mudah.
Pengubahsuaian anomali dinamakan begitu kerana ia dijana oleh penambahan, perubahan kepada, atau pemadaman data dari jadual pangkalan data.
Misalkan, sebagai contoh, syarikat anda menjual produk pembersihan rumah, dan anda mengecaj semua pelanggan dengan harga yang sama untuk setiap produk. Jadual jualan menjejaki segala-galanya untuk anda. Anggapkan pelanggan 1001 bergerak dan tidak lagi pelanggan. Anda tidak peduli apa yang dia beli pada masa lalu, kerana dia tidak akan membeli apa-apa daripada anda lagi. Anda mahu memadamkan barisnya dari jadual.
Jika anda berbuat demikian, bagaimanapun, anda tidak hanya kehilangan hakikat bahawa pelanggan 1001 telah membeli detergen pakaian; anda juga kehilangan hakikat bahawa kos pencuci pakaian berharga $ 12. Keadaan ini dipanggil anomali penghapusan. Dalam menghapuskan satu fakta (pelanggan 1001 membeli detergen pakaian), anda secara tidak sengaja memadam fakta lain (kos pencuci pakaian itu bernilai $ 12).
Anda boleh menggunakan jadual yang sama untuk menggambarkan anomali penyisipan. Contohnya, katakan anda mahu menambah penghalau kayu ke barisan produk anda pada harga $ 2. Anda tidak boleh menambah data ini ke jadual JUALAN sehingga pelanggan membeli kayu bakar.
Masalah dengan jadual JUALAN adalah bahawa jadual ini mempunyai lebih daripada satu perkara: Ini tidak hanya membedakan produk yang dibeli oleh pelanggan, tetapi juga kos produk. Untuk menghapuskan anomali, anda perlu membahagikan jadual JUALAN ke dalam dua jadual, masing-masing berurusan dengan hanya satu tema atau idea.
-
CUST_PURCH, yang menangani idea tunggal pembelian pelanggan.
-
PROD_PRICE, yang berkaitan dengan idea tunggal harga produk.
Anda kini boleh memadamkan baris untuk pelanggan 1001 dari CUST_PURCH tanpa kehilangan fakta bahawa kos pencuci pakaian berharga $ 12. (Kos detergen pakaian kini disimpan dalam PROD_PRICE.) Anda juga boleh menambah penasihat kayu kepada PROD_PRICE sama ada atau tidak sesiapa telah membeli produk tersebut. Maklumat pembelian disimpan di tempat lain, dalam jadual CUST_PURCH.
Proses memecah jadual ke beberapa jadual, setiap satu mempunyai tema tunggal, dipanggil normalisasi. Operasi normalisasi yang menyelesaikan satu masalah mungkin tidak menjejaskan masalah lain.Anda mungkin perlu melaksanakan beberapa operasi normalisasi berturut-turut untuk mengurangkan setiap jadual yang dihasilkan kepada tema tunggal.
Setiap jadual pangkalan data harus berurusan dengan satu - dan hanya satu - tema utama. Kadang-kadang (seperti yang anda mungkin meneka) menentukan bahawa jadual benar-benar berurusan dengan dua atau lebih tema boleh menjadi sukar.
Anda boleh mengklasifikasikan jadual mengikut jenis anomali ubahsuaian yang mereka subjek. Dalam kertas 1970, E. F. Codd mengenal pasti tiga sumber anomali pengubahsuaian dan membentuk bentuk biasa pertama, kedua dan ketiga (1NF, 2NF, 3NF) sebagai remedi terhadap jenis-jenis anomali. Pada tahun-tahun berikutnya, Codd dan lain-lain menemui jenis anomali tambahan dan menetapkan bentuk biasa baru untuk menangani mereka.
Borang normal Boyce-Codd (BCNF), bentuk normal keempat (4NF), dan bentuk normal kelima (5NF) masing-masing memberikan tahap perlindungan yang lebih tinggi terhadap anomali pengubahsuaian. Walau bagaimanapun, sehingga tahun 1981, ada kertas, yang ditulis oleh Ronald Fagin, menerangkan bentuk normal utama domain atau DK / NF. Menggunakan borang biasa yang terakhir ini membolehkan anda menjamin bahawa jadual bebas daripada pengubahsuaian anomali.
Bentuk normal bersarang dalam erti kata bahawa jadual yang dalam 2NF secara automatik juga dalam 1NF. Begitu juga, jadual dalam 3NF secara automatik dalam 2NF, dan sebagainya. Bagi kebanyakan aplikasi praktikal, meletakkan pangkalan data dalam 3NF cukup untuk memastikan integriti yang tinggi. Untuk memastikan integriti sepenuhnya, anda mesti meletakkan pangkalan data ke dalam DK / NF.
Selepas anda menormalkan pangkalan data sebanyak mungkin, anda mungkin mahu membuat penyahpilihan tertentu untuk meningkatkan prestasi. Sekiranya anda berbuat demikian, ketahui jenis-jenis anomali yang mungkin menjadi mungkin.
