2. 第一范式测试。
o 如果一个属性在同一个条目上可以有几个不同的
值,则删除这些重复的值。
o 用删除的数据创建一个或多个实体或关系。
3. 第二范式测试。
o 找出带有多个键的实体和关系。 o 删除只依赖于键的一部分的数据。
o 用删除的数据创建一个或多个实体或关系。
4. 第三范式测试。
o 删除依赖于实体或关系中的其他数据,而不依赖
于键的数据。
o 用删除的数据创建一个或多个实体或关系。
数据和标识符
开始进行规范化(对设计进行测试)之前,简单地列出数据,并为每个表确定一个唯一的标识符。标识符可以由一个数据(属性)或几个数据(复合标识符)组成。
标识符是唯一地标识实体中各行的一组属性。例如,Employee 实体的标识符是 Employee ID。Works In 关系的标识符由 Office Code 和 Employee ID 属性组成。
数据库中每个关系的标识符可由该关系所连接的各个实体的标识符组成。在下表中,带有星号的属性为该实体或关系的标识符。
实体或关系 办事处 属性 *办事处代码 办事处地址 电话号码 工作地点为 *办事处代码 *雇员 ID 部门 *部门 ID 部门名称 经理为 *部门 ID *雇员 ID 属于 *部门 ID *雇员 ID 技能 *技能 ID 技能名称 技能说明 擅长于 *技能 ID *雇员 ID 技能级别 掌握日期 雇员 *雇员 ID 姓氏 名字 社保号码 地址 电话号码 出生日期 第一范式测试
? ?
进行第一范式测试时,应找出可能有重复值的属性。 如果有多个值都适用于某一项,则删除这些属性。将这些重复属性移到一个新实体中。
在下面的实体中, Phone number 可能会重复 — 一个办事处可以有多个电话号码。
删除重复的属性,并创建一个名为 Telephone 的新实体。在 Office 与 Telephone 之间建立一个关系。
第二范式测试
?
删除不依赖于整个键的值。
?
只需要检查标识符由多个属性组成的实体和关系。进行第二范式测试时,应删除所有不依赖于整个标识符的数据。每个属性都应依赖于组成标识符的所有属性。
在这个示例中,Employee and Department 实体的标识符由两个属性组成。有些数据与这两个标识符属性并不都具有依赖关系,例如,部门名称只依赖于其中一个属性,Department ID,而雇员的名字只依赖于 Employee ID。
将其他雇员数据不依赖的标识符 Department ID 移到其名为 Department 的实体中。还应移动所有依赖于它的属性。在 Employee 和 Department 之间创建一个关系。
第三范式测试
? ?
删除不直接依赖于键的数据。
进行第三范式测试时,应删除所有依赖于其他属性而不直接依赖于标识符的属性。
在这个示例中,Employee and Office 实体中有一些属性依赖于其标识符 Employee ID。但是,Office location 和 Office phone 等属性却依赖于另一个属性,Office code。这些属性不依赖于标识符 Employee ID。
删除 Office code 和那些依赖于它的属性。创建另一个名为 Office 的实体。然后,创建一个连接 Employee 和 Office 实体的关系。
第 4 步:解析关系
执行完规范化过程后,设计几乎就完成了。唯一还需要做的事情就是生成与概念数据模型相对应的物理数据模型。这个过程也称作解析关系,因为其中涉及的大量工作就是将概念模型中的关系转换为相应的表和外键关系。
虽然概念模型在很大程度上独立于实施细节,但物理数据模型与特定数据库应用程序中的表结构和可用选项紧密相关。在这里,我们所指的应用程序就是 Adaptive Server Anywhere。 解析不带有数据的关系
要实施不带有数据的关系,需要定义外键。外键是指包含另一个表中的主键值的一列或几列。利用外键一次可以访问多个表中的数据。
使用象 Sybase PowerDesigner 的 DataArchitect 组件的数据库设计工具可以自动生成物理数据模型。但如果要自己生成物理模型,有一些基本规则可以帮助您确定将哪些列设置为键。
?
一对多 一个一对多关系总是会变为一个实体和一个外键关系。
请注意,实体将变为表。实体中的标识符(至少一部分)将变为表中的主键。属性将变为列。在一对多关系中,一 方的实体中的标识符成为多方的表中新加的外键列。
在这个示例中,Employee 实体 变为 Employee 表。同样,Department 实体变为 Department 表。Employee 表中将出现一个名为 Department ID 的外键。
? 一对一 对于一对一关系,可在其中任意一个表中设置外键。如果关系在一侧是强制的,但在另一侧是可选的,应在
可选的一侧设置外键。在这个示例中,在 Truck 表中设置外键 (Vehicle ID) 是因为车辆不一定都是卡车。
因此,上面的实体关系模型将解析为下面的数据库基本结构。
?
多对多 在多对多关系中,创建的新表中有两个外键。必须这样安排才会使数据库更高效。
新的 Storage Location 表将 Parts 和 Warehouse 表关联起来。
解析带有数据的关系
有些关系可能会带有数据。这种情况常常会在多对多关系中出现。