Saya melakukan diskusi yang menarik dengan desainer database lain tentang normalisasi. Dalam contoh ini, kami memiliki tabel GameTitles dan setiap catatan harus berisi tahun di mana game tersebut dirilis. Dia mengatakan 2NF mengamanatkan bahwa semuanya harus dinormalisasi, jadi, agar sesuai, bidang tahun harus dipecah menjadi tabel ReleaseYears dengan kunci primer sendiri yang dirujuk oleh tabel GameTitles. Saya mengatakan itu harus tetap sebagai bidang di tabel GameTitles itu sendiri.
Argumen saya untuk ini adalah bahwa satu tahun hanyalah nilai numerik non-primitif yang sifatnya statis (yaitu, 2011 akan selalu 2011). Karena ini, ia berfungsi sebagai pengidentifikasi sendiri dan tidak perlu referensi karena itu adalah apa adanya. Ini juga memperkenalkan pemeliharaan tambahan karena Anda sekarang harus menambahkan tahun baru ke tabel hanya untuk referensi saja. Jika Anda mengisi ulang tabel dengan rentang tahun yang luas maka Anda memiliki catatan tambahan yang berpotensi tidak memiliki referensi sama sekali. Ini juga meningkatkan ukuran basis data karena Anda sekarang memiliki tabel tambahan, catatan overhead, dan kunci utama tambahan untuk tahun itu sendiri. Jika Anda menyimpan tahun sebagai bidang di tabel GameTitles, Anda menghilangkan semua pemeliharaan dan overhead tambahan ini.
Pikiran tentang ini?
sunting: Dimaksudkan untuk memposting ini di StackOverflow. Dapatkah seseorang memilih untuk menghapus ini atau menandai untuk diperhatikan?