将ER图转换为SQL代码

时间:2013-08-07 12:21:12

标签: sql foreign-keys entity-relationship create-table

enter image description here

这是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)Applicant_branch表:

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

这些表是否符合ER图?

2 个答案:

答案 0 :(得分:2)

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

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

逻辑设计将概念模型更改为逻辑模型,并添加了一些功能。逻辑模型是关系型的(在大多数情况下)。一个附加功能是外键。如果您选择标准化,则可以在此处进行标准化。

物理设计将逻辑模型更改为物理模型,并添加一些功能。物理模型用SQL术语表示;像表,行和列。它是DBMS特定的。它添加了索引和许多DBMS特定功能(如表空间映射等)等功能。在此阶段,您需要考虑数据量,预期流量和吞吐量考虑因素。

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

对于非常小的问题,这些阶段可以折叠成一个阶段,就像你似乎已经完成的那样。对于非常大的项目,最好将它们分开。

答案 1 :(得分:1)

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

此外,您正在制作像分支机构这样的图片就是这样吗?