データベース構造:他のテーブルによって参照されるPersonテーブルの作成

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

0
追加された
ビュー: 1

3 答え

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

0
追加された

ケーシー・ロビンソン氏には、そのクリーンな解決策に同意します。

しかし、あなたがすでに他のコードで使用されているPersonされたPersonテーブルを持っていれば...あなたはPersonテーブルを変更することはできません。

両方の外部キー(student_idとparent_id)を持つテーブル(studentParent)を作成します。 studentParent.student_id =学生のPerson.idとstudentParent.parent_id =親のPerson.id。

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

0
追加された

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

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

0
追加された
私は別の2つのテーブル(親、学生)を作成する場合、私は合計3つのテーブル(人テーブルを含む)があります。どのようにしてこれらの各テーブルに重複したレコードが作成されるのを避けるのですか?私のアプリケーションは生徒を作成して親に接続する必要がありますが、私は自分の質問について明確にすべきでした。私は人テーブルを必要とすることさえ求めていましたか?
追加された 著者 Warz,
私は、アプリケーションで増加する役割の数のためにPersonテーブルを使用しました。私はしかしあなたが言及したように簡単な関係と接続のための(学生&親)テーブルを作成することに終わった。ご協力いただきありがとうございます。
追加された 著者 Warz,
personテーブルは必要ありません。技術的に親と生徒は人のサブクラスになることができます。しかし、この例ではほとんど役に立たない余分な作業がたくさんあります。私は間違いなく人のテーブルから正しい(学生または親の)テーブルにエントリを移行し、人のテーブルをドロップします。
追加された 著者 Casey Robinson,