2017-03-04 16 views
1

私は、実体としての「学期」との基本的なコースのデータベースを設計しています。ここでは、「季節」(秋、春、夏)と「年」(2015年、2016年、2017年)の2つの属性があります。明確化 - DBMS

私は値FALL16、SPRING16で「Semester_Id」と呼ばれるキーを形成するために、これらの属性を置き換える場合は、FALL17などは、私が第一正規形に違反していますか?

答えて

1

自明では、あなたは彼らが正しいグループに注文しまうような値が2016Fall、2016Springと2016Summerになりたい - と仮定すると年が学年です。

既存の属性を交換する必要はありません。年と学期/季節の組み合わせは、まさに彼らのように完全に良い複合キーを作ります。彼らが意味するところで複合キーを使うのを恐れないでください。

実は、あなたは自分のルックアップテーブルに学期をプッシュし、学期がそれにFKを属性することを検討することがあります。シーズンを独自のエンティティにすると、潜在的に役に立つ拡張が得られます。ルックアップテーブルのデータは、次のようになります。

ID Name Starts 
0 Fall Last week of August 
1 Spring First week after the first Saturday of January 
2 Summer First week of May 

メンテナンスしたいかもしれない季節や学期に関する多くの情報があります。

2

我々は複合属性としてSemester_idを表示すると、それは一つの列に二つのドメインを組み合わせることにより、1NFに違反します。しかし、解釈のない識別子としてのみ使用される場合、正規化された関係で有効な単一のドメインを表します。