1

私は現在、システム分析のクラスに参加しています。正規化の使用法をよりよく理解したいと思っています。学生ID、名前、電話番号、および専攻を含むテーブルで作業していた場合の3NFの場合。学生の名前と電話番号の両方が ID でわかるので、学生 ID と専攻だけを使用する必要があります。私はこれを正しく理解していますか?

4

1 に答える 1

7

これで始めましょう。. .

student_id  name                 phone            major
--
1           Darcy Sailer         000-111-2345     Mathematics
2           Lonnie Seman         000-111-3456     Fine Art
3           Mathew Bradburn      000-112-9086     Education
4           Edwina Loflin        000-111-2345     Psychology
5           Clinton Rosebrook    000-111-1000     Chemistry
6           Lonnie Seman         000-113-2975     Chemistry

唯一の候補キーは、student_id です。つまり、名前は一意ではなく、電話番号も一意ではなく、専攻も一意ではありません。

テーブルが 3NF になるためには、これらの要件を満たす必要があります。

  • 2NFです。
  • すべての非プライム属性は、すべての候補キーに直接依存しています。(推移的な依存関係はありません。)

このテーブルは 2NF です。(証明は読者に委ねます。) 非素数属性が 3 つあります。すべてが唯一の候補キーに直接依存しています。つまり、

  • 名前は電話番号を決定しません。
  • 名前はメジャーを決定しません。
  • 電話はメジャーを決定しません。
  • 電話は名前を決定しません。
  • メジャーは名前を決定しません。
  • メジャーは電話を決定しません。

つまり3NFです。

2 つの列の間の依存関係を識別する際に、次の質問に答えようとしています。

たとえば、「name」と「major」の間に依存関係があるかどうかを判断するには、「'name' の値が 1 つ与えられた場合、'major' の値は常に 1 つしか見つからないのですか?」と尋ねます。そして答えは「いいえ」です。「ロニー・セマン」という名前を考えると、美術と化学という 2 つの専攻があります。

現実の世界では、1 人が複数の電話番号と複数の専攻を持っていてもかまいません。1 人につき 1 つの電話番号のみを記録するか、1 人につき 1 つの主要な番号のみを記録するかを選択することは、データベース設計の重要な部分ですが、正規化とは関係ありません。

現実の世界では、代表的なサンプル データから始めることはほとんどありません。データベース設計者は、次のようなことを知っていることが期待されています

  • 2 人が同じ名前を持つことができます。
  • 2 人が同じ電話番号を持つことができます。
  • 2 人が同じ専攻を持つことができます。
  • 1 人で 2 つ以上の電話番号を持つことができます。
  • 1 人で 2 つの専攻を持つことができます。
于 2011-12-07T05:55:51.300 に答える