数据库分析与设计技巧

1. 原始据与体之
  可以是一一、一多、多多的系。在一般情况下,它是一一的系:即一原始对应且只对应一个体。在特殊情况下,它可能是一多或多一的系,即一原始单证对应多个体,或多原始单证对应一个体。里的体可以理解基本表。明确这种对应关系后,们设计录入界面大有好
  〖例1〗:一份工履历资料,在人力源信息系中,就对应三个基本表:工基本情况表、社会系表、工作简历表。就是原始单证对应多个的典型例子。

2. 与外
  一般而言,一个体不能既无主又无外。在E—R , 于叶子部位的, 可以定也可以不定(它无子), 但必要有外(它有父)
  主与外设计,在全局数据设计中,占有重要地位。当全局数据设计完成以后,有个美国数据库设计专,到都是,除了之外,什也没有就是他的数据库设计经验,也反映了他信息系核心(数据模型)的高度抽象思想。因:主体的高度抽象,主的配,表示体之接。

3. 基本表的性
  基本表与中表、临时表不同,因它具有如下四个特性:
   (1) 原子性。基本表中的字段是不可再分解的。
   (2) 原始性。基本表中的记录是原始数据(基数据)的记录
   (3) 性。由基本表与代表中的数据,可以派生出所有的出数据。
   (4) 定性。基本表的构是相对稳定的,表中的记录是要期保存的。
  理解基本表的性后,在设计数据库时,就能将基本表与中表、临时表区分来。

4. 范式
  基本表及其字段之, 尽量足第三范式。但是,足第三范式的数据库设计,往往不是最好的设计了提高数据的运行效率,常常需要降低范式准:适当增加冗余,达到以空间换时间的目的。
  〖例2〗:有一存放商品的基本表,如表1所示。个字段的存在,表明表的设计足第三范式,因可以由乘以数量得到,是冗余字段。但是,增加个冗余字段,可以提高查询统计的速度,就是以空间换时间的作法。
  在Rose 2002中,定列有两种类型:数据列和算列。这样的列被称算列,而数量这样的列被称数据列
  表1 商品表的表
  商品名称 商品型号 数量
  电视 29 2,500 40 100,000
  
5.
通俗地理解三个范式
  通俗地理解三个范式,于数据库设计大有好。在数据库设计中,了更好地用三个范式,就通俗地理解三个范式(通俗地理解是用的理解,并不是最科学最准确的理解)
  第一范式:1NF属性的原子性束,要求属性具有原子性,不可再分解;
  第二范式:2NF对记录的惟一性束,要求记录有惟一标识,即体的惟一性;
  第三范式:3NF字段冗余性的束,即任何字段不能由其他字段派生出来,它要求字段没有冗余
  没有冗余的数据库设计可以做到。但是,没有冗余的数据未必是最好的数据,有时为了提高运行效率,就必降低范式准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式准的工作放到物理数据模型设计时。降低范式就是增加字段,允冗余。

6. 要善于识别与正确理多多的
  若两个体之存在多多的系,则应消除这种关系。消除的法是,在两者之增加第三个体。这样,原来一个多多的系,变为两个一多的系。要将原来两个体的属性合理地分配到三个体中去。里的第三个体,实质上是一个较复杂系,它对应基本表。一般来,数库设计工具不能识别多的系,但能理多多的系。
  〖例3〗:在图书馆信息系中,图书是一个体,也是一个体。两个体之系,是一个典型的多系:一本图书在不同时间可以被多个者借,一个者又可以借多图书此,要在二者之增加第三个体,该实体取名还书,它的属性:借还时间、借还标(0表示借1表示还书),另外,它还应该有两个外(“图书的主的主),使它能与图书接。

7. PK的取方法
   PK是供程序使用的表间连接工具,可以是一无物理意的数字串, 由程序自1实现。也可以是有物理意的字段名或字段名的合。不前者比后者好。当PK是字段名的,建字段的个数不要太多,多了不但索引占用空大,而且速度也慢。

8. 正确认识数据冗余
  主与外在多表中的重, 不属于数据冗余,个概念必清楚,事上有多人不清楚。非字段的重, 才是数据冗余!而且是一冗余,即重性的冗余。高冗余不是字段的,而是字段的派生出
  〖例4〗:商品中的价、数量、金三个字段,就是由乘以数量派生出来的,它就是冗余,而且是一冗余。冗余的目的是了提高理速度。只有低冗余才会增加数据的不一致性,因同一数据,可能从不同时间、地点、角色上多次入。因此,我提倡高冗余(派生性冗余),反冗余(性冗余)

9. E--R没有准答案
  信息系E--R没有准答案,因它的设计与画法不是惟一的,只要它覆盖了系需求的业务和功能内容,就是可行的。反之要修改E--R。尽管它没有惟一的准答案,并不意味着可以随意设计。好的E—R准是:构清晰、关联简洁个数适中、属性分配合理、没有低冗余。

10. 视图在数据库设计中很有用
  与基本表、代表、中表不同,视图是一虚表,它依数据源的表而存在。视图是供程序使用数据的一个窗口,是基表数据合的一形式, 是数据理的一方法,是用数据保密的一手段。复杂处理、提高运算速度和省存, 视图的定深度一般不得超 若三层视图仍不, 则应视图上定义临时, 临时表上再定义视图这样交迭定, 视图的深度就不受限制了。
  于某些与国家政治、经济、技事和安全利益有的信息系视图的作用更加重要。的基本表完成物理设计之后,立即在基本表上建立第一层视图这层视图的个数和构,与基本表的个数和构是完全相同。并且定,所有的程序,一律只准在视图上操作。只有数据管理着多个人共同掌握的安全,才能直接在基本表上操作。请读者想想:

11. 表、表和临时
  中表是存放统计数据的表,它是数据仓库表或查询结果而设计的,有它没有主(数据仓库除外)临时表是程序个人设计的,存放临时记录个人所用。基表和中表由DBA维护临时表由程序自己用程序自动维护

12. 完整性束表在三个方面
  域的完整性:用Check实现约束,在数据库设计工具中,字段的取围进行定义时,有一个Check,通它定字段的城。
  参照完整性:用PKFK、表器来实现
  用完整性:它是一些业务规则,用存储过程和触器来实现

13. 防止数据库设计丁的方法是三少原
   (1) 一个数据中表的个数越少越好。只有表的个数少了,才能明系E--R少而精,去掉了的多余的体,形成了世界的高度抽象,行了系的数据集成,防止了打丁式的设计
   (2) 一个表中合主的字段个数越少越好。因的作用,一是建主索引,二是做子表的,所以合主的字段个数少了,不仅节省了运行时间,而且省了索引存
   (3) 一个表中的字段个数越少越好。只有字段的个数少了,才能明在系中不存在数据重,且很少有数据冗余,更重要的是督促者学会这样防止了将子表中的字段拉入到主表中去,在主表中留下多空余的字段。所,就是将主表中的一部分内容拉出去,另外独建一个子表。个方法很简单,有的人就是不习惯、不采、不行。
  数据库设计用原是:在数据冗余和理速度之找到合适的平衡点。三少是一个整体概念,点,不能孤立某一个原是相的,不是绝对的。三多肯定是错误的。想:若覆盖系的功能,一百个(共一千个属性) E--R,肯定比二百个(共二千个属性) E--R,要好得多。
  提倡三少,是叫者学会利用数据库设计术进行系的数据集成。数据集成的步骤是将文件系集成为应用数据,将用数据集成数据,将主数据集成全局合数据集成的程度越高,数据共享性就越,信息孤岛现象就越少,整个企信息系的全局E—R体的个数、主的个数、属性的个数就会越少。
  提倡三少的目的,是防止者利用打丁技,不断地数据库进行增改,使企数据库变成了随意设计数据表的垃圾堆,或数据表的,最后造成数据中的基本表、代表、中表、临时乱无章,不其数,致企事业单位的信息系无法维护瘫痪
  三多任何人都可以做到,丁方法设计数据的歪理学三少是少而精的原,它要求有高的数据库设计技巧与艺术,不是任何人都能做到的,因为该是杜丁方法设计数据的理依据。

14. 提高数据运行效率的
  在定的系硬件和系统软件条件下,提高数据的运行效率的法是:
   (1) 在数据物理设计时,降低范式,增加冗余, 少用触, 多用存储过程。
   (2) 算非常复杂、而且记录条数非常巨大(例如一千万条)复杂计算要先在数据外面,以文件系方式用C++理完成之后,最后才入追加到表中去。计费统设计经验
   (3) 发现某个表的记录太多,例如超一千万条,对该行水平分割。水平分割的做法是,表主PK的某个值为线,将表的记录水平分割两个表。若发现某个表的字段太多,例如超八十个,垂直分割表,将原来的一个表分解两个表。
   (4) 数据管理系DBMS行系统优化,即化各参数,如冲区个数。
   (5) 在使用面向数据的SQL行程序设计时,尽量采取化算法。
  之,要提高数据的运行效率,必从数据统级优化、数据库设计级优化、程序实现级优三个次上同下功夫。

  上述十四个技巧,是多人在大量的数据分析与设计实践中,逐步总结出来的。经验运用,者不能生帮硬套,死硬背,而要消化理解,事求是,灵活掌握。并逐做到:在用中展,在展中

posted on 2008-01-16 15:35  千山暮雪  阅读(329)  评论(0编辑  收藏  举报