Pendahuluan
Definisi bentuk normal (yang dari presentasi “Normalisasi lebih lanjut dari Data Base Relational Model” pada tahun 1971 dikenal sebagai bentuk normal pertama ) dan yang definisi paradigma relasional itu sendiri diterbitkan pada tahun 1970 dalam makalah ilmiah yang disediakan kuat landasan bagi praktek administrasi database, yaitu, “A Relational Model data untuk besar Shared data Bank” (RM untuk singkatnya) yang dibuat oleh Dr EF Codd , yang merupakan penerima Turing Award dan yang berwenang sehubungan dengan kerangka relasional.
Ya, ada banyak penjelasan, interpretasi, eksposisi, penyimpangan, dan pendapat tentang teks Dr. Codd, tetapi saya pribadi lebih suka menempel pada sumber aslinya dan saya sangat menyarankan agar Anda menganalisisnya sendiri sehingga Anda dapat menarik kesimpulan sendiri.
Saya tentu saja tidak memahami RM secara keseluruhan, tetapi apa yang saya mengerti tentang hal itu memungkinkan saya menghargai keunggulan, visi, niat dan ruang lingkupnya, dan meskipun beberapa dekade kemudian orang dapat mencatat bahwa ia memiliki beberapa ketidaktepatan sedikit, mereka tidak mengurangi, dengan cara apa pun, kejeniusan dan keanggunannya. Di bidangnya, RM telah bertahan dalam ujian waktu dengan cara yang unik, dan tetap tak tertandingi.
Tindakan yang menekankan ketidaktepatan yang disebutkan di atas adalah — menggunakan istilah amal — tidak adil karena, jika dilihat dari jarak yang cukup jauh, bahan mani ini membutuhkan beberapa penyempurnaan dan perluasan, ya, tetapi bagian utama dari karya ini sangat solid dari sangat konsepsi (dan, memang, Dr. Codd membuat sebagian besar — jika tidak semua — dari penyempurnaan dan perluasan itu sendiri).
Saya terus membaca ulang RM terus-menerus untuk memperkuat pemahaman saya tentang sumber pengetahuan yang luar biasa ini (dan harga saya akan RM terus bertambah di setiap membaca ulang); tujuannya adalah untuk berdiri di atas bahu raksasa.
Hubungan dan tabel
Penting untuk dicatat bahwa karena hubungan adalah sumber daya abstrak , Dr. Codd membayangkan utilitas untuk mewakili mereka dalam bentuk tabel (ia awalnya menggunakan istilah "representasi array" tetapi kemudian menggunakan "tabel" atau "r-tabel"), sehingga para pengguna, perancang, dan administrator dari basis data relasional (RDB) dapat mendekati mereka dengan cara yang lebih akrab atau konkret . Oleh karena itu, dalam konteks implementasi RDB, valid untuk menggunakan tabel sebagai singkatan untuk hubungan, selama tabel tersebut merupakan hubungan aktual. Fitur ini —sudah jelas — cukup signifikan karena sebelum mengevaluasi apakah suatu tabel mewakili relasi yang sesuai dengan bentuk normal pertama (1NF), ia harus mewakili, tepatnya, relasi.
RM secara alami mengandung kualitas-kualitas yang harus dimiliki suatu tabel untuk menentukan apakah suatu tabel sebenarnya menggambarkan suatu relasi, tetapi saya akan menawarkan interpretasi informal dan tidak bersahaja tentang mereka di sini (yang lain, ya!):
- Itu harus memiliki nama (setiap hubungan tertentu dalam struktur database harus dibedakan dari yang lain).
- Setiap barisnya harus menggambarkan tepat satu tupel dari relasi yang bersangkutan.
- The agar baris yang tidak penting sama sekali.
- Setiap kolomnya harus memiliki nama yang mewakili arti tepat satu domain dari relasi yang bersangkutan, dan nama tersebut harus berbeda dari nama-nama sisa kolom tabel (kolom harus dibedakan secara unik dan harus membawa makna yang berbeda dan, ya, peran yang dimainkan oleh pemodel basis data dan pakar bisnis untuk menentukan setiap domain signifikansi dengan akurasi sangat penting)
- The rangka kolom yang tidak memiliki arti.
- Semua barisnya harus memiliki jumlah kolom yang sama.
- Itu harus memiliki setidaknya satu kolom, atau satu kombinasi kolom, yang secara unik mengidentifikasi setiap tupel yang digambarkan melalui baris; dengan cara ini, semua baris harus berbeda (ya, ini menekankan pentingnya memiliki setidaknya satu KUNCI yang dinyatakan, dan ketika ada dua atau lebih KUNCI satu harus didefinisikan sebagai PRIMER berdasarkan alasan pragmatis, sedangkan sisanya dapat dianggap sebagai ALTERNATIF, tetapi ya, sebelum membuat keputusan, masing-masing KUNCI adalah "kandidat" untuk definisi sebagai PRIMER).
Memiliki tabel yang dalam kenyataannya mewakili suatu relasi adalah penting, ketika ia mengalami operasi manipulasi dari suatu relasional, maka hasilnya adalah, sekali lagi, sebuah tabel yang mewakili relasi. Dengan cara ini, perilaku tabel tersebut dapat diprediksi .
Domain atom (kolom)
Pada bagian pertama RM, Dr. Codd menyajikan beberapa sampel hubungan untuk memperkenalkan beberapa konsep; jadi, untuk memahami makna domain atom , mari kita mulai dengan kutipan berikut dari RM yang merinci beberapa poin terkait:
Sejauh ini, kita telah membahas contoh-contoh hubungan yang didefinisikan pada domain sederhana — domain yang elemen-elemennya adalah nilai atom (tidak dapat dikomposasikan). Nilai-nilai nonatomik dapat didiskusikan dalam kerangka relasional. Dengan demikian, beberapa domain mungkin memiliki hubungan sebagai elemen. Hubungan-hubungan ini, pada gilirannya, dapat didefinisikan pada domain yang tidak sederhana, dan sebagainya.
Dengan cara ini, seseorang dapat mengatakan bahwa masing-masing hubungan ekspositori yang disebutkan di atas cocok dengan salah satu dari dua jenis, misalnya jenis A atau jenis B :
Jenis A mengelompokkan hanya relasi (tabel) yang disusun dengan domain (kolom) yang berisi nilai-nilai sederhana secara eksklusif di setiap tupel (baris) mereka, yaitu domain (kolom) tersebut tidak mengandung relasi (tabel) sebagai nilai, yang dalam konteks ini berarti bahwa nilai-nilai itu bersifat atomik karena nilai-nilai itu tidak dapat diuraikan secara berturut-turut ke dalam hubungan baru (tabel). Oleh karena itu, hubungan kelas ini adalah orang-orang yang dinormalisasi , yaitu, mereka mematuhi 1NF, bentuknya diinginkan.
Jenis B secara eksklusif diintegrasikan oleh relasi (tabel) yang memiliki satu atau lebih domain (kolom) yang menyimpan relasi sebagai nilai di setiap tuple (baris) masing-masing, dan yang menandakan bahwa nilai-nilai tersebut nonatomik karena selanjutnya dapat dipecah menjadi relasi baru (Tabel), yaitu, mereka dapat terurai . Dengan demikian, hubungan semacam ini tidak dinormalisasi, yaitu, mereka melanggar 1NF, mereka berada dalam bentuk yang tidak diinginkan.
Normalisasi
Codd memperkenalkan bagian tentang normalisasi dalam RM dengan paragraf berikut:
Suatu relasi yang domainnya semuanya sederhana dapat direpresentasikan dalam penyimpanan oleh array dua dimensi kolom-homogen dari jenis yang dibahas di atas. Beberapa struktur data yang lebih rumit diperlukan untuk hubungan dengan satu atau lebih domain tidak sederhana. Untuk alasan ini (dan yang lainnya dikutip di bawah) kemungkinan menghilangkan domain nonsimple nampaknya perlu diselidiki! Sebenarnya, ada prosedur eliminasi yang sangat sederhana, yang akan kita sebut normalisasi.
Kemudian dia menunjukkan:
Sekelompok hubungan di mana seseorang tidak dinormalisasi (memiliki domain yang berisi hubungan sebagai nilai, yaitu, mereka nonatomik; yaitu, mereka tidak sederhana)
Sekelompok hubungan yang dinormalisasi (yaitu, yang didekomposisi; yaitu, yang hubungan domain bernilai dipecah menjadi yang sederhana yang menandakan bahwa mereka adalah atom)
Dan kemudian dia menjelaskan prosedur untuk mendapatkan hubungan normal dari yang tidak normal.
Dalam hal ini, hubungan yang ia gunakan untuk menggambarkan latihan normalisasi dan deskripsi latihan itu sendiri cukup jelas, dan saya sarankan lagi agar Anda menganalisisnya sendiri (dan saya juga berharap ini mendorong beberapa pembaca untuk terlibat dengan teks).
Secara berturut-turut, ia menunjukkan:
Operasi lebih lanjut dari jenis normalisasi dimungkinkan. Ini tidak dibahas dalam makalah ini.
Dan operasi tersebut, yaitu, bentuk normal kedua dan ketiga (2NF dan 3NF) sebenarnya dirinci dalam "Normalisasi Lebih Lanjut dari Model Relasional Basis Data", dan sebagaimana disebutkan di atas, setelah presentasi (dan kemudian pencetakan dan publikasi) dari makalah ini , bentuk normal aslinya dikenal sebagai bentuk normal pertama.
Seperti yang dapat diamati oleh seorang praktisi, memiliki hubungan yang tidak normal (tabel) memperkenalkan konvolusi (hampir selalu tidak perlu) ke dalam implementasi RDB.
Suatu relasi yang memenuhi 1NF, memudahkan definisi kendala dan operasi manipulasi data yang dapat diimplementasikan dengan menggunakan subbahasa data yang kurang kompleks daripada yang dibutuhkan untuk hubungan (tabel) yang tidak dinormalkan, seperti yang ditunjukkan Dr. Codd dalam baris berikut:
Adopsi model data relasional, seperti dijelaskan di atas, memungkinkan pengembangan subbahasa data universal berdasarkan pada kalkulus predikat terapan. Kalkulus predikat orde pertama cukup jika koleksi hubungan dalam bentuk normal. Bahasa seperti itu akan memberikan tolok ukur kekuatan linguistik untuk semua bahasa data yang diusulkan lainnya, dan itu sendiri akan menjadi kandidat yang kuat untuk menanamkan (dengan modifikasi sintaksis yang sesuai) dalam berbagai bahasa host (pemrograman, perintah-atau berorientasi masalah). [...]
[...]
Keuniversalan dari subbahasa data terletak pada kemampuan deskriptifnya (bukan kemampuan komputasinya).
Kebingungan
Dari sudut pandang saya, bingung telah muncul, karena (a) kelebihan tersebut interpretasi, penjelasan, dll, sekitar 1NF dan para RM sendiri, dan karena (b) upaya lebih lanjut untuk mendefinisikan kembali 1NF bahwa negara yang memiliki hubungan dengan domain yang memiliki nilai yang, pada gilirannya, hubungan mematuhi 1NF selama mereka adalah satu nilai tunggal untuk setiap tupel yang sesuai.
Pandangan saya tentang poin Anda yang lain
Seharusnya tidak ada hubungan antara baris, selain itu mereka sesuai dengan header yang sama.
Saya tidak yakin apakah saya memahami maksud dari pernyataan itu dengan benar tetapi, selain dari menyesuaikan diri dengan header yang sama, harus ada hubungan antara baris (tuple) relasi (tabel) karena masing-masing dari mereka harus menjadi pernyataan tentang suatu kemunculan khusus dari tipe entitas spesifik (didefinisikan dalam konteks konteks bisnis yang diminati) yang harus diwakili oleh relasi (tabel).
Seharusnya juga tidak ada hubungan antara kolom, tapi saya percaya itu adalah subjek dari bentuk normal yang lebih tinggi.
Saya tidak tahu apakah saya benar menafsirkan makna pernyataan itu baik tetapi, pada kenyataannya, dan sesuai dengan tanggapan saya terhadap aspek sebelumnya, harus ada hubungan antara domain (kolom) dari relasi (tabel) juga , itulah sebabnya mengapa itu adalah hubungan (struktur penting dari model relasional dan implementasi RDB yang konkret).
Sebagai contoh, berkaitan dengan hubungan hipotetis (tabel)
Salary (PersonNumber, EffectiveDate, Amount)
tuple (baris)
akan menyampaikan artinya
The Salary payed to the Person identified by PersonNumber x, on EffectiveDate y corresponds to the Amount of z
Oleh karena itu, setiap tupel (baris) Salary
relasi (tabel) harus sesuai dengan struktur pernyataan yang ditunjukkan di atas, dan perbedaannya adalah penggantian nilai domain (kolom) terkait, tetapi harus ada hubungan antara (a) semua Salary
domain (kolom) dan juga antara (b) semua nilai yang terkait dengan masing-masing tupel (baris); hubungan seperti itu sangat diperlukan.
Bentuk normal yang lebih tinggi (2NF dan 3NF) berguna untuk menghilangkan dependensi fungsional antara domain (kolom) dari suatu relasi (tabel), mereka membantu menghindari koneksi yang tidak diinginkan antara domain (kolom), karena koneksi yang tidak diinginkan memungkinkan pengenalan anomali pembaruan . 2NF dan 3NF keduanya membantu untuk menguji kesehatan struktur hubungan (tabel) dalam implementasi RDB tertentu.