日期:2014-05-16  浏览次数:20691 次

数据库设计(一)

时间:2014.04.18

地点:基地

--------------------------------------------------------------------

  构建一个数据库应用是一个非常复杂的任务,包括有设计数据库的模式,设计访问和更新数据的程序以及设计控制数据访问的安全模式。数据库的预期用途在很多方面都影响着物理级,逻辑级和视图级的各种各样的选择。

--------------------------------------------------------------------

一、设计阶段

1.初级阶段(理解需求):

  完整地刻画未来数据库用户的数据用户的数据需求。——因为现实的应用往往非常复杂,所以数据库设计者应该与应用的用户进行交互以理解应用需求,并把它以用户能理解的高级形式表现出来,然后再将需求转化为较低级别的设计。所以设计者应该和应用领域专家和用户深入沟通,列出需求规格说明。

2.概念设计阶段(将需求转化为概念,构建实体-联系图):

选择数据模型,采用该模型的概念将需求转化为数据的概念模式。——这是一个概念设计阶段,比如我们常用的实体-联系模型,该模型定义了数据库中表示的实体,实体的属性,实体之间的联系,以及实体和联系上的约束。概念设计阶段的结果是构建一个实体-联系图,提供对模式的图形化描述。这一阶段,关注的是描述数据及其联系,而不是定义物理存储的细节,且要确保在该模式下的数据满足需求。

3.概念设计阶段(功能需求规格说明,包括修改更新数据,搜索取回数据和删除数据等)

以上步骤均属于抽象数据库实现,而数据库的实现则包括逻辑设计阶段,物理设计阶段

4.逻辑设计阶段:

设计者将高层概念模式映射到将使用的数据库系统实现的数据模型上。实现数据模型通常是关系数据模型。这个映射一般是:将实体-联系模型定义的概念模式映射到关系模式中。

5.物理设计阶段

设计者将所得系统特定的数据库模式使用到后续的物理设计阶段。这一阶段指明数据库的物理特征,包括文件组织格式和索引结构的选择。

--------------------------------------------------------------------

二、设计选择

  实体是用于描述和指示数据库中所有可明确识别的个体,比如一个大学数据库中的老师,学生,系,课程等都是实体。这些实体之间又涉及各种各样的相互关系,这些关系都将在数据库的设计过程中得到反映。

设计数据库时应该避免的两个缺陷

1.设计冗余

  不好的数据库设计可能会重复信息。信息冗余会带来的问题是当对一条信息进行更新时没有将这条信息存在的冗余部分进行及时更新,那么后果是两份本来都是表达同一含义时会由此而变得不一致。理想情况下,信息应该只出现一次,不应该冗余。

2.设计不完整

 总之,数据库设计其实是一个很有挑战性的问题,需要科学和好的品味的结合。

--------------------------------------------------------------------

三、实体-联系模型(E-R)

  数据库模型旨在方便数据库的设计,通过允许定义代表数据库全局逻辑结构的企业模式实现。

E-R模型的几个概念:

1.实体集

  实体是现实世界中可区别于所有其他对象的一个事物或对象。比如:大学中的每个个体都是一个实体,可区别于他人,每个实体也都有一组性质,其中某些值还可以唯一的标识一个实体,至少在某个实体集合中可以如此,比如学号,身份证号等。

  实体集即相同类型或相同性质的一个实体的集合。例如可以给一个大学中所有的教师定义为一个实体集,把所有的教师都装到里面。同时,实体集的外延是指:实体集中的实体的实际集合,有点拗口了,具体来说:实体集中肯定有好多实体,而该实体集中实际上存在的实体组成的集合就是该实体集的外延。

  实体是通过一组属性来表示的,属性描述了实体集中每个成员所拥有的性质。每个实体在每个属性上都有各自的值。

  由此说来,数据库是包括一组实体集,每个实体集包括任意数量的相同类型的实体,比如大学数据库中包含的两个实体集:教师和学生,这两个实体集中都有各自的实体组成。并配备相应的属性。当然还有更多实体集,比如课程啊,学院啊等等。

2.联系集

  联系是指多个实体间的相互关联。比如可以定义某教师X和某学生Y的联系,该关联指明了教师X是学生Y的导师。

联系集:是相同类型联的得集合,它对应了一种关系下的所有实现的集合,比如在实体集教师和实体集学生之间,存在教师和学生的一个关系,将这很多种师生关系的映射集合在一块,就是一个联系集。这时我们还说,实体集教师和实体集学生参与了这一个联系集。比如:一个教师ID为201314的教师实体和一个学号为201208的学生实体参与到师生联系得一个联系实例中,该联系实例表明这位教师是这位学生的导师。