他のデータベース設計者と正規化について興味深い議論をしています。この例では、GameTitlesテーブルがあり、各レコードにはゲームがリリースされた年が含まれている必要があります。彼は、2NFはすべてを正規化することを義務付けているので、準拠するには、GameTitlesテーブルによって参照される独自のプライマリキーを持つYearYフィールドをReleaseYearsテーブルに分割する必要があると言います。GameTitlesテーブル自体のフィールドとして残す必要があると言います。
これに対する私の主張は、年はその性質上静的な単なる非プリミティブ数値であるということです(つまり、2011は常に2011です)。このため、独自の識別子として機能し、それが何であるかを参照する必要はありません。また、テーブルを参照するためだけに新しい年をテーブルに追加する必要があるため、追加のメンテナンスも導入されます。テーブルに長い年数を事前に入力すると、それらへの参照をまったく持たない可能性のある追加のレコードがあります。これにより、余分なテーブル、レコードのオーバーヘッド、および年自体の追加の主キーがあるため、データベースサイズも増加します。GameTitlesテーブルのフィールドとして年を保持すると、この追加のメンテナンスとオーバーヘッドがすべてなくなります。
これについての考え?
編集: StackOverflowでこれを投稿することを意味します。誰かがこれを削除するか、注意を喚起するために投票できますか?