在教师和学生表中使用约束
Posted
技术标签:
【中文标题】在教师和学生表中使用约束【英文标题】:Using constraint in table of teacher and students 【发布时间】:2017-10-09 12:49:38 【问题描述】:例如,我有 3 个表:教师、学生和人员。
拥有teacher_id 和person_id 的教师,
拥有 student_id 和 person_id 的学生,
拥有 person_id 的人和一些关于他的信息。
当同一个人是老师和学生时,我应该如何使用约束来避免这种情况。我知道如何以简单的方式使用约束,例如限制日期或其他整数值。但是在这里我不知道如何连接和约束它们。
【问题讨论】:
@jarlh 这不是重点,我无法理解这个概念 我没有看到任何关系映射问题。如果一个人都是其中之一,则基本上相同的外键 person_id 出现在两个不同的表中(即:学生和教师)。 【参考方案1】:如果你想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
更新
在创建索引时在 CASE 语句中使用 WHERE 子句:
CREATE UNIQUE INDEX index_person ON index_table(
CASE WHEN student_id != teacher_id
THEN person_id
ELSE NULL
END
);
【讨论】:
感谢您的回答。但这不是从表中选择。我想使用我在问题中描述的设置创建数据库。以上是关于在教师和学生表中使用约束的主要内容,如果未能解决你的问题,请参考以下文章