1

リレーショナル モデルに次の関係 (テーブル) があります

Person
  person_id, first_name, last_name, address

Student
  person_id, matr_nr

Teacher
  person_id, salary

Lecture
  lecture_id, lect_name, lect_description

Attendees
  lecture_id, person_id, date

Student と Teacher の機能的な依存関係について疑問に思っています。

これらの表は第 3 正規形を尊重していますか? これらのテーブルの主キーはどれですか?

4

4 に答える 4

3

「テーブル継承」(大まかに) や結合テーブルなどの概念を使用して、次のように設定します。

 Person
  person_id, first_name, last_name, address

Student
  student_id, person_id, matr_nr

Teacher
  teacher_id, person_id, salary

Lecture
  lecture_id, teacher_id, lect_name, lect_description, date

Attendees
  lecture_id, student_id

Student テーブルと Teacher テーブルは Person から "継承" され、Attendees テーブルは Lecture テーブルと Student の間の Join テーブルです (Teacher_id は、誰がクラスを教えているかを指定するために Lecture テーブルで使用されます。また、Join テーブルのベスト プラクティスにより、テーブルは実際には Lecture_Student という名前になります。または類似)

代替設計: (クラスの複数の教師を許可します)

Person
person_id, first_name, last_name, address

Student
student_id, person_id, matr_nr

Teacher
teacher_id, person_id, salary

Lecture
lecture_id, lect_name, lect_description, date

Lecture_Student
lecture_id, student_id

Lecture_Teacher
lecture_id, teacher_id
于 2010-06-10T17:24:51.317 に答える
0

「これらの表は第3正規形を尊重していますか?」

その質問は、キーとは何か、機能依存性の完全なセットとは何かを教えてくれた場合にのみ答えられます。

それがなければ、誰かが与える答えは、回答者側のゼロ以外の量の当て推量の結果である可能性があり、その当て推量があなたのビジネスの現実に対応するという保証はありません。

そうは言っても、あなたは出席者を調べるかもしれません。そこに何か腐ったものがある可能性が高いです。

(ねえ、あなたは自分がスプーンで食べられたくないと主張しました。)

于 2010-06-10T19:13:38.383 に答える
0

それは間違いなく3NFではありません。上記の問題の単純な正規化された設計(person_idが教師と生徒の両方を一意に識別し、講義ごとに1人の教師がいると仮定)は次のようになります。

Person
  person_id (PK), first_name, last_name, address, Student_matr_nr, Teacher_salary

Lecture
  lecture_id (PK), teacher_person_id (FK), lect_name, lect_description

Attendees
  lecture_id (PK), student_person_id (PK), date

互いに同じキーを持つリレーションは同じリレーションです。

于 2010-06-11T10:46:20.650 に答える
0

私たちが知る限り、それは 3NF 正規化 (キー、キー全体、およびキーのみ) だと思いますが、問題のドメインの問題を解決できない可能性があります。

主キーは _id 列になります - 出席者を除きます。両方の _id 列になります - しかし、これは異なる日付に同じ講義に出席することに対応しません (または、技術的には異なる Lecture_id でしょうか?) 私が構築したクラススケジューリングシステムでは、クラスにセクションがありましたが、問題のドメインこれは、あなたが与えたものよりもはるかに大きくなる可能性があります。

学生と教師の問題はすでに提起されています - 両方とも出席者であり、あなたが知っているのはそれだけです. すべての教師が教えている可能性があります.

これは、最初にドメインモデリングの問題であり、次に正規化の問題だと思います...

于 2010-06-10T17:15:32.850 に答える