码迷,mamicode.com
首页 > 数据库 > 详细

数据库设计例子

时间:2015-03-04 19:27:52      阅读:488      评论:0      收藏:0      [点我收藏+]

标签:数据库设计   技术员   工程师   建筑   承担   

数据库设计范式实例:假设某建筑公司要设计一个数据库。公司的业务规则概括说明如下:

公司承担多个工程项目,每一项工程有:工程号、工程名称、施工人员等;

公司有多名职工,每一名职工有:职工号、姓名、性别、职务(工程师、技术员)等;

公司按照工时和小时工资率支付工资,小时工资率由职工的职务决定(例如,技术员的小时工资率与工程师不同)。

公司定期制定一个工资报表,如图-1所示。

技术分享

显然上表并不是一个数据库中的表,只是一个书面的表格。现对其设计成为数据库中间的表。如下图在数据库中有一个这样的表。

技术分享

但是该表也存在如下问题:

表中包含大量的冗余,可能会导致数据异常:

a.更新异常 例如,修改职工号=1001的职务,则必须修改所有职工号=1001的行。

b.添加异常 若要增加一个新的职工时,首先必须给这名职工分配一个工程。或者为了添加一名新职工的数据,先给这名职工分配一个虚拟的工程。(因为主关键字不能为空)

c.删除异常 例如,1001号职工要辞职,则必须删除所有职工号=1001的数据行。这样的删除操作,很可能丢失了其它有用的数据。

现可以对以上表进行重新设计:

用函数依赖图表示所有属性之间存在的函数依赖关系,如图3所示。

1. 图上方的箭头表示关键属性决定非关键属性。

2. 图下方的箭头表示属性之间的函数依赖性。

技术分享

职工信息表:

职工号

姓名

职务

1001

齐光明

Q01

1002

李思岐

Q02

1003

鞠明亮

Q03

1004

葛宇洪

Q04

职务工资表

职务编号

职务名称

小时工资率

Q01

工程师

65

Q02

技术员

60

Q03

工人

55

工程项目表:

工程号

工程名

A1

花园大厦

A2

立交桥

A3

临江饭店

职工参与工程项目表

编号

工程号

职工号

工时

1

A1

1001

13

2

A1

1002

16

3

A1

1004

19

4

A2

1001

15

5

A2

1003

17

6

A3

1002

18

7

A3

1004

14

另外,

数据库的物理设计要从优化操作系统、磁盘布局优化和配置、数据库初始化参数的选择、设置和管理内存、设置和管理CPU、设置和管理表空间、设置和管理回滚段、设置和管理联机重做日志、设置和管理归档重做日志、设置和管理控制文件等几个方面来考虑。

数据库设计例子

标签:数据库设计   技术员   工程师   建筑   承担   

原文地址:http://zzc1986.blog.51cto.com/1067499/1617224

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!