1

私は3つのテーブルを持っています:

Persons(PersonID, PersonName, PersonAge, PersonType)

Students(StudentID (fk to Persons.PersonID), StudentRank, StudentClassID, ...)

Teachers(TeacherID (fk to Persons.PersonID), TeacherSalary, ...)

人は、生徒または教師の 1 つのタイプのみです。したがって、タイプ (学生または教師) を持つすべての人をリストしたい場合は、Persons テーブルの PersonType を確認し、対応するテーブル (学生、教師) と結合する必要がありますか? それは十分ですか?誰でも私にもっと良い解決策を教えてもらえますか?

編集:コンボを使用します:PHP + MySQL。

更新: テーブルの構造。

4

3 に答える 3

0

find_in_set2 つのテーブルを結合する必要はありません。

select p.Personname 
from students s,persons p
where find_in_set(s.Studentid,p.Personid)
于 2013-10-22T09:07:31.890 に答える
0

役立つテクニックが 2 つあります。

現在の設計は、クラス テーブルの継承の多くを反映しています。共有主キーによって得られるものは、学生と個人の間、および教師と個人の間の関係の 1 対 1 の性質を強化する能力です。教師と生徒の間に相互に排他的な関係を強制するものではありません。

2 つの結合と 1 つのユニオンを使用して、これら 3 つのテーブルを 1 つのビューに結合して、このすべてのデータを取得し、適用できない場所に NULL を含めることができます。

于 2013-10-22T12:03:24.247 に答える