1

在此处输入图像描述

这是 ER 图,必须在实现所有约束的 SQL 代码中创建表。我制作了表格并尝试通过外键实现所有关系,我只是想确认这些表格是否正确。

1)部门表:

create table department(dpet_id number primary key, dept_name varchar2(15)
not null);

2)分支表:

create table branch(branch_id varchar2(5) primary number, electives varchar2(10),
dept_id number references department(dept_id));

3) 课程表:

create table course(course_id number primary key, course_name varchar2(10)
not null,branch_id varchar2(5) references branch(branch_id));

4)学生表:

create table student(stud_id number primary key, stud_name varchar2(30) not null,
branch_id varchar2(5) references branch(branch_id);

5) 申请人表:

create table applicant(app_id number primary key, stud_id number constraint fk
references student(stud_id) constraint stu_unq unique);

6) 申请者_分支表:

create table applicant_branch(app_id number references applicant(app_id),
branch_id varchar2(5) references branch(branch_id));

这些表是否符合 ER 图?

4

2 回答 2

2

您的 ER 图描绘了主题的概念模型。这是一件好事。

为了将来参考,在概念模型和 SQL 创建脚本之间有两个中间步骤。它们是逻辑设计和物理设计。

逻辑设计将概念模型变为逻辑模型,并增加了一些功能。逻辑模型是关系模型(在大多数情况下)。一个附加功能是外键。如果您选择规范化,这是您规范化的地方。

物理设计将逻辑模型变为物理模型,并增加了一些特性。物理模型用 SQL 术语表示;比如表格、行和列。它是特定于 DBMS 的。它添加了索引等功能和许多 DBMS 特定功能,例如表空间映射等。在这个阶段,您需要考虑数据量、预期流量和吞吐量方面的考虑。

最后,将物理模型转换为创建脚本。

对于非常小的问题,这些阶段可以合并为一个阶段,就像您所做的那样。对于非常大的项目,最好将它们分开。

于 2013-08-08T11:21:15.750 回答
1

我唯一可以补充的是,学生和部门之间没有关系。这取决于你的场景,你想要与否。但我认为应该是。这样您就可以区分特定部门的学生。

另外,您正在制作图片,例如分支将归入部门是这种情况吗?

于 2013-08-07T12:27:28.173 回答