数据库设计概念(2)

2019-03-29 17:05

设计过程

设计过程包含五个主要步骤。

? ? ? ?

第 1 步:确定实体和关系 第 2 步:确定所需数据 第 3 步:规范化数据

第 4 步:解析关系 ? 第 5 步:验证设计

有关实现数据库设计的详细信息,请参见使用数据库对象。

第 1 步:确定实体和关系 实体和关系示例

第 2 步:确定所需数据 第 3 步:规范化数据 第 4 步:解析关系 第 5 步:验证设计

第 1 步:确定实体和关系

确定设计中的实体及实体之间的关系:

1. 确定高级别的活动 确定要使用该数据库执行的一般活动。例如,

可能要用它来跟踪有关雇员的信息。 2. 确定实体 对于这些活动,确定需要维护有关哪些类对象的信息。

这些对象将成为实体。例如,聘用雇员,将雇员分配到某个部门,并确定其技能级别。 3. 确定关系 对这些活动进行分析,然后确定实体间会有哪些关系。

例如,部件和仓库之间有关系。定义两个角色来描述每个关系。 4. 分解活动 开始时确定了高级别的活动。现在,需要进一步分析

这些活动,确定是否可以将其中一些分解为较低级别的活动。例如,象维护雇员信息这样一个高级别活动可以分解为:

o

添加新雇员。

o 更改现有雇员信息。 o 删除已离职的雇员。

5. 确定业务规则 对业务说明进行分析,确定应遵守哪些规则。例

如,[一个部门有且仅有一个经理] 就可以作为一个业务规则。这些规则将被置入数据库的结构中。

实体和关系示例

示例

ACME Corporation 是一家小公司,它在五个地点设有办事处。目前,ACME 有 75 名雇员。该公司正准备迅速发展,并且已经确定了九个部门,每个部门都有自己的部门经理。

为帮助公司招聘新雇员,人事部门确定了 68 项技能,并且认为公司将来需要具有这些技能的雇员。聘用了一个雇员后,将对该雇员在每项技能上的专业级别进行评定。 确定高级别的活动

ACME Corporation 需要考虑的高级别活动有:

? ? ? ? ? ? ?

聘用雇员。 解聘雇员。

维护雇员的个人信息。

维护有关公司所需技能的信息。

维护有关哪个雇员具有哪项技能的信息。 维护有关部门的信息。 维护有关办事处的信息。

确定实体和关系

确定实体(对象)和连接实体的关系(角色)。根据以上说明和高级别的活动创建一个设计图。

用矩形框表示实体,用连线表示关系。用两个角色标记每个关系。还应使用适当的标注表示那些一对多、一对一和多对多关系。

下面是一个粗略的实体关系图。在本章后面的部分将逐渐对其进行改进。

分解高级别的活动

根据上述高级别的活动可以确定以下较低级别的活动:

添加或删除雇员。 ? 添加或删除办事处。

? ? ? ? ? ? ?

列出某个部门的雇员。 在技能列表中添加技能。 确定某个雇员的技能。

确定某个雇员在各项技能上的技能级别。

确定在某项技能上具有相同技能级别的所有雇员。 更改雇员的技能级别。

使用这些较低级别的活动可以确定是否需要新表或新关系。 确定业务规则

业务规则通常可以表示为一对多、一对一和多对多关系。 可能相关的业务规则有以下几个:

? ? ? ? ? ? ? ?

现在有五个办事处;扩展计划允许增加到最多十个。 雇员可以更换部门或办事处。 每个部门有一个部门经理。 每个办事处最多有三个电话号码。 每个电话号码有一个或多个分机。

聘用了一个雇员后,将对该雇员在各项技能上的专业级别进行评定。

每个雇员具有三到二十项技能。

可以将雇员分配到一个办事处,也可以不分配

第 2 步:确定所需数据

确定所需数据: 1. 确定支持数据。

2. 列出所有需要跟踪的数据。 3. 为每个实体设置数据。

4. 列出每个实体的可用数据。描述实体(对象)的数据可以回答涉及何人、何事、何处、何时以及何故的问题。 5. 列出每个关系(动词)需要的所有数据。 6. 列出适用于每个关系的数据(如果有)。 确定支持数据

您所确定的支持数据将成为实体中属性的名称。例如,以下数据可能适用于 Employee 实体、Skill 实体,和 Expert In 实体。

雇员 雇员 ID 雇员的名字 雇员的姓氏 雇员的部门 技能 擅长于 技能 ID 技能级别 技能名称 掌握该项技能的日期 技能说明 雇员所在的办事处 雇员的地址 根据这些数据创建的设计图将如下图所示:

请注意,列出的所有属性并未都在这张设计图中出现。未出现的属性可归为以下两类:

1. 有一些属性隐式包含在其他关系中;例如,雇员的部门和雇员所在的办事处分别用连接 Department 和 Office 实体的关系表示。 2. 其他一些属性未出现的原因是它们与这些实体并不相关联,而是与这些实体间的关系相关联。上图并不完整。 在绘制完整的实体关系图时,第一类属性会自然出现。 可以通过将多对多关系转换为实体来添加第二类属性。

新实体同时依赖于\实体和\实体。它将借用这些实体中的标识符,因为它同时依赖于这两个实体。

注意

?

确定支持数据时,一定要参考前面确定的活动以了解将如何访问这些数据。

例如,在某些情况下可能需要按雇员的名字列出雇员,而在另一些情况下可能需要按姓氏列出。要满足这两种需要,应创建一个 First Name 属性和一个 Last Name 属性,而不应创建一个既包含名字又包含姓氏的属性。将姓氏和名字分开后,以后可以创建两个索引,分别适用于这两项任务。

?

请选择一致的名称。使用一致的名称可以使数据库便于维护,并且便于阅读报告和输出窗口。

例如,如果一个属性使用了缩略名称,如 Emp_status,则另一个属性不应使用完整名称,如 Employee_ID。应使名称保持一致,如 Emp_status 和 Emp_ID。

?

在这个阶段,数据是否与正确的实体相关联并不十分重要。您可以根据自己的判断进行设计。在下一节中,将对设计进行测试,检查您的判断是否正确。

第 3 步:规范化数据

规范化是指一系列测试,通过这些测试可以消除冗余的数据,并确保数据与正确的实体或关系相关联。共有五项测试。本节介绍其中前三项测试。这三项测试最重要,因此也最常使用。

为什么要进行规范化? 规范化的目的是消除冗余并提高一致性。例如,如果在多个位置都存储了客户的地址,在这些客户搬家后将很难正确更新所有副本。 有关规范化测试的更多信息,请参见有关数据库设计的书籍。 范式

数据规范化包括几项测试。数据在通过了第一项测试后,我们认为它满足第一范式;通过了第二项测试后,它满足第二范式;通过了第三项测试后,则满足第三范式。 规范化数据库中的数据:

1. 列出这些数据。

o 为每个实体至少确定一个键。每个实体必须有一

个标识符。

o 确定关系的键。关系的键是该关系所连接的两个

实体的键。

o 检查支持数据列表中是否有计算数据。计算数据

通常不存储在关系数据库中。


数据库设计概念(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:Java实训报告总结与心得

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: