将 ER-Diagram 转换为 SQL
Convert ER-Diagram to SQL
我无法将 ER-Diagram 转换为有效的 SQL 代码。
看下面ER-Diagram
如何将此 ER-Diagram 翻译成 SQL 代码?我无法指定关系。为关系创建第三个 table 有意义吗?
CREATE TABLE Faculty (
Fac.-Nr INTEGER NOT NULL,
PRIMARY KEY ( Fac.-Nr)
);
CREATE TABLE Prof (
Name VARCHAR(255) NOT NULL,
PRIMARY KEY (Name)
);
我认为我必须使用约束,但我不知道如何正确转换关系。
我希望能够插入以下信息:
|姓名|属于|线索|
|史密斯 | Fac10 | -|
|贝克尔 | Fac10 | Fac10|
|约翰| Fac10 | -|
我是 SQL 的新手,请耐心等待 :)
不胜感激!
是的,您应该创建第三个 table 来保存将指向两个 table 主键作为 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))
你实际上应该在两个 table 中都有一些 ID
列,这应该是主键并且应该在这些列上有 FK。
好吧,我不知道 "converting" 一个 ER 图到 SQL,但是当前的关系可以简单地通过两个 table 来建模:
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
之外,您当然可以添加描述教授的所有属性,这同样适用于 table facs
中的教师属性。但是 profs
中的 facid
和 facs
中的 fpid
这两列充分描述了您在问题中列出的关系。
只要一个教授一次只能属于一个教员,教员只能有一个负责人,你不需要另一个 link-table 连接两者。
我无法将 ER-Diagram 转换为有效的 SQL 代码。
看下面ER-Diagram
如何将此 ER-Diagram 翻译成 SQL 代码?我无法指定关系。为关系创建第三个 table 有意义吗?
CREATE TABLE Faculty (
Fac.-Nr INTEGER NOT NULL,
PRIMARY KEY ( Fac.-Nr)
);
CREATE TABLE Prof (
Name VARCHAR(255) NOT NULL,
PRIMARY KEY (Name)
);
我认为我必须使用约束,但我不知道如何正确转换关系。
我希望能够插入以下信息:
|姓名|属于|线索|
|史密斯 | Fac10 | -|
|贝克尔 | Fac10 | Fac10|
|约翰| Fac10 | -|
我是 SQL 的新手,请耐心等待 :)
不胜感激!
是的,您应该创建第三个 table 来保存将指向两个 table 主键作为 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))
你实际上应该在两个 table 中都有一些 ID
列,这应该是主键并且应该在这些列上有 FK。
好吧,我不知道 "converting" 一个 ER 图到 SQL,但是当前的关系可以简单地通过两个 table 来建模:
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
之外,您当然可以添加描述教授的所有属性,这同样适用于 table facs
中的教师属性。但是 profs
中的 facid
和 facs
中的 fpid
这两列充分描述了您在问题中列出的关系。
只要一个教授一次只能属于一个教员,教员只能有一个负责人,你不需要另一个 link-table 连接两者。