将ER-Diagram转换为SQL

时间:2017-06-28 19:02:38

标签: sql entity-relationship

我将ER-Diagram转换为有效的SQL代码时遇到了麻烦。

请看下面的ER-Diagram

enter image description here

如何将此ER-Diagram转换为SQL代码?我无法指定关系。为关系创建第三个表是否有意义?

CREATE TABLE Faculty (
    Fac.-Nr INTEGER NOT NULL,
    PRIMARY KEY (  Fac.-Nr)
);

CREATE TABLE Prof (
    Name VARCHAR(255) NOT NULL,
    PRIMARY KEY (Name)
);

我认为我必须处理约束,但我不知道如何正确转换关系。

我希望能够插入以下信息:

|名称|属于|导致|

|史密斯| Fac10 | - |

| Becker | Fac10 | Fac10 |

|约翰| Fac10 | - |

我对SQL很陌生,所以请耐心等待我:)

非常感谢帮助!

2 个答案:

答案 0 :(得分:1)

是的,您应该创建第三个表来保存关系,该关系将指向两个表主键作为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。

答案 1 :(得分:1)

好吧,我不知道将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中的教师属性。但facid中的两列profsfpid中的facs充分描述了您在问题中列出的关系。

只要一个教授一次只能属于一个教师而且教师只能有一个教师,你就不需要另外一个连接这两个教师的链接表。