0

BCNF のリレーショナル テーブルが

Student(StudentNum, NRIC, DateOfBirth, BookTitle)

• 学生番号 (StudentNum) は、国民登録 ID カード (NRIC) と学生の生年月日 (DateOfBirth) を一意に識別します。• NRIC は生徒の生年月日 (DateOfBirth) を決定します。

私の分析によると、その関係は 2NF にあります。そしてBCNFに変更後はこんな感じ

Student(StudentNum, NRIC, BookTitle)
StudentDetails(NRIC, DateOfBirth)

私の質問;

  1. 変更前 2NF
  2. 変更後BCNF

私は正しいですか。

4

2 に答える 2

0

正規化の背後にある考え方は、テーブルに冗長性を与えるように見える可能性のある列に対して追加のテーブルを作成することにより、行の冗長性を可能な限り排除することです。

たとえば、次のテーブルから始めるとします: Student(StudentNum, NRIC, DateOfBirth, BookTitle) この場合の一意の列は StudentNum と NRIC です。他の 2 つのフィールドはそうではありません。同じタイトルの本を借りたかもしれません。そこから、データの冗長性に陥らないように正規化する必要があることがわかります。たとえば、同じ学生が 100 冊の異なる本を借りた場合はどうなるでしょうか?

すべてが 1 つのテーブルにある場合、冗長な (反復的な) データが大量に発生する可能性があります。

このガイドを 5 つの正規形http://www.bkent.net/Doc/simple5.htmで確認することをお勧めします。

アップデート:

すべてが単一のテーブル内にあることを考えると、最初の関係は第 1 正規形と見なされる方がよいと思います。あなたの結果の関係は 2NF だと思います。別の生徒が同じ本を借りた場合はどうなるでしょうか? これにより、Student テーブルで繰り返しが発生する可能性があります。

私たちがこれをよりよく分析できるように、あなたの関係を構成するシナリオに関するより多くの情報を提供する必要があると思います. ビジネスルールに大きく依存します。

于 2012-11-24T08:22:55.657 に答える
0

いいえ、生徒は 2NF ではなく 1NF にいます。

あなたはから始めています

Student(StudentNum, NRIC, DateOfBirth, BookTitle)

そしてこれらの依存関係。

StudentNum->NRIC
StudentNum->DateOfBirth
NRIC->DateOfBirth

関係が 2NF にあるのは、次の場合のみです。

  • それは 1NF にあり、
  • すべての非プライム属性は、候補キーの一部だけでなく、すべての候補キー全体依存しています。

したがって、最初の仕事は Student リレーションの候補キーを決定することです。Student リレーションには候補キーが 1 つだけあり、それは {StudentNum, BookTitle} です。

教科書には、関係のすべての候補キーを決定するためのアルゴリズムが少なくとも 1 つ含まれている必要があります。

NRIC は StudentNum に依存しており、StudentNum は候補キーではない (候補キーの一部に過ぎない) ため、Student の関係は 2NF にはありません。変更して修正します

Student(StudentNum, NRIC, DateOfBirth, BookTitle)

これには、StudentNum に対する部分的なキーの依存関係を排除することによって行います。1

  • 学生 ( StudentNum、 NRIC 、 DateOfBirth )
  • StudentBooks ( StudentNum, BookTitle )

StudentBooks には非プライム属性はまったくありません。現在は6NFです。学生は 2NF にいますが、まだ 3NF または BCNF にはなっていません。なぜなのかご存知ですか?

その理由を知っていたようです。確かに推移的な依存関係があります: StudentNum->NRIC および NRIC->DateOfBirth です。このような推移的な依存関係を修正します。

  • 学生 ( StudentNum , NRIC)
  • NRIC ( NRIC、生年月日)
  • StudentBooks ( StudentNum, BookTitle )

これら 3 つの関係はすべて 6NF にあります。


  1. この分解は少し奇妙に見えるかもしれません。これは、教科書の例では通常、関係や属性に意味のある名前が使用されていないためです。リレーションは通常、R{ABCD}、R 1 {ABC}、R 2 {AD} などと名付けられます。

    • 新しい関係 { StudentNum , NRIC, DateOfBirth} を投影して、部分的なキーの依存関係を排除し、
    • 「Student」という名前が { StudentNum, BookTitle }からなる関係をもはや識別していないことを観察し、
    • 「Student」という名前を元の関係から新しい投影された関係に移動し、
    • 元の関係の新しい名前、StudentBooks を考え出します。
于 2012-11-24T12:18:39.070 に答える