この質問は明らかに宿題です。私は教授の言うことを理解できず、選挙中に彼が何を言ったのかわかりません。次の表を最初に 1NF、次に 2NF、次に 3NF に正規化する手順を段階的に作成する必要があります。
ヘルプと指示に感謝します。
この質問は明らかに宿題です。私は教授の言うことを理解できず、選挙中に彼が何を言ったのかわかりません。次の表を最初に 1NF、次に 2NF、次に 3NF に正規化する手順を段階的に作成する必要があります。
ヘルプと指示に感謝します。
オーケー、すべて正しく覚えているといいのですが、始めましょう...
それらを非常に短くするために(そしてそれが何であるかについての最初のアイデアを与えるために、あまり正確ではありません):
列 " state
" には "WA, Washington" のような値があります。略語と名前の 2 つの値であるため、NF1 に違反しています。
解決策: NF1 を満たすには、2 つの列と を作成しSTATE_ABBREVIATION
ますSTATE_NAME
。
車のモデルの国際的な名前を表す、次の 4 つの列を持つテーブルがあるとします。
COUNTRY_ID
(数値、主キー)CAR_MODEL_ID
(数値、主キー)COUNTRY_NAME
(varchar)CAR_MODEL_NAME
(varchar)テーブルには、次の 2 つのデータ行が含まれる場合があります。
つまり、モデル「フォックス」はアメリカでは「フォックス」と呼ばれていますが、ドイツでは同じ車のモデルが「ポロ」と呼ばれています (実際にそうであったかどうかは覚えていません)。
国名は車のモデル ID と国 ID の両方に依存せず、国 ID のみに依存するため、NF2 に違反しています。
解決策: NF2 を満たすには、列(主キー) とCOUNTRY_NAME
を含む別のテーブル "COUNTRY" に移動します。国名を含む結果セットを取得するには、JOIN を使用して 2 つのテーブルを接続する必要があります。COUNTRY_ID
COUNTRY_NAME
州の気候条件を表す次の列を含むテーブルがあるとします。
STATE_ID
(varchar、主キー)CLIME_ID
(外部キー、「砂漠」、「熱帯雨林」などの気候帯の ID)IS_MOSTLY_DRY
(ブール値)IS_MOSTLY_DRY は CLIME_ID (少なくともそれを仮定しましょう) のみに依存し、STATE_ID (主キー) には依存しないため、NF3 に違反しています。
解決策: NF3 を満たすには、列MOSTLY_DRY
を気候帯テーブルに入れます。
演習で与えられた実際のテーブルに関するいくつかの考えを次に示します。
主キー列に挑戦することなく、上記の NF ルールを適用します。しかし、後で説明するように、これらは実際には意味がありません。
したがって、NF2 または NF3 に違反するすべての列を削除すると、主キー (EMP_ID および DEPT_CD) のみが残ります。残りの部分は、与えられたビジネス ルールに違反しています。この構造では、従業員が複数の部門で同時に働くことができます。
遠くから見直してみましょう。データ モデルは、従業員、部門、スキル、およびこれらのエンティティ間の関係に関するものです。それを正規化すると、従業員用に 1 つのテーブル (外部キーとして DEPT_CD を含む)、部門用に 1 つ、スキル用に 1 つ、従業員とスキルの関係用に 1 つ、「スキル」を保持するテーブルが作成されます。 EMP_ID と SKILL_CD の各タプルについて (私の先生は後者を「連想エンティティ」と呼んでいたでしょう)。
テーブルの最初の 2 行を
見て、そのテーブルで「PK」とタグ付けされている列を見て
、「PK」が「主キー」を表すと仮定して
、これらの 2 つの列に表示される値を調べます。 2行、
私はあなたの教授に、データベースの教育から完全に抜け出し、彼がその主題について適切に教育を受けるまで戻ってこないように勧めます.
問題文自体に絶望的に矛盾した情報が含まれているため、この演習を真剣に受け止めることはできません。
(結果として、この質問に対する「良い」または「正しい」答えなどはまったくないことに注意してください!!!)
別の単純化された答えが出てきます。
3NF リレーショナル テーブルでは、すべての非キー値は、キー、キー全体、およびキー以外の何ものによっても決定されません (だから Codd を助けて ;))。
1NF: 鍵。これは、キー値と名前付き列を指定した場合、行と列の交点に最大で 1 つの値が存在することを意味します。コンマで区切られた一連の値のような複数値は許可されません。キーと列名だけでは値に直接アクセスできないためです。
2NF: キー全体。キーの一部ではない列がキー列の適切なサブセットによって決定される場合、2NF に違反しています。
3NF: そして鍵だけ。列が非キー列のセットによって決定される場合、3NF に違反しています。