Başka bir veritabanı tasarımcısı ile normalizasyon hakkında ilginç bir tartışma yaşıyorum. Bu örnekte, bir GameTitles masamız var ve her kayıt oyunun piyasaya sürüldüğü yılı içermelidir. 2NF'nin her şeyin normalleştirilmesi gerektiğini zorunlu kıldığını, bu nedenle uyumlu olması için yıl alanının GameTitles tablosu tarafından referans verilen kendi birincil anahtarıyla bir ReleaseYears tablosuna bölünmesi gerektiğini söylüyor. GameTitles tablosunda bir alan olarak kalması gerektiğini söylüyorum.
Bunun benim argümanım, bir yılın sadece doğası gereği statik olan ilkel olmayan bir sayısal değer olmasıdır (yani, 2011 her zaman 2011 olacaktır). Bu nedenle, kendi tanımlayıcısı olarak hizmet eder ve olduğu gibi referans olması için hiçbir şeye ihtiyaç duymaz. Bu da ek bakım sağlar, çünkü şimdi sadece referans için tabloya yeni bir yıl eklemeniz gerekir. Tabloyu geniş bir yelpazeyle önceden doldurursanız, potansiyel olarak bunlara referansları olmayacak ekstra kayıtlarınız vardır. Bu, artık ekstra bir tablonuz, kayıt ek yükünüz ve yılın kendisi için ek birincil anahtarınız olduğu için veritabanı boyutunu da artırır. Yılı GameTitles tablosunda bir alan olarak tutarsanız, tüm bu ek bakım ve ek yükü ortadan kaldırmış olursunuz.
Bunun üzerine düşünceler?
edit: Bunu StackOverflow'a göndermek istedim. Birisi bunu silmek için oy kullanabilir veya dikkat çekmek için işaretleyebilir mi?