尽管同摆本来票据对应都只有对承诺一个实体。或多摆放老单证对应一个实体。

1. 初票据和实体之间的涉
  可以是相当、一针对大多、多对准多之关联。在一般景象下,它们是相当的涉:即一律张本来票据对应都仅针对诺一个实体。 
当特种情形下,它们可能是一致针对几近或者多对平的涉,即同布置老单证对诺多个实体,或多摆设原始单证对应一个实体。 
这边的实体可以掌握也基本表。明确这种对应关系后,对咱规划录入界面大产生好处。 

注:

  〖例1〗:一份员工履历资料,在人力资源信息体系被,就对准许三只基本表:员工基本状况表明、社会关系表、工作简历表。 
        这就算是“一布置旧单证对诺多独实体”的榜首例证。 

   
设计数据库是促成实际工作的要一步,合理设计表结构,规划表字段,建立合理干吧晚期减少了支付,运营,维护资金。认真了解与习计划学问是不可或缺的,如下摘抄了一部分经验总结。

2. 主键与外键
  一般而言,一个实体不可知既无主键又管外键。在E—R 图中,
处于叶子部位的实体, 可以定义主键,也可免定义主键 
  (因为它们无子孙), 但必须使起外键(因为它发生爹)。 

 

  主键与外键的统筹,在大局数据库的设计受到,占有主要位置。当全局数据库的计划性完成以后,有个美国数据库设计专 
  家说:“键,到处都是键,除了键之外,什么呢尚无”,这即是他的数据库设计经验之谈,也反映了外本着信息体系核 
  心(数据模型)的高度抽象思维。因为:主键是实业的莫大抽象,主键与外键的杂交,表示实体之间的总是。 

1. 原有票据和实体之间的干
  可以是一定、一针对性多、多针对几近的关系。在一般情况下,它们是相当之干:即同布置老票据对应都只有对承诺一个实体。
以突出状况下,它们可能是同一针对性大多要多对相同之干,即同摆设本来单证对承诺多只实体,或多张老单证对应一个实体。
此地的实体可以了解吧基本表。明确这种对应关系后,对咱筹录入界面大起裨益。

3. 基本表的性    基本表与中间表、临时表不跟,因为她具有如下四独特点: 
   (1) 原子性。基本表中的字段是不行再解释的。 
   (2) 原始性。基本表中之笔录是老数据(基础数据)的记录。 
   (3) 演绎性。由基本表与代码表中的多寡,可以派生出有的出口数据。 
   (4) 稳定性。基本表的构造是相对稳定性的,表中的笔录是使久保留之。 
  理解基本表的性后,在规划数据库时,就会拿基本表与中间表、临时表区分开来。 

  〖例1〗:一客员工履历资料,在人力资源信息体系面临,就本着承诺三个基本表:员工基本情况说明、社会关系表、工作简历表。
        这即是“一摆设原始单证对诺多单实体”的一枝独秀例证。

4. 范式标准    基本表及其字段之间的关联, 应尽可能满足第三范式。但是,满足第三范式的数据库设计,往往不是最最好的宏图。 
  为了增强数据库的运行效率,常常要降低范式标准:适当增加冗余,达到以空间更换时间之目的。

2. 主键与外键
  一般而言,一个实体不能够既无主键又任外键。在E—R 图中,
处于叶子部位的实业, 可以定义主键,也得无定义主键
  (因为它们无子孙), 但必须使生外键(因为它有父亲)。

  〖例2〗:有一致布置存商品之基本表,如表1所显示。“金额”这个字段的留存,表明该表的规划不满足第三范式, 
  因为“金额”可以由“单价”乘以“数量”得到,说明“金额”是冗余字段。但是,增加“金额”这个冗余字段, 
  可以增长查询统计的进度,这就是是因空间更换时间的作法。 
  于Rose
2002挨,规定列有些许栽档次:数据列和计算列。“金额”这样的排列被称呼“计算列”,而“单价”和 
  “数量”这样的排列于喻为“数据列”。 

  主键与外键的计划性,在大局数据库的计划受到,占有重要地位。当全局数据库的筹划好后,有只美国数据库设计专
  家说:“键,到处都是键,除了键之外,什么呢绝非”,这即是他的数据库设计经验之谈,也反映了外本着信息体系稽核
  心(数据模型)的高度抽象思维。因为:主键是实业的莫大抽象,主键与外键的杂交,表示实体之间的连。

表1 商品表的表结构 
商品名称  商品型号 单价 数量 金额
电视机 29吋 2,500 40 100,000

3. 基本表的性能   基本表与中间表、临时表不跟,因为其有如下四独特征:
   (1) 原子性。基本表中的字段是不足再解释的。
   (2) 原始性。基本表中之笔录是土生土长数据(基础数据)的记录。
   (3) 演绎性。由基本表与代码表中的数据,可以派生出富有的输出数据。
   (4) 稳定性。基本表的组织是相对安静之,表中的笔录是设长期保存的。
  理解基本表的性能后,在计划数据库时,就可知将基本表与中间表、临时表区分开来。

5. 浅显地理解三只范式
  通俗地知道三单范式,对于数据库设计充分有便宜。在数据库设计被,为了更好地用三独范式,就务须通俗地理解 
 三只范式(通俗地了解是十足用之喻,并无是无比科学最纯粹之明): 
  第一范式:1NF凡对准性的原子性约束,要求性能具有原子性,不可再解释; 
  第二范式:2NF是指向记录之惟一性约束,要求记录有就一标识,即实体的惟一性; 
  第三范式:3NF凡是本着字段冗余性的律,即任何字段非克由外字段派生出来,它要求字段没有冗余。 

  没有冗余的数据库设计好做到。但是,没有冗余的数据库未必是无限好的数据库,有时为了增强运行效率,就得降 
  低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的劳作放到物理 
  数据模型设计时考虑。降低范式就是充实字段,允许冗余。 

4. 范式标准   基本表及其字段之间的涉,
应竭尽满足第三范式。但是,满足第三范式的数据库设计,往往不是无限好的筹划。
  为了增强数据库的运行效率,常常需要降低范式标准:适当增加冗余,达到以空间更换时间的目的。

6. 假如擅识别与正确处理多对几近的关系    若两只实体之间在多对大多的涉及,则答应解除这种关联。消除的方是,在两者之间增加第三单实体。这样,原来同 
  个多针对性几近之涉及,现在改成两单相同对准多之关联。要用原本少独实体的特性合理地分配至三个实体中失去。这里的老三单 
  实体,实质上是一个于复杂的关系,它对承诺一律摆设基本表。一般来讲,数据库设计工具不克识别多对多之涉嫌,但亦可处 
  理多针对大多的关联。 

  〖例2〗:有同样摆存商品之基本表,如表1所显示。“金额”这个字段的留存,表明该表的规划不满足第三范式,
  因为“金额”可以由“单价”乘以“数量”得到,说明“金额”是冗余字段。但是,增加“金额”这个冗余字段,
  可以加强查询统计的快,这就是是坐空间更换时间的作法。
  于Rose
2002遭受,规定列有些许栽类型:数据列和计算列。“金额”这样的排于称之为“计算列”,而“单价”和
  “数量”这样的排于喻为“数据列”。

  〖例3〗:在“图书馆信息体系”中,“图书”是一个实体,“读者”也是一个实体。这片个实体之间的干,是一模一样 
  独独立的几近针对性多关系:一照书籍在不同时空可以被多只读者借阅,一个读者以可借多依书籍。为夫,要以彼此的 
  间加第三独实体,该实体取名为“借还开”,它的性能为:借还时间、借还表明(0意味借书,1表示还题),另外, 
  它还应有发少数只外键(“图书”的主键,“读者”的主键),使它们亦可同“图书”和“读者”连接。 

  表1 商品表的说明结构
  商品名称 商品型号 单价 数量 金额
  电视机 29吋 2,500 40 100,000
  
5. 浅显地解三单范式
  通俗地了解三独范式,对于数据库设计大发实益。在数据库设计受到,为了重新好地使用三只范式,就非得通俗地领略
  三个范式(通俗地解是十足用的解,并无是无与伦比正确最标准的晓):
  第一范式:1NF凡针对性性能的原子性约束,要求性能具有原子性,不可再解释;
  第二范式:2NF凡对记录的惟一性约束,要求记录有特一标识,即实体的惟一性;
  第三范式:3NF凡是针对字段冗余性的约束,即任何字段非克由其余字段派生出,它要求字段没有冗余。

注视:

  没有冗余的数据库设计好好。但是,没有冗余的数据库未必是最为好之数据库,有时为了增进运行效率,就亟须降
  低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的做事放到物理
  数据模型设计时考虑。降低范式就是搭字段,允许冗余。

**图书  1 同 该实体取名为“借还题” n 
读者  1 跟 该实体取名为“借还写” n 

6. 万一擅识别及正确处理多对多的涉嫌   若两只实体之间在多对几近的关系,则承诺去掉这种关系。消除的点子是,在两者之间增加第三单实体。这样,原来平
  个多针对性多的关系,现在成两单同对准大多之涉。要拿原少独实体的性能合理地分配至三个实体中失去。这里的老三只
  实体,实质上是一个于复杂的干,它对诺同摆基本表。一般来讲,数据库设计工具不可知鉴别多对大多的涉及,但亦可处
  理多针对几近的关系。

  1. 主键PK的取值方法 
    **   PK是供程序员使用的表间连接工具,可以是一无物理意义之数字串,
    由程序自动加1来兑现。也足以是有大体意义 
      的字段名或字段名的成。不过前者较后者好。当PK是配段名的结缘时,建议字段的个数不要太多,多矣非但索引 
      占用空间充分,而且速度也迟迟。 

  〖例3〗:在“图书馆信息体系”中,“图书”是一个实体,“读者”也是一个实体。这半只实体之间的涉嫌,是平等
  个突出的大都针对几近涉及:一据图书在不同时得于多独读者借阅,一个读者以有何不可借多如约书籍。为这个,要于双边的
  间长第三单实体,该实体取名为“借还书”,它的性质为:借还时间、借还表明(0意味借书,1表示还写),另外,
  它还应来少数个外键(“图书”的主键,“读者”的主键),使她能同“图书”和“读者”连接。

8. 正确认识数据冗余 
  主键与外键在多表中之再次出现,
不属数据冗余,这个定义必须明白,事实上有众多人口尚无晓。非键字段的重 
  复出现, 才是多少冗余!而且是平栽低级冗余,即重复性的冗余。高级冗余不是字段的还出现,而是字段的派生出现。 

7. 主键PK的取值方法    PK是供程序员使用的表间连接工具,可以是一无物理意义的数字串,
由程序自动加1来实现。也得是来大体意义
  的字段名或字段名的结合。不过前者较继承者好。当PK是许段名的构成时,建议字段的个数不要太多,多矣不但索引
  占用空间十分,而且速度也慢。

  〖例4〗:商品受到的“单价、数量、金额”三只字段,“金额”就是由“单价”乘以“数量”派生出的,它就是是冗余, 
  而且是平等种植尖端冗余。冗余的目的是为增强处理速度。只有初级冗余才见面大增数据的不一致性,因为同数据,可 
  能由不同时空、地点、角色上屡次录入。因此,我们倡议高级冗余(派生性冗余),反对低级冗余(重复性冗余)。 

8. 正确认识数据冗余
  主键与外键在多表中之重复出现,
不属数据冗余,这个定义必须理解,事实上有诸多总人口尚未亮。非键字段的又
  复出现,
才是数码冗余!而且是均等种植低级冗余,即重复性的冗余。高级冗余不是字段的再度出现,而是字段的派生出现。

  1. E–R图没有标准答案 
      信息体系的E–R图没有标准答案,因为它们的宏图以及画法不是绝世的,只要其挂了网要求的业务范围和法力内容, 
      就是卓有成效的。反的如修改E–R图。尽管她从不惟一的标准答案,并无代表可以随意设计。好的E—R图的正儿八经是: 
      结构清晰、关联简洁、实体个数适中、属性分配合理、没有低级冗余。 

  〖例4〗:商品遇之“单价、数量、金额”三单字段,“金额”就是由于“单价”乘以“数量”派生出的,它就是冗余,
  而且是均等种尖端冗余。冗余的目的是以提高处理速度。只有初级冗余才会加数量的不一致性,因为同一数据,可
  能从不同时、地点、角色上往往录入。因此,我们倡导高级冗余(派生性冗余),反对低级冗余(重复性冗余)。

10 . 视图技术以数据库设计着老有因此    与基本表、代码表、中间表不与,视图是均等种植虚表,它依靠数据源的实表而存在。视图是供程序员使用数据库的 
  一个窗口,是基表数据综合的一样种植形式,
是数据处理的一律种艺术,是用户数量保密的等同栽手段。为了进行复杂处理、 
  提高运算速度和节存储空间,
视图的概念深度一般不足越三层。 假如三重合视图仍不够用,
则答应于视图上定义临时表, 
   以临时表上还定义视图。这样反复交迭定义,
视图的深浅就无让限制了。
 

9. E–R图没有标准答案
  信息体系的E–R图没有标准答案,因为其的筹划以及画法不是绝无仅有的,只要她挂了系要求的业务范围和效果内容,
  就是可行之。反的若修改E–R图。尽管它没有惟一的标准答案,并无表示可以随心所欲设计。好的E—R图的正式是:
  结构清晰、关联简洁、实体个数适中、属性分配合理、没有低级冗余。

  对于一些与国家政治、经济、技术、军事及平安利益有关的音信体系,视图的作用更重大。这些体系的基本表完 
  成物理设计下,立即在基本表上树立第一重合视图,这层视图的个数和结构,与基本表的个数和组织是完全相同。 
  并且确定,所有的程序员,一律只以在视图上操作。只有数据库管理员,带在多只人口同掌握的“安全钥匙”, 
  才能够直接以基本表上操作。请读者思考:这是怎么? 

10 . 视图技术以数据库设计着甚有因此   与基本表、代码表、中间表不与,视图是同一种植虚表,它依靠数据源的实表而存在。视图是供程序员使用数据库的
  一个窗口,是基表数据汇总的等同种样式,
是数据处理的同等种植办法,是用户数据保密的平种手段。为了拓展复杂处理、
  提高运算速度以及节约存储空间, 视图的定义深度一般不得跨越三叠。
若三叠视图仍不够用, 则应于视图上定义临时表,
   在临时表上重复定义视图。这样往往交迭定义, 视图的深就不吃限制了。

11. 中间表、报表和临时表 
  中间表是存放统计数据的说明,它是吗数量仓库、输出报表要询问结果如设计的,有时其从未主键与外键(数据仓 
  库除外)。临时表是程序员个人计划之,存放临时记录,为个人所用。基表和中间表由DBA维护,临时表由程序员 
  自己因此程序自动保护。 

  对于一些与国家政治、经济、技术、军事与平安利益有关的消息体系,视图的意图更加要。这些系统的基本表完
  成物理设计后,立即在基本表上树立第一交汇视图,这层视图的个数和布局,与基本表的个数与结构是完全相同。
  并且确定,所有的程序员,一律只按照在视图上操作。只有数据库管理员,带在多只人口同台掌握的“安全钥匙”,
  才能够直接当基本表上操作。请读者想:这是怎?

12. 完整性约束表现于三个方面    域的完整性:用Check来促成约束,在数据库设计工具中,对字段的取值范围开展定义时,有一个Check按钮,通 
  过它们定义字段的值城。 
  参照完整性:用PK、FK、表级触发器来落实。 
  用户定义完整性:它是一对事情规则,用存储过程和触发器来落实。 

11. 中间表、报表及临时表
  中间表是存放统计数据的阐明,它是也多少仓库、输出报表要询问结果要设计的,有时她从不主键与外键(数据仓
  库除外)。临时表是程序员个人计划之,存放临时记录,为个体所用。基表和中间表由DBA维护,临时表由程序员
  自己之所以程序自动保护。

13. 预防数据库设计打补丁的法是“三掉极”     (1)
一个数据库中表的个数越少越好。只有表的个数少了,才能够证实系统的E–R图少而强,去丢了重新的剩余的 
    实体,形成了对客观世界之万丈抽象,进行了系统的数额并,防止了打补丁式的宏图; 

12. 完整性约束表现于三单方面   域的完整性:用Check来贯彻约束,在数据库设计工具中,对字段的取值范围开展定义时,有一个Check按钮,通
  过她定义字段的值城。
  参照完整性:用PK、FK、表级触发器来实现。
  用户定义完整性:它是一些作业规则,用存储过程和触发器来实现。

   (2)
一个表中组合主键的字段个数越少越好。因为主键的用意,一是建造主键索引,二凡是做啊子表的外键,所以组 
    合主键的字段个数少了,不仅节省了运转时,而且节省了目录存储空间; 

13. 防数据库设计打补丁的艺术是“三不翼而飞极”    (1)
一个数据库中表的个数越少越好。只有表的个数少了,才能够印证系统的E–R图少而精,去丢了双重的结余的
    实体,形成了对客观世界之惊人抽象,进行了网的数并,防止了打补丁式的计划;

   (3)
一个表中的字段个数越少越好。只有字段的个数少了,才会证明在系统面临不在多少还,且大少来数据冗 
    余,更主要之凡督促读者学会“列变行”,这样就防止了拿子表中的字段拉入到主表中错过,在主表中留下许 
    多空余的字段。所谓“列变行”,就是将主表中之同一有情节拉出,另外单独建一个子表。这个方式充分简 
    单,有的人即使是不惯、不采纳、不执行。 

   (2)
一个表中组合主键的字段个数越少越好。因为主键的用意,一凡是盖主键索引,二凡是召开呢子表的外键,所以组
    合主键的字段个数少了,不仅节省了运转时刻,而且节省了目录存储空间;

  数据库设计之实用原则是:在数码冗余和处理速度之间找到适合的平衡点。“三不翼而飞”是一个整概念,综合观点, 
  不克孤立某一个原则。该规则是相对的,不是绝对的。“三基本上”原则肯定是一无是处的。试想:若覆盖网一样的功 
  能,一百个实体(共一千单特性)
的E–R图,肯定比较二百只实体(共二千独特性) 的E–R图,要好得几近。 

   (3)
一个表中的字段个数越少越好。只有字段的个数少了,才会说明当系面临不设有多少更,且大少发生数据冗
    余,更要紧之凡督促读者学会“列变行”,这样就防止了用子表中的字段拉入到主表中错过,在主表中留下许
    多空余的字段。所谓“列变行”,就是将主表中之平等有情节拉出,另外单独建一个子表。这个办法充分粗略
    单,有的人虽是免惯、不采纳、不执行。

  提倡“三不见”原则,是深受读者学会以数据库设计技术进行系统的多少并。数据并的步调是拿文件系统集成 
  为利用数据库,将用数据库集成为主题数据库,将主题数据库集成为全局综合数据库。集成的水准更强,数据 
  共享性就越是强,信息孤岛现象虽更加少,整个公司信息体系的大局E—R图中实体的个数、主键的个数、属性之个数 
  就会尤其少。 

  数据库设计的实用原则是:在数据冗余和处理速度之间找到合适的平衡点。“三丢失”是一个总体概念,综合观点,
  不可知孤立某一个谱。该法是对立的,不是纯属的。“三基本上”原则肯定是不对的。试想:若覆盖网一样的素养
  能,一百个实体(共一千单特性)
的E–R图,肯定比较二百只实体(共二千只特性) 的E–R图,要好得差不多。

  提倡“三丢掉”原则的目的,是防范读者以打补丁技术,不断地指向数据库进行追加删改,使公司数据库变成了任性 
  设计数据库表的“垃圾堆”,或数库表的“大杂院”,末了导致数据库被的基本表、代码表、中间表、临时表 
  杂乱无章,不计其数(即动态创表而益说明数据),导致企事业单位之信体系无法保障而瘫痪。 

  提倡“三丢”原则,是叫读者学会使用数据库设计技术进行系统的多少并。数据并的步子是拿文件系统集成
  为利用数据库,将采取数据库集成为主题数据库,将主题数据库集成为全局综合数据库。集成的程度更强,数据
  共享性就越来越强,信息孤岛现象即进一步少,整个公司信息体系的大局E—R图中实体的个数、主键的个数、属性的个数
  就会更加少。

  
“三大抵”原则任何人都足以就,该规范是“打补丁方法”设计数据库的歪理学说。“三丢失”原则是丢失使强劲的 
  原则,它要求发生比高的数据库设计技术和办法,不是任何人都能够不辱使命的,因为该原则是杜绝用“打补丁方法” 
  设计数据库的理论依据。 

  提倡“三不见”原则的目的,是预防读者以打补丁技术,不断地针对数据库进行多删改,使企业数据库变成了随便
  设计数据库表的“垃圾堆”,或数额库表的“大杂院”,最后造成数据库中之基本表、代码表、中间表、临时表
  杂乱无章,不计其数,导致企事业单位的音信体系无法保护而瘫痪。

14. 加强数据库运行效率的办法 
  在加的系统硬件与系统软件条件下,提高数据库系统的运作效率的章程是: 
   (1) 在数据库物理设计时,降低范式,增加冗余, 少用触发器,
多用存储过程。 
   (2)
当计算非常复杂、而且记录条数非常巨大时(例如一千万漫漫),复杂计算而优先在数据库外面,以文件系统方 
    式用C++语言计算处理得后,最后才入库追加到说明中去。这是电信计费系统规划的经历。 
   (3)
发现有表的记录太多,例如超一千万漫漫,则要针对该表进行水平划分。水平划分的做法是,以该表主键 
    PK的某部值也线,将该表的笔录水平划分为少独说明(即好表维护
表行数了大 手动分割为寡单
 建个片表明union的视图对程序透明)。若觉察之一表底字段太多,例如超八十单,则 
    垂直细分该表,将原本的一个表明说为片个说明。 
   (4)
对数据库管理体系DBMS进行系统优化,即优化各种系统参数,如缓冲区个数。 
   (5) 在利用面向数据的SQL语言进行次设计时,尽量利用优化算法。 
    总之,要加强数据库的运转效率,必须由数据库系统级优化、数据库设计级优化、程序实现级优化,这三 
    个层次上同时下功夫。 

  
“三差不多”原则任何人都好得,该原则是“打补丁方法”设计数据库的歪理学说。“三丢失”原则是丢失而强劲的
  原则,它要求来比高的数据库设计技术与措施,不是任何人都能一气呵成的,因为该标准是杜绝用“打补丁方法”
  设计数据库的理论依据。

  上述十四个技术,是众多人数在大量之数据库分析与规划执行备受,逐步总结下的。对于这些经历的运,读者不能够大拉硬套,死记硬背,而如消化理解,实事求是,灵活掌握。并逐步到位:在使被前行,在向上中利用。

14. 增高数据库运行效率的道
  以给定的体系硬件和网软件条件下,提高数据库系统的运转效率的方式是:
   (1) 在数据库物理设计时,降低范式,增加冗余, 少用触发器,
多用存储过程。
   (2)
当计算非常复杂、而且记录条数非常巨大时(例如一千万久),复杂计算而优先以数据库外面,以文件系统方
    式用C++语言计算处理到位以后,最后才入库追加至说明中错过。这是电信计费系统规划之经历。
   (3)
发现之一表底笔录太多,例如超一千万长达,则使对准该表进行水平划分。水平划分的做法是,以该表主键
    PK的之一值也线,将该表的记录水平划分为零星个说明。若发现有表的字段太多,例如超八十只,则
    垂直细分该表,将本的一个表说为少单说明。
   (4)
对数据库管理体系DBMS进行系统优化,即优化各种系统参数,如缓冲区个数。
   (5) 在采用面向数据的SQL语言进行次设计时,尽量用优化算法。
    总之,要增长数据库的运作效率,必须由数据库系统级优化、数据库设计级优化、程序实现级优化,这三
    个层次上以下功夫。

转载自:http://www.javaeye.com/topic/281611

  上述十四个技巧,是无数丁在大方之数据库分析和规划执行备受,逐步总结下的。对于这些经历的使用,读者
  不可知生拉硬套,死记硬背,而设消化理解,实事求是,灵活掌握。并日益做到:在以被前行,在前进中行使。

=================================

 

denormalization在DATABASE里怎么解释?给个例 

辞典:反向规格化, 阻碍正常化
就是我们通常所说的逆规范化.
比如在一个表里设置两个主键.
比如在两个表之间的关系为多对多关系.
等等都是违反标准范式的
无论是规范化还是逆规范化都是为了提高数据库性能.
初学者还是尽量做到规范化的好.

              后记:个人于赞同原著观点。本文作为学习资料,仅供参考!
  Rick·bao 2015年7月24日