数据库设计概述
数据库设计:数据库设计是指对于一个给定的应用环境,设计一个优良的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据处理要求。
数据库设计的基本步骤
数据库设计分6个阶段:
- 需求分析
- 概念结构设计
- 逻辑结构设计
- 物理结构设计
- 数据库实施
- 数据库运行和维护
概念结构设计
将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计;
概念结构设计是数据库设计的关键。
概念模型
概念模型的主要特点是:能真实、充分地反应现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求,是现实世界的一个真实模型;易于理解、修改。
概念模型是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定;描述概念模型的有力工具是E-R模型。
E-R模型
P.P.S.Chen提出的E-R模型是用E-R图来描述现实世界的概念模型。
实体之间的联系
两个实体型之间的联系:一对一(1:1)、一对多(1:n)、多对多(m:n),用图形表示如下:
两个以上的实体型之间的联系:也存在一对一,一对多和多对多的联系。例如,对于课程、教师与参考书三个实体型,如果一门课程可以有若干个教师讲授,使用若干本参考书,而每一个教师只讲授一门课程,每一本参考书只供一门课程使用,则课程与教师、参考书之间的联系是一对多的,如下图:
单个实体型内的联系:同一个实体集内各实体之间也存在一对一、一对多和多对多的联系。例如,职工实体型内部具有领导与被领导的联系,即某一职工(干部)“领导”若干名职工,而一个职工仅被另外一个职工直接领导,因此这是一对多的联系,如下图:
把参与联系的实体型的数目称为联系的度,两个实体型之间的联系度为2,也称为二元联系;三个实体型之间的联系度为3,也称为 三元联系;N个实体型之间的联系度为N,也称为N元联系。
E-R图
E-R图提供了表示实体型、属性和联系的方法。
实体型用矩形表示,矩形框内写明实体名。属性用椭圆形表示,并用无向边将其与相应的实体型连接起来。联系用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1∶1,1∶n 或m∶n),如果联系具有属性,也要用无向边与该联系连接起来。
扩展的E-R模型
ISA联系
有的实体型是某个实体型的子类型,这种父类- 子类联系称为ISA联系,表示“is a”语义。用三角形表示。
ISA联系的性质:子类继承了父类的所有属性,子类也可以有自己的属性。
分类属性:分类属性是父实体型的一个属性,分类属性的值把父实体型中的实体分派到子实体型中。上图中分类属性是“学生类别”。
不相交约束与可重叠约束:不相交约束,描述父类中的一个实体不能同时属于多个子类中的实体集。即一个父类中的实体最多属于一个子类实体集,用ISA联系符号三角形的一个叉号“X”来表示。可重叠约束,父类中的一个实体能同时属于多个子类中的实体集。子类符号中没有叉号表示是可重叠的。
完备性约束:描述父类中的一个实体是否必须是某一个子类中的实体,如果是,则叫做完全特化,否则叫做部分特化;完全特化用父类到子类的双线连接来表示,部分特化用父类到子类的单线连接来表示。
基数约束
是对实体之间一对一、一对多、多对多联系的细化。控制最少次数和最多次数,约束用一个数对 min..max 表示,0≤min≤max。例如,0..1,1..3,1..*,其中 *代表无穷大。min=1的约束叫做强制参与约束,即被施加基数约束的实体型中的每个实体都要参与联系;min=0的约束叫做非强制参与约束,被施加基数约束的实体型中的实体可以出现在联系中,也可以不出现在联系中。
Part-of联系
描述某个实体型是另外一个实体型的一部分。
Part-of联系可以分为两种情况:
- 非独占的Part-of联系,简称非独占联系:整体实体如果被破坏,另一部分实体仍然可以独立存在。用非强制参与约束表示非独占的Part-of联系。
- 独占的Part-of联系,简称独占联系:整体实体如果被破坏,部分实体不能存在。用弱实体类型和识别联系来表示独占联系。
如果一个实体型的存在依赖于其它实体型的存在,则这个实体型叫做弱实体型,否则叫做强实体型。E-R图中用双矩形表示弱实体型,用双菱型表示识别联系。
逻辑结构设计
逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用的DBMS产品所支持的逻辑结构。
E-R图向关系模型的转换
实体型的转换:一个实体型转换为一个关系模式。关系模式的属性就是实体的属性,关系模式的码就是实体的码。
实体型间的1:1联系:可以转换为一个独立的关系模式,也可以与相连的任意一端对应的关系模式合并。
实体型间的1:n联系:转换为一个独立的关系模式,也可以与n端对应的关系模式合并。
实体型间的m:n联系:与该联系相连的各实体的码以及联系本身的属性转换为关系属性,各实体码的组成关系的码。
参考文献:数据库系统概论-第5版[王珊,萨师煊]