全部博文(252)
分类:
2012-05-05 22:00:43
原文地址:数据库基础(二)--数据模型 作者:yourtommy
数据模型的概念
能表示实体类型及实体间联系的模型称为“数据模型”。
数据模型分为两类:概念数据模型、辑数据模型和物理数据模型。
概念数据模型(Conceptual Data Model)贴近于现实世界,它独立于计算机系统,完全不涉及信息在计算机中的表示,只是用来描述某个特定组织所关心的信息结构。
最常用的概念数据模型是E-R(Entity-Relationship)模型,即实体-联系模型。它的数据描述有:
实体:客观存在,可以互相区别的事物。
实体集:性质相同的同类实体的集合。
属性:实体的特性。
实体标识符。
联系:实体之间的相互联系。
ER模型可以用ER图来表示,它看起来如下:
ER图有三个基本成分:矩形框,用于表示实体类型(考虑问题的对象);菱形框,用于表示联系类型;椭圆形框,用于表示实体和联系类型的属性,实体的主键属性里文字下方应该有下划线。从上图可以看到实体和联系都可以有属性。一般说来,ER图里实体都是名词,而联系都是动词。
ER图的优点有:简单、容易理解,真实反映用户的需求;与计算机无关,用户容易接受。
与一个联系有关的实体集个数被称为元数。一个联系可以是一元联系、二元联系或多元联系。上图展示的联系就是二元联系。根据实体参与的数量,二元联系又可分为一对一(1:1,乘客和座位)、一对多(1:N,车间和工人)和多对多(M:N,学生和课程)。上表中的联系上m和n表示多对多的关系。一元联系的一个例子是零件的组合关系,一个零件可以用若干子零件组成。
属性的分类
根据属性的可分性,属性有基本属性和复合属性。比如地址可以包含邮编、街道、门牌号,它是一个复合属性。
根据属性的值的数量,属性有单值属性和多值属性。比如一个人的姓名是一个单值属性,而他的网名是多值属性。多值属性在ER图里用双线椭圆表示。
此外,还有导出属性(派生属性),它通过具有相互信赖的属性推导出来,比如一个学生的平均成绩。导出属性在ER图里用虚线椭圆表示。
注意属性的值可以是空值。
存在依赖(Existence Dependency):如果实体x的存在依赖于实体y的存在,则称x存在依赖于y。y称作支配实体,而x称作从属实体(弱实体)。弱实体主键的一部分或全部从被依赖实体获得。如果y被删除,那么x也要被删除。从属实体的集合便称为弱实体集。弱实体在ER图里用双线矩形表示。比如某单位的职工子女信息,如果职工不在该单位了,其子女信息也没有意义了,所以职工子女信息是一个弱实体。
逻辑数据模型(Logical Data Model)贴近于计算机上的实现,是用户从数据库看到的模型,是具体DBMS所支持的数据模型。此模型既要面向用户,又要面向系统,主要用于DBMS的实现。逻辑模型有层次模型、网状模型和关系模型。
层次模型:用树形结构表示实体类型及实体间联系的数据模型,盛行于20世纪70年代。缺点是只能表示1:N的关系,且查询和操作很复杂。
网状模型:用有向图表示实体类型及实体间联系的数据模型,盛行于70年代至80年代中期。它的特点是记录之间联系通过指针实现,M:N也容易实现,查询效率较高。缺点是数据结构复杂,编程复杂。
关系模型:用二维表格表示实体集;用关键码而不是用指针导航数据。SQL语言是具有代表性的语言。
物理数据模型(Physical Data Model)面向于计算机物理表示,描述了数据在存储介质上的组织结构,不仅和具体的DBMS有关,还与操作系统和硬件有关。每一种逻辑数据模型在实现时都有起对应的物理数据模型。DBMS为了保证其独立性与可移植性,大部分物理数据模型的实现工作由系统自动完成,而设计者只设计索引、聚集等特殊结构。
ER模式的设计的过程为:设计局部ER模式、设计全局模式和全局ER模式的优化。
局部ER模式设计基于需求分析的结果,1、确定局部结构范围;2、实体定义;3、联系定义;4、属性分配;5、查看是否还有待分析的局部结构,若有则跳到第2步,否则进入全局ER模式设计阶段。
全局ER模式设计基于局部ER模式,1、确定公共实体类型;2、合并两个局部的ER模式;3、检查并消除冲突;4、重复第3步直到不再有冲突;5、检查是否还有未合并的局部ER模式,若有则跳到第2步,否则便完成了ER模式设计。
全局ER模式的优化有:实体类型的合并(一般的可以把1:1联系的两个实体类型合并);冗余属性的消除;冗余联系的消除(通常利用规范化理论中的函数依赖的概念消除冗余联系)。
在ER模式的设计过程中,常常要对ER模型进行种种变换。变换包括:分裂、合并和增加删除。
实体的分裂有水平分裂和垂直分裂。 水平分裂根据应用对象的不同,分成两个具有相同属性的实体,比如书店的书可以水平分裂成“有库存”和“无库存”两个实体,这样方便对两种实体进行不同的操 作。垂直分裂根据属性的使用频率,分成两个属性不同的实体,比如图书有作者、版次、价格等属性,分成包含常用的作者、版次属性的图书和包含不常用的价格属 性的图书。垂直分裂的好处是可以减少每次存取的数据量。
联系的分裂可以细化联系,比如程序员和项目的联系“参与”,可以分裂成“开发”和“维护”。
合并是分裂的逆过程。注意合并的联系类型只能是定义在相同的实体类型上的。
ER模型向关系模型的转换规则
实例类型的转换:将每个实体类型转换成一个关系模型,实体的属性即为关系模型的属性,实体的标识符即为关系模型的键。
二元联系类型的转换:
1:1联系:在由实体转换成的两个关系模式之间选任一个加上一个属性来表示另一个关系模式的键和联系。也就是结果只有两张表,其中一张表里会有外键表示联系。
1:N联系:在N端实体转换成的关系模式里加上1端实体类型的键和联系类型和属性。最终的结果也是两个表,N端的表有外键。
M:N联系:将联系类型转换成关系模式,其属性为两端实体类型的键加上联系类型的属性,而键为两端实体键的组合。最终的结果有三张表,其中一张表专门表示联系,包含另两个表的外键。