Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将ER图转换为SQL代码_Sql_Foreign Keys_Entity Relationship_Create Table - Fatal编程技术网

将ER图转换为SQL代码

将ER图转换为SQL代码,sql,foreign-keys,entity-relationship,create-table,Sql,Foreign Keys,Entity Relationship,Create Table,这是ER图,对于该图,必须用实现所有约束的SQL代码生成表。我制作了表,并尝试通过外键实现所有关系,我只是想确认一下,这些表是否正确 1) 部门表: create table department(dpet_id number primary key, dept_name varchar2(15) not null); create table student(stud_id number primary key, stud_name varchar2(30) not null, branch

这是ER图,对于该图,必须用实现所有约束的SQL代码生成表。我制作了表,并尝试通过外键实现所有关系,我只是想确认一下,这些表是否正确

1) 部门表:

create table department(dpet_id number primary key, dept_name varchar2(15)
not null);
create table student(stud_id number primary key, stud_name varchar2(30) not null,
branch_id varchar2(5) references branch(branch_id);
2) 分支表:

create table branch(branch_id varchar2(5) primary number, electives varchar2(10),
dept_id number references department(dept_id));
create table applicant_branch(app_id number references applicant(app_id),
branch_id varchar2(5) references branch(branch_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 department(dpet_id number primary key, dept_name varchar2(15)
not null);
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 branch(branch_id varchar2(5) primary number, electives varchar2(10),
dept_id number references department(dept_id));
create table applicant_branch(app_id number references applicant(app_id),
branch_id varchar2(5) references branch(branch_id));

这些表格符合ER图表吗?

我唯一能总结的是,学生和系之间没有关系。这取决于你的情况,你想要还是不想要。但我认为应该是这样。这样你就可以区分专业系的学生了


此外,您还制作了一张图片,如branch将归入部门。是这样吗?

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

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

逻辑设计将概念模型更改为逻辑模型,并添加一些功能。逻辑模型是关系型的(在大多数情况下)。一个新增功能是外键。如果您选择标准化,这就是标准化的地方

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

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


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

是的,在这种情况下,分行属于部门。其他都好吗?好的。剩下的一切都很好。学生决定部门,部门决定部门。这是一种间接关系。@DanBracuk,是的,我是在Oracle 11g中这样做的。请不要交叉发帖:我已经有一段时间没有创建Oracle表了,但是您的语法看起来是错误的。你试过运行这些吗?顺便说一句,为什么分支id是varchar2而不是数字?创建表的正确语法可在中找到。对于分支,我建议使用一个数字主键和一个单独的B1列等。如果需要,请在其上放置一个唯一的contstraint。最后,虽然您的代码或多或少反映了图表中的内容,但您的图表可能无法满足现实世界的需求。如果一个学生可以从多个分支学习多个课程,你需要仔细考虑。@DanBracuk语法正确-除了(3)小错误;第一个表中的输入错误(
dpet\u id
vs
dept\u id
在第一个表中),第四个表中缺少括号,第二个表中的
primary number
vs.
primary key