1
例如,我有3個表格:教師,學生和人員。在教師和學生的表格中使用約束
教師與teacher_id和爲person_id,
學生student_id數據和爲person_id,
與爲person_id人員和一些關於他的信息。
當同一個人是老師和學生時,我應該如何使用約束來避免這種情況。我知道如何以簡單的方式使用約束,如限制日期或其他整數值。但在這裏我不知道如何連接和約束它們。
例如,我有3個表格:教師,學生和人員。在教師和學生的表格中使用約束
教師與teacher_id和爲person_id,
學生student_id數據和爲person_id,
與爲person_id人員和一些關於他的信息。
當同一個人是老師和學生時,我應該如何使用約束來避免這種情況。我知道如何以簡單的方式使用約束,如限制日期或其他整數值。但在這裏我不知道如何連接和約束它們。
如果你想SELECT
所有persons
,但students
誰是teachers
,你可以把你的WHERE
條款:
SELECT *
FROM persons p
INNER JOIN student_id s
ON s.person_id = p.person_id
INNER JOIN teacher_id t
ON t.person_id = p.person_id
WHERE student_id != teacher_id
更新
使用的情況下的WHERE子句聲明,同時創建您的索引:
CREATE UNIQUE INDEX index_person ON index_table(
CASE WHEN student_id != teacher_id
THEN person_id
ELSE NULL
END
);
謝謝你的回答。但這不是關於從表中選擇。我想用我描述的設置來創建數據庫。 –
@jarlh這不是重點,我不明白這個概念 –
我沒有看到任何關係映射問題。如果一個人既是其中之一,基本上同樣的外鍵person_id出現在兩個不同的表格中(即:學生和教師)。 – P3trur0