【发布时间】:2017-10-14 09:32:21
【问题描述】:
我正在为数据库项目建模一所学校,并且我有一个多对多的关系,将一个 course 表与其自身连接以建立先决条件。该表(简化)如下所示:
CREATE TABLE course_prereqs (
course_id INT NOT NULL,
prereq_id INT NOT NULL,
PRIMARY KEY (course_id, prereq_id),
FOREIGN KEY (course_id) REFERENCES course (course_id),
FOREIGN KEY (prereq_id) REFERENCES course (course_id)
)
我想知道的是最简单但也是最用户友好的方法,您可以防止 (1, 2), and (2, 1) 成为表中的先决条件,因为它会导致循环依赖。
我在想类似的东西
-- in a trigger though since MySQL doesn't have check
CHECK (course_id < prereq_id)
虽然这样可行,但我觉得最终用户始终确保course_id 始终小于prereq_id 可能会很烦人。
有没有更好的方法,还是我高估了必须确保course_id 总是更小的不便?
【问题讨论】:
标签: mysql sql database database-design many-to-many