数据库设计
数据库设计的概念
数据库设计是指利用现有的数据库管理系统针对具体的应用对象构建适合的数据库模式,建立数据库及其应用系统,使之能够有效地收集、存储、操作和管理数据,满足企业中各类用户的应用需求。
数据库设计的步骤
1、需求分析
2、概念结构设计
3、逻辑结构设计
4、模型优化
5、物理结构设计
6、数据库实现
7、数据库运行及维护
需求分析
1、需求分析的任务:信息需求、处理需求、安全性及完整性需求。
2、需求分析的内容:业务现状、信息源流、外部要求。
3、需求分析的方法:检查文档、面谈、问卷调查、观察业务的运转等。
4、需求分析的结果;需求分析文档(数据流图、数据字典,...)
概念结构设计
概念结构设计将需求分析得到的用户需求抽象为信息结构即概念层数据模型;它是整个数据库系统设计的关键。
设计策略:自底向上、自顶向下、由里向外、混合策略
设计方法:E-R模型
E-R模型设计方法
1、实体/Entity:客观存在并可相互区别的事物;可以具体也可以是抽象的概念或联系。
2、实体集/Entity Set:同型实体的集合。
3、实体型/Entity Type:用实体名及其属性名集合来抽象和表示同类实体;实体型是概念的内涵;实体值是概念的实例。
重要:找出实体的同时,也需要确定实体的属性。实体和其属性之间必须满足以下规则:
(1)实体的属性本身不能再有需要描述的性质。
(2)实体和它的属性间必须保持为1:1或n:1的联系。
E-R模型图中,实体及属性的符号表示:

4、联系:是指实体间的相互关联。
5、联系集:同类型联系的集合。
E-R模型图中,联系集的符号表示:

6、联系集的性质:
(1)1对1联系

(2)1对多联系

(3)多对多联系

两个以上不同实体集之间联系的画法:
(1)1:n:m 联系

(2)r:n:m 联系

同一实体集内的二元联系的画法:

E-R图一般步骤:
① 找出问题领域中的实体
② 确定实体的属性
③ 找出实体之间的联系
④ 确定联系的属性
⑤ 确定联系的性质
【例1】在某选课管理系统中需要存储以下信息:
学生:学号、姓名、性别、选修课程
课程:课程号、课程名、学分、任课教师
教师:工号、姓名、职称、讲授课程
有如下业务约定:①学生可根据自己的情况选修课程;②每名学生可同时选修多门课程;③每门课程可由多位教师讲授;④每位教师可讲授多门课程;⑤需要记录每位学生的课程成绩;⑥需要记录每位教师上课的时间地点。

【例2】若某个工厂物资管理部门需要如下信息:
仓库:仓库号、面积、电话号码
零件:零件号、名称、规格、单价、描述
项目:项目号、预算、开工日期
供应商:供应商号、姓名、地址、电话号码、帐号
职工:职工号、姓名、年龄、职称
这些实体联系如下:①一个仓库可以存放多个零件,一种零件可以存放在多个仓库;②一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作;③仓库主任领导若干保管员;④一个供应商可以供给若干个项目多种零件,每个项目可以使用不同供应商供给的多种零件,每种零件可以由不同的供应商供给。

说明:本图略去了属性。同学们在实际绘制E-R模型图的时候,应该准确标出属性。
提示:较为复杂的E-R图可以采用从局部到整体的方法。
逻辑结构设计——关系模型
概念结构设计的结果是E-R模型。但计算机并不能理解E-R模型,因此我们需要将E-R模型做进一步的处理,即转化为计算机可以理解的关系模型。
E-R模型向关系模型转换的规则
1、一个实体集直接转换成为一个关系,实体集的属性即为关系的属性。
2、若实体间的联系是1:1,可以在两个实体集转换成的两个关系模式中的任意一个关系模式的属性中,加入另一个关系模式的主码和联系集的属性。
3、若实体间的联系是1:n联系,则在n端实体集转换成的关系模式中,加入1端实体集转换成的关系模式的主码和联系集的属性。
4、若实体间的联系是m:n,则将联系集也转换成关系模式,其属性为两端实体集的主码加上联系集的属性,而主码为两端实体集主码的组合。
5、若三个或三个以上实体集间的一个多元联系集可以转换为一个关系模式;其属性为各端实体集的主码加上联系集的属性,而主码为各端实体集主码的组合。
【例1】请转换E-R模型为关系模型。(题目接上一节)

按规则转换得到的关系模型如下:
学生(学号,姓名,性别)
课程(课程号,课程名,学分)
选修(学号,课程号,成绩)
教师(工号,姓名,职称)
讲授(工号,课程号,时间,地点)
【例2】请转换E-R模型为关系模型。(题目接上一节)

按规则转换得到的关系模型如下:
仓库(仓库号,电话号码,面积,职工号)
职工(职工号,姓名,年龄,职称,仓库号)
零件(零件号,名称,规格,单价,描述)
库存(零件号,仓库号)
供应商(供应商号,姓名,地址,电话,账号)
项目(项目号,预算,开工日期)
供应(供应商号,项目号,零件号)
【练习】某医院计算机管理系统中需要以下信息:
科室:科名、科地址、科电话、医生
病房:病房号、床位数、所属科室
医生:姓名、职称、所属科室、年龄、工作证号
病人:病历号、姓名、性别、诊断医生、病房
其中一个科室有多个病房、多个医生;一个病房只能属于一个科室;一个医生只属于一个科室,但可以负责多个病人的诊治;一个病人的主治医生只有一个,且只能住在所属科室的病房中。请设计该系统的E-R图,并将其转换为关系模型。
E-R模型如下:

关系模型如下:
科室(科室号,科名,电话,地址)
医生(工作证号,姓名,职称,年龄,科室号)
病房(病房号,床位数,科室号)
病人(病历号,姓名,性别,病床号,主治医生号)