0

私は現在、今後のデータベース管理試験に向けて修正を行っています。

サンプルの従業員データベースの非正規化について質問があります。質問は次のとおりです。スキーマも以下に示します。

質問: 「employees」データベースを使用して、任意の 2 つ (またはそれ以上) のテーブルを非正規化して、2NF のテーブルを作成します。テーブルが 3NF ではなく 2NF である理由を正確に説明する必要があります。

スキーマ:

ここに画像の説明を入力

私の答え:

「給与」テーブルを「従業員」テーブルに非正規化します。正規化するには、{salary, from_date, to_date} を employees テーブルに移動し、「salaries」テーブルを削除します。注: from_date は、'employees' の主キーの一部ではなくなりました。

「employees」テーブルは 3NF ではなくなり、現在は 2NF になっています。これは、テーブルに「推移的な依存関係」が導入されたためです。

推移的な依存関係は次のとおりです。「給与」は「from_date」に依存します。「from_date」は主キーのコンポーネントではないため、推移的で部分的ではありません。部分的な依存関係では、決定要因は主キーの一部である必要があります。


基本的にこの質問では、推移的な依存関係を作成する必要があります。このスキーマは少しまばらに見えます。また、日付が主キーの一部であるという事実に少しがっかりしています。

上記の依存関係が間違っている場合、誰かが私に指摘してくれませんか?

別の可能な解決策は、'departments' を 'dept_emp' に非正規化することです。「dept_name」を「dept_emp」に追加できます。しかし、このテーブルの SQL を見ると、「dept_no」が主キーの一部であることがわかります。

これに関するガイダンスは大歓迎です。

4

0 に答える 0