Menormalkan Pangkalan Data Anda: Borang Normal Pertama

Kedua-dua peraturan mudah ini akan membantu menormalkan pangkalan data anda

Formula Pertama Pertama (1NF) menetapkan peraturan asas untuk pangkalan data yang teratur:

Apakah yang dimaksudkan dengan peraturan ini apabila merenungkan reka bentuk praktikal pangkalan data? Ia sebenarnya agak mudah.

1. Menghapuskan Duplikasi

Peraturan pertama menentukan bahawa kita tidak perlu menduplikasi data dalam baris yang sama pada jadual. Dalam komuniti pangkalan data, konsep ini dirujuk sebagai atomicity of a table. Jadual yang mematuhi peraturan ini dikatakan atom. Mari kita meneroka prinsip ini dengan contoh klasik: jadual dalam pangkalan data sumber manusia yang menyimpan hubungan pengurus-bawahan. Untuk tujuan contoh kami, kami akan mengenakan peraturan perniagaan yang setiap pengurus mungkin mempunyai satu atau lebih bawahan sementara setiap orang bawahan hanya mempunyai satu pengurus.

Secara intuitif, apabila membuat senarai atau spreadsheet untuk menjejaki maklumat ini, kami mungkin membuat jadual dengan medan berikut:

Walau bagaimanapun, ingatlah peraturan pertama yang dikenakan oleh 1NF: Hilangkan lajur duplikat dari jadual yang sama. Jelas, lajur Subordinat1-Subordinat4 adalah pendua. Ambil masa dan perhatikan masalah yang dibangkitkan oleh senario ini. Jika pengurus hanya mempunyai satu bawahan, lajur Subordinat2-Subordinat4 hanya dibuang ruang simpanan (komoditi pangkalan data yang berharga). Lagipun, bayangkan kes di mana pengurus sudah mempunyai 4 orang bawahan - apa yang berlaku jika dia mengambil pekerja lain? Keseluruhan struktur meja memerlukan pengubahsuaian.

Pada ketika ini, idea terang yang kedua lazimnya berlaku kepada para pengguna pangkalan data: Kami tidak mahu mempunyai lebih daripada satu lajur dan kami ingin membenarkan jumlah penyimpanan data yang fleksibel. Mari kita cuba seperti ini:

Dan bidang Bawahan akan mengandungi beberapa entri dalam bentuk "Mary, Bill, Joe."

Penyelesaian ini lebih dekat, tetapi ia juga kurang daripada tanda. Lajur subordinat masih duplikat dan bukan atom. Apa yang berlaku apabila kita perlu menambah atau mengeluarkan bawahan? Kita perlu membaca dan menulis keseluruhan kandungan jadual. Itu bukan masalah besar dalam situasi ini, tetapi bagaimana jika seorang pengurus mempunyai seratus pekerja? Juga, ia merumitkan proses memilih data dari pangkalan data pada pertanyaan masa depan.

Berikut adalah jadual yang memenuhi peraturan pertama 1NF:

Dalam kes ini, setiap bawahan mempunyai kemasukan tunggal, tetapi pengurus mungkin mempunyai beberapa entri.

2. Kenal pasti Kunci Utama

Sekarang, bagaimana dengan peraturan kedua: mengenal pasti setiap baris dengan lajur yang unik atau set lajur ( kunci primer )? Anda mungkin melihat jadual di atas dan mencadangkan penggunaan ruang bawahan sebagai kunci utama. Malah, kolum bawahan adalah calon yang baik untuk kunci utama kerana fakta bahawa peraturan perniagaan kami menetapkan bahawa setiap bawahan hanya mempunyai satu pengurus. Walau bagaimanapun, data yang telah kami pilih untuk disimpan di dalam jadual kami menjadikan ini penyelesaian kurang ideal. Apa yang berlaku jika kita menyewa pekerja lain bernama Jim? Bagaimanakah kita menyimpan hubungan bawahan pengurusnya dalam pangkalan data?

Lebih baik menggunakan pengenal pasti yang unik (seperti ID pekerja) sebagai kunci utama . Jadual terakhir kami akan kelihatan seperti ini:

Sekarang, jadual kami berada dalam bentuk pertama yang pertama! Jika anda ingin meneruskan pembelajaran tentang normalisasi, baca artikel lain dalam siri ini: