2011-11-12 6 views
0

私が構築している学生情報システムに固有のエンティティ作成に関する質問があります。私はPersonテーブル(ID ..)を作成しました。私は自分の生徒、親参照をどのように処理できるかを調べようとしています。 PersonテーブルをFK関係で参照する2つの別々のテーブル(Student、Parent)を作成することをお勧めしますか? Person(姓、名、SSN ...)の詳細はすべてPersonテーブルに設定されていますが、親と学生の間には違いがあります。データベース構造:他のテーブルによって参照されるPersonテーブルの作成

答えて

0

親と学生の間には根本的な違いがあるため、2つのテーブルが望ましい解決策です。こうすることで、学生と親をつなぐ関係を簡単に作成できます。

もう1つの方法は、特定のレコードに適用されない列にNULL値を使用することです。しかし、関係が常に学生と親を結びつけることを確実にすることはより難しいでしょう。

+0

2つの別々のテーブル(Parent、Student)を作成すると、合計3つのテーブル(Personテーブルを含む)があります。どのようにしてこれらの各テーブルに重複したレコードが作成されるのを避けるのですか?私のアプリケーションは生徒を作成して親に接続する必要がありますが、私は自分の質問について明確にすべきでした。私は人テーブルを必要とすることさえ求めていましたか? – Warz

+0

personテーブルは必要ありません。技術的に親と生徒は人のサブクラスになることができます。しかし、この例ではほとんど役に立たない余分な作業がたくさんあります。私は間違いなく人のテーブルから正しい(学生または親の)テーブルにエントリを移行し、人のテーブルをドロップします。 –

+0

私のアプリケーションの役割が増えているため、私はPersonテーブルを使用しました。私はしかしあなたが言及したように簡単な関係と接続のための(学生&親)テーブルを作成することに終わった。ご協力いただきありがとうございます。 – Warz

0

私はそれが清潔な解決策であることにケーシー・ロビンソンと同意します。

しかし、あなたはすでに他のコードで使用されている人口Personテーブルを持っている場合...要するに、あなたはここで、その後Personテーブルを変更することはできません、私が示唆しているものです:

テーブルを作成します(studentParent )には、両方の外部キー(student_idとparent_id)があります。 studentParent.student_id =学生のPerson.idとstudentParent.parent_id =親のPerson.id。

この方法で、Personテーブルを変更する必要はありません。そして、親、学生の関係を作成することができます。

0

詳細を知らないうちにPersonとStudentの2つのテーブルで十分であるようです。 student_idとParent_idのようなStudentテーブルの2つのカラムを持ち、それぞれPersonテーブルのPerson_idへのFKです。これは、すべての人ではなく、親である学生だけを知る必要があると仮定しています。また、学生と親がともに人であると仮定します。

関連する問題