数据库设计

参照http://blog.sina.com.cn/s/blog_735fb3b40100svet.html

数据库设计的过程(六个阶段)
     1.需求分析阶段
   准确了解与分析用户需求(包括数据与处理)
   是整个设计过程的基础,是最困难、最耗费时间的一步
  2.概念结构设计阶段
   是整个数据库设计的关键
   通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS   数据库管理系统(Database Management System)  的概念模型
  3.逻辑结构设计阶段
   将概念结构转换为某个DBMS所支持的数据模型
   对其进行优化
  4.数据库物理设计阶段
   为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)
  5.数据库实施阶段
   运用DBMS提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果
   建立数据库,编制与调试应用程序,组织数据入库,并进行试运行
  6.数据库运行和维护阶段
   数据库应用系统经过试运行后即可投入正式运行。
   在数据库系统运行过程中必须不断地对其进行评价、调整与修改
  设计特点:
   在设计过程中把数据库的设计和对数据库中数据处理的设计紧密结合起来将这两个方面的需求分析、抽象、设计、实现在各个阶段同时进行,相互参照,相互补充,以完善两方面的设计

4.物理设计阶段:根据DBMS特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式

六、数据库设计技巧

  1. 设计数据库之前(需求分析阶段)   1) 理解客户需求,询问用户如何看待未来需求变化。让客户解释其需求,而且随着开发的继续,还要经常询问客户保证其需求仍然在开发的目的之中。   2) 了解企业业务可以在以后的开发阶段节约大量的时间。   3) 重视输入输出。   在定义数据库表和字段需求(输入)时,首先应检查现有的或者已经设计出的报表、查询和视图(输出)以决定为了支持这些输出哪些是必要的表和字段。   举例:假如客户需要一个报表按照邮政编码排序、分段和求和,你要保证其中包括了单独的邮政编码字段而不要把邮政编码糅进地址字段里。   4) 创建数据字典和ER 图表   ER 图表和数据字典可以让任何了解数据库的人都明确如何从数据库中获得数据。ER图对表明表之间关系很有用,而数据字典则说明了每个字段的用途以及任何可能存在的别名。对SQL 表达式的文档化来说这是完全必要的。   5) 定义标准的对象命名规范   数据库各种对象的命名必须规范。

5. 通俗地理解三个范式   通俗地理解三个范式,对于数据库设计大有好处。在数据库设计中,为了更好地应用三个范式,就

必须通俗地理解三个范式(通俗地理解是够用的理解,并不是最科学最准确的理解):  

 第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;  

 第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;  

 第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。

 没有冗余的数据库设计可以做到。但是,没有冗余的数据库未必是最好的数据库,有时为了提高运

行效率,就必须降低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式

,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。

   6. 要善于识别与正确处理多对多的关系   若两个实体之间存在多对多的关系,则应消除这种关系。消除的办法是,在两者之间增加第三个实

体。这样,原来一个多对多的关系,现在变为两个一对多的关系。要将原来两个实体的属性合理地分配

到三个实体中去。这里的第三个实体,实质上是一个较复杂的关系,它对应一张基本表。一般来讲,数

据库设计工具不能识别多对多的关系,但能处理多对多的关系。

   7. 主键PK的取值方法    PK是供程序员使用的表间连接工具,可以是一无物理意义的数字串, 由程序自动加1来实现。也可

以是有物理意义的字段名或字段名的组合。不过前者比后者好。当PK是字段名的组合时,建议字段的个

数不要太多,多了不但索引占用空间大,而且速度也慢。

   8. 正确认识数据冗余   主键与外键在多表中的重复出现, 不属于数据冗余,这个概念必须清楚,事实上有许多人还不清楚

。非键字段的重复出现, 才是数据冗余!而且是一种低级冗余,即重复性的冗余。高级冗余不是字段的

重复出现,而是字段的派生出现。   〖例4〗:商品中的“单价、数量、金额”三个字段,“金额”就是由“单价”乘以“数量”派生出

来的,它就是冗余,而且是一种高级冗余。冗余的目的是为了提高处理速度。只有低级冗余才会增加数

据的不一致性,因为同一数据,可能从不同时间、地点、角色上多次录入。因此,我们提倡高级冗余(派

生性冗余),反对低级冗余(重复性冗余)。

原文地址:https://www.cnblogs.com/TJessica/p/7028100.html