逻辑数据库设计:是将概念数据模型转化为逻辑数据模型的过程。最终的数据库必须满足用户对于数据共享、灵活性和易于访问等方面的需求。
关系数据模型
1)数据结构:数据以具有行和列的表的方式组织。
2)数据操纵:利用功能强大的操纵(使用SQL语言)来操纵存储在关系中的数据。
3)数据完整性:在操纵数据时,包含相应的机制来定义业务规则以维护数据的完整性。
关系数据结构
关系的性质
关系是二维的数据表,但并不是所有的表都是关系,关系具有一些非关系表所不具有的性质。如下:
1)数据库内的每个关系(表)的名字是惟一的
2)任意行的任一列是原子的(单值)。在关系内,不允许有多值属性
3)每一行是惟一的,同一关系内的任意两行都不能相同
4)表中的每个属性(列)的名字是惟一的
5)关系中列的顺序(从左到右)是无关的。交换关系的任意两列不影响关系的意义和使用
6)关系中的行的顺序(从上到下)是无关的。和列的情况一样,关系中的行也可以交换或是以任意顺序存储
完整性约束
关系数据模型包含有多种类型的约束(业务规则),它们用于维护数据库内数据的正确性和完整性。最主要的几种完整性约束包括域约束、实体完整性、参照完整性和动作断言。
良构关系:直观的说,良构关系应该有最小的冗余,并可以让用户在表中插入、修改和删除表中的行,且不出现错误和不一致的情况。如果不是良构关系,则关系中数据的冗余可能导致错误或不一致的情况(称为异常)。有三种可能的异常:插入异常、删除异常和修改异常。
将EER图转化为关系:通过使用一组定义好的规则,可以方便地将E-R图转化(映射)为关系。具体映射步骤见书本。
规范化
定义:将含有异常的关系分解为更小的,良构的关系的过程。
步骤:分为几个阶段来实现和理解,每一个阶段都对应有一个范式。
范式:根据函数依赖(或是属性间联系)对关系应用某些简单准则后所得到的关系的状态。
函数依赖:存在于两个属性或两个属性集之间的约束。
候选键:可以惟一标识关系中某一行的属性或属性集。(主键是候选键中的一个)
基本范式:
1)第一范式:不含多值属性。
2)第二范式:满足第一范式,且任意非键属性都完全函数依赖于主键。(不是依赖于部分主键)
3)第三范式:满足第二范式,且不含传递依赖。(传递依赖是在两个(或多个)非键属性间的函数依赖)