首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将ER图转换为SQL

将ER图转换为SQL
EN

Stack Overflow用户
提问于 2017-06-29 03:02:38
回答 2查看 7.3K关注 0票数 2

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

请看下面的ER图

如何将此ER图转换为SQL代码?我在指定关系时遇到了麻烦。只为关系创建第三个表有意义吗?

代码语言:javascript
复制
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的新手,所以请耐心等待:)

如果您能帮忙,我们将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-29 03:09:12

是的,您应该创建第三个表来保存该关系,该关系将指向两个表主键作为FOREIGN KEY约束。就像这样

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2017-06-29 03:25:17

好吧,我不知道如何将ER图“转换”成SQL,但当前的关系可以通过简单地拥有两个表来建模:

代码语言:javascript
复制
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中的facidfacs中的fpid这两列充分描述了您在问题中列出的关系。

只要一位教授在同一时间只能属于一个教员,而且教员只能有一个负责人,你就不需要另一个链接表来连接这两个人。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44810596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档