-2
我想使3实体,类,主题和考试,什么是最好的办法做到这一点,什么应该是我的主要表和主键,我将作为外国ky在其他两个表中如何使用主键概念关联3个表
我想使3实体,类,主题和考试,什么是最好的办法做到这一点,什么应该是我的主要表和主键,我将作为外国ky在其他两个表中如何使用主键概念关联3个表
问题是方式通用的。我认为这是从学校的角度出发的。鉴于:
你必须
将产生此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)
);
你需要参加考试一样。作为一个方面说明,您可能希望将外键放在类为空的位置,因为可能没有某个类的主题(例如空闲时间?缺少老师?),但是您肯定会希望有一个非空约束考试中的外键。
因为这看起来像一个任务,我不会进入详细内容...
编辑:在这种情况下你的“类”实体,意味着你将涉及类和对象有一个额外的表学年,因为这个关系变为N×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表中删除外键。
谢谢,但我的问题是假设为一个班级,把它作为第8类,他们有5个科目英语,数学,生命科学,物理科学,历史。那么我怎么能与id相关?第5课的意思是我必须逐个添加每个主题? –
在这种情况下,您会将Class和Subject与一个附加表关联起来,因为此关系变为N x M:编辑我的答案。 –