我将ER-Diagram转换为有效的SQL代码时遇到了麻烦。
请看下面的ER-Diagram
如何将此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很陌生,所以请耐心等待我:)
非常感谢帮助!
答案 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
中的两列profs
和fpid
中的facs
充分描述了您在问题中列出的关系。
只要一个教授一次只能属于一个教师而且教师只能有一个教师,你就不需要另外一个连接这两个教师的链接表。