我在将ER-Diagram转换为有效的SQL代码时遇到了问题。
请看下面的ER图

如何将此ER图转换为SQL代码?我在指定关系时遇到了麻烦。只为关系创建第三个表有意义吗?
CREATE TABLE Faculty (
Fac.-Nr INTEGER NOT NULL,
PRIMARY KEY ( Fac.-Nr)
);
CREATE TABLE Prof (
Name VARCHAR(255) NOT NULL,
PRIMARY KEY (Name)
);我认为我必须处理约束,但我不知道如何正确地转换关系。
我希望能够插入以下信息:
名称|归属于|leads
|Smith | Fac10 |Smith| -|
Becker| Fac10| Fac10
|John | Fac10 | -|
我是SQL的新手,所以请耐心等待:)
如果您能帮忙,我们将不胜感激!
发布于 2017-06-29 03:09:12
是的,您应该创建第三个表来保存该关系,该关系将指向两个表主键作为FOREIGN KEY约束。就像这样
create table ProfFaculti (
name VARCHAR(255) NOT NULL,
Nr INTEGER NOT NULL,
primary key(name,Nr),
foreign key(name) references Prof(name),
foreign key(Nr) references Faculti(Nr))您实际上应该在两个表中都有一些ID列,这应该是主键,并且应该对这些列使用FK。
发布于 2017-06-29 03:25:17
好吧,我不知道如何将ER图“转换”成SQL,但当前的关系可以通过简单地拥有两个表来建模:
create table profs ( pid int primary key, pname nvarchar(128), facid int );
create table facs ( fid int primary key, fname nvarchar(128), fpid int );当然,除了pname之外,您还可以添加描述教授的所有属性,这同样适用于表facs中的教师属性。但profs中的facid和facs中的fpid这两列充分描述了您在问题中列出的关系。
只要一位教授在同一时间只能属于一个教员,而且教员只能有一个负责人,你就不需要另一个链接表来连接这两个人。
https://stackoverflow.com/questions/44810596
复制相似问题