我想制作3个实体,类,主题和考试,最好的方法是什么,应该是我的主表和主键,我将在其他两个表中用作外国ky
答案 0 :(得分:0)
问题是通用的。我认为这是从学校的角度来看的。鉴于:
你会有
哪个会产生这个SQL存根:
CREATE TABLE Subject (
id INTEGER NOT NULL,
name VARCHAR(50),
PRIMARY KEY(id)
);
CREATE TABLE Class (
id INTEGER NOT NULL,
-- some other defining columns here
id_subject INTEGER,
PRIMARY KEY(id),
FOREIGN KEY(id_subject) REFERENCES Subject(id)
);
你需要同样的考试。作为旁注,您可能希望将外键置于Class nullable中,因为某些类可能没有主题(例如空闲时间?缺少教师?),但您肯定希望有一个非空约束关于考试中的外键。
由于这看起来像是一项任务,我不会详细介绍......
编辑:如果您的“类”实体意味着学校,您会将Class和Subject与一个附加表联系起来,因为这种关系变为N x M:
CREATE TABLE Subject_Class (
id_class INTEGER NOT NULL,
id_subject INTEGER NOT NULL,
PRIMARY KEY(id_class, id_subject),
FOREIGN KEY (id_class) REFERENCES Class(id),
FOREIGN KEY (id_subject) REFERENCES Subject(id)
);
并且您将从Class表中删除外键。