【发布时间】:2018-04-07 12:53:28
【问题描述】:
我正在开展一个项目,该项目涉及实施学校数据库的简化版本。下面列出了 3 个相关的表格:
create table classes( --A given class
class_code varchar(10) primary key
);
create table class_offerings( --A particular instance of a class
class_code varchar(10),
class_name varchar(128) not null,
semester_code integer,
maximum_capacity integer check (maximum_capacity >= 0),
teacher_name varchar(50) not null, --heavily simplified
primary key (class_code, semester_code),
foreign key (class_code) references classes(class_code)
on delete cascade on update cascade
);
create table prerequisites(
prereq varchar(10),
class_code varchar(10),
semester_code integer,
primary key (class_code, semester_code),
foreign key (class_code) references classes(class_code)
on delete cascade on update cascade,
foreign key (semester_code) references class_offerings(semester_code)
on delete cascade on update cascade,
foreign key (prereq) references classes(class_code)
on delete cascade on update cascade
);
当我尝试创建“先决条件”时,我收到消息“错误:没有唯一约束匹配引用表 class_offerings 的给定键。”虽然确实是我没有将 UNIQUE 约束应用于 term_code,但它是主键的一部分,据我了解,它强制主键中所有元素的唯一组合。如果我错了,我仍然不想将 UNIQUE 应用于学期代码,因为应该允许相同学期代码的多个条目,只要它们不共享相同的 class_code。如何解决此错误?
【问题讨论】:
标签: mysql sql database database-design