实验七 数据库设计
一、实验目的
1.掌握数据库设计基本方法及数据库设计工具
二、实验内容和要求
1.使用E-R图描述概念模型
2.将E-R模型转换成关系模型
3.生成创建数据库模式的SQL语句
要求:掌握数据库设计基本步骤,包括数据库概念结构设计、逻辑结构设计,物理结构设计,数据库模式SQL语句生成。能够使用数据库设计工具进行数据库设计。
三、实验过程
考虑某个IT公司的数据库信息:
①部门具有部门编号、部门名称、办公地点等属性;
②部门员工具有员工编号、姓名、级别等属性,员工只在一个部门工作;
③每个部门有唯一一个部门员工作为部门经理;
④实习生具有实习编号、姓名、年龄等属性,只在一个部门实习;
⑤项目具有项目编号、项目名称、开始日期、结束日期等属性;
⑥每个项目由一名员工负责,由多名员工、实习生参与;
⑦一名员工只负责一个项目,可以参与多个项目,在每个项目具有工作时间比;
⑧每个实习生只参与一个项目。
完成以下任务:
(1)画出E-R图 (powerdesigner、ERWin、visio、亿图、workbench)
(2)将E-R图转换为关系模型(包括关系名、属性名、码和完整性约束条件)
关系模型为:
部门(编号,名称,办公地点,经理编号),部门编号为主键,部门的经理编号参照员工的编号;
员工(编号,姓名,级别,部门编号),员工编号为主键,员工的部门编号参照部门的编号;
实习生(编号,姓名,年龄,部门编号),实习生编号为主键,实习生的部门编号参照部门的编号;
项目(编号,名称,开始日期,结束日期,负责人编号),项目编号为主键,项目的负责人编号参照员工的编号;
实习参与(实习生编号,项目编号),实习生编号、项目编号分别参照实习生的编号、项目的编号;
员工参与(员工编号,项目编号,时间比),员工编号、项目编号分别参照员工的编号、项目的编号,且一个员工的所有时间比相加不超过100%。`
(3)生成创建数据库的SQL语句(数据库、表、属性等名称自拟)
#创建部门表
CREATE TABLE bumen
(bno CHAR(9) PRIMARY KEY,
bname CHAR(9),
address CHAR(50),
jno CHAR(9)
);
#创建员工表
CREATE TABLE yuangong
(yno CHAR(9) PRIMARY KEY,
yname CHAR(9),
age int,
bno char(9),
FOREIGN KEY(bno) REFERENCES bumen(bno)
);
ALTER TABLE bumen
ADD CONSTRAINT c1 FOREIGN KEY(jno) REFERENCES yuangong(yno);
#创建实习生表
CREATE TABLE shixi
(sno CHAR(9) PRIMARY KEY,
sname CHAR(9),
age int,
bno char(9),
FOREIGN KEY(bno) REFERENCES bumen(bno)
);
#创建项目表
CREATE TABLE xiangmu
(xno CHAR(9) PRIMARY KEY,
xname CHAR(50),
btime datetime,
ftime datetime,
fno char(9),
FOREIGN KEY(fno) REFERENCES yuangong(yno)
);
#实习参与
CREATE TABLE scanyu
(sno CHAR(9),
xno char(9),
FOREIGN KEY(sno) REFERENCES shixi(sno),
FOREIGN KEY(xno) REFERENCES xiangmu(xno)
);
#员工参与
CREATE TABLE ycanyu
(yno CHAR(9),
xno char(9),
sjb DOUBLE,
FOREIGN KEY(yno) REFERENCES yuangong(yno),
FOREIGN KEY(xno) REFERENCES xiangmu(xno)
);
四、实验总结
1、E-R图由实体、属性、关系三部分构成。
2、利用E-R图转化为关系模式时,具有相同码的关系模式可以合并。
3、部门(bumen)表中包含员工(yuangong)表的外键,员工表中包含部门表的外键,在建表时,如果把外键约束都加上,那么先建立哪个表都会报错。解决方法可以先建立一个不加外键约束的表,等到另一个表建立后,再用add constraint 添加该外键约束。