这两天笔者几篇文章介绍了改数据库、实体-的文章. 联关文章的地址

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按钮,通

过它义定字段的值城。

参照完整性:用PK、FK、表级触发器来现实。

用户义定完整性:它是一些业务规则,用存储过程和触发器来现实。

13. 止防数据库计划打补丁的法方是“三少则原”

(1) 一个数据库中表的个数越少越好。只有表的个数少了,才能明说系统的E--R图少而精,去掉了重复的过剩的

实体,形成了对客观天下的高度象抽,停止了系统的数据成集,止防了打补丁式的计划;

(2) 一个表中组合主键的字段个数越少越好。因为主键的作用,一是建主键索引,二是做为子表的外键,所以组

合主键的字段个数少了,不仅节俭了运行时光,而且节俭了索引存储空间;

(3) 一个表中的字段个数越少越好。只有字段的个数少了,才能明说在系统中不存在数据重复,且很少有数据冗

余,更主要的是催促读者学会“列变行”,这样就止防了将子表中的字段拉入到主表中去,在主表中留下许

多空余的字段。所谓“列变行”,就是将主表中的一部分内容拉出去,另外独自建一个子表。这个法方很简

单,有的人就是不习惯、不纳采、不执行。

数据库计划的用实则原是:在数据余冗和理处速度之间找到适合的平衡点。“三少”是一个体整观念,综合观念,

不能伶仃某一个则原。该则原是绝对的,不是绝对的。“三多”则原定肯是错误的。试想:若盖覆系统样同的功

能,一百个实体(共一千个属性) 的E--R图,定肯比二百个实体(共二千个属性) 的E--R图,要好多得。

倡导“三少”则原,是叫读者学会利用数据库计划巧技停止系统的数据成集。数据成集的步调是将文件系统成集

为应用数据库,将应用数据库成集为题主数据库,将题主数据库成集为全局综合数据库。成集的平水越高,数据

共享性就越强,信息岛孤象现就越少,全部企业信息系统的全局E—R图中实体的个数、主键的个数、属性的个数

就会越少。

倡导“三少”则原的的目,是止防读者利用打补丁巧技,不断地对数据库停止增改删,使企业数据库变成了意随

计划数据库表的“垃圾堆”,或数据库表的“大杂院”,最后成造数据库中的基本表、代码表、旁边表、临时表

章无乱杂,数其计不,致导企事业单位的信息系统没法护维而瘫痪。

“三多”则原任何人都可以做到,该则原是“打补丁法方”计划数据库的歪理学说。“三少”则原是少而精的

则原,它要求有较高的数据库计划巧技与艺术,不是任何人都能做到的,因为该则原是绝杜用“打补丁法方”

计划数据库的理论依据。

14. 高提数据库运行效率的法办

在给定的系统硬件和系统软件条件下,高提数据库系统的运行效率的法办是:

(1) 在数据库物理计划时,下降范式,加增余冗, 用少触发器, 多用存储过程。

(2) 当盘算非常庞杂、而且录记条数非常大巨时(例如一千万条),庞杂盘算要先在数据库面外,以文件系统方

式用C++言语盘算理处实现当前,最后才入库追加到表中去。这是电信计费系统计划的验经。

(3) 现发某个表的录记太多,例如超越一千万条,则要对该表停止平水分割。平水分割的做法是,以该表主键

PK的某个值为界限,将该表的录记平水分割为两个表。若现发某个表的字段太多,例如超越八十个,则

垂直分割该表,将来原的一个表解分为两个表。

(4) 对数据库管理系统DBMS停止系统优化,即优化各种系统参数,如缓冲区个数。

(5) 在用使面向数据的SQL言语停止程序计划时,尽量取采优化算法。

总之,要高提数据库的运行效率,必须从数据库系统级优化、数据库计划级优化、程序现实级优化,这三

个次层上同时下功夫。

上述十四个巧技,是多许人在大批的数据库分析与计划实践中,步逐总结出来的。对于这些验经的用运,读者不能生帮硬套,死记硬背,而要消化懂得,是求事实,活灵把握。并步逐做到:在应用中开展,在开展中应用。

文章结束给大家分享下程序员的一些笑话语录: 大家喝的是啤酒,这时你入座了。
你给自己倒了杯可乐,这叫低配置。
你给自已倒了杯啤酒,这叫标准配置。
你给自己倒了杯茶水,这茶的颜色还跟啤酒一样,这叫木马。
你给自己倒了杯可乐,还滴了几滴醋,不仅颜色跟啤酒一样,而且不冒热气还有泡泡,这叫超级木马。
你的同事给你倒了杯白酒,这叫推荐配置。
菜过三巡,你就不跟他们客气了。
你向对面的人敬酒,这叫p2p。
你向对面的人敬酒,他回敬你,你又再敬他……,这叫tcp。
你向一桌人挨个敬酒,这叫令牌环。
你说只要是兄弟就干了这杯,这叫广播。
有一个人过来向这桌敬酒,你说不行你先过了我这关,这叫防火墙。
你的小弟们过来敬你酒,这叫一对多。
你是boss,所有人过来敬你酒,这叫服务器。
酒是一样的,可是喝酒的人是不同的。
你越喝脸越红,这叫频繁分配释放资源。
你越喝脸越白,这叫资源不释放。
你已经醉了,却说我还能喝,叫做资源额度不足。
你明明能喝,却说我已经醉了,叫做资源保留。
喝酒喝到最后的结果都一样
你突然跑向厕所,这叫捕获异常。
你在厕所吐了,反而觉得状态不错,这叫清空内存。
你在台面上吐了,觉得很惭愧,这叫程序异常。
你在boss面前吐了,觉得很害怕,这叫系统崩溃。
你吐到了boss身上,只能索性晕倒了,这叫硬件休克。

转载于:https://www.cnblogs.com/jiangu66/archive/2013/04/18/3028405.html

数据库、实体-数据库设计原则-by小雨相关推荐

  1. mysql数据库的原则_mysql数据库的表设计原则

    [职责分离原则] 职责分离原则是指在设计的时候应当考虑到数据的产生,聚合使用等原则,每个系统干自己能干的事情,每个系统只干自己的事情.一个数据表应该放在哪个系统中,通常取决于几点: 1. 谁产生这个信 ...

  2. 数据库设计(二)——数据库设计原则

    一.数据库表的设计原则 1.不应该针对整个系统进行数据库设计,而应该根据系统架构中的组件划分,针对每个组件所处理的业务进行组件单元的数据库设计:不同组件间所对应的数据库表之间的关联应尽可能减少,如果不 ...

  3. [架构设计]-- 数据库设计原则

    转自:http://blog.sina.com.cn/s/blog_735fb3b40100svet.html 数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库 ...

  4. 旅游项目之数据库表的设计

    一.数据库表的设计思路 1.从业务出发 不应该针对整个系统进行数据库表的设计,而应该根据系统架构中的组件划分,针对每个组件所处理的业务进行组件单元的数据库设计:不同组件间对应的数据库表之间的关联尽可能 ...

  5. php 如何设计索引_Mysql学习浅谈mysql的索引设计原则以及常见索引的区别

    <Mysql学习浅谈mysql的索引设计原则以及常见索引的区别>要点: 本文介绍了Mysql学习浅谈mysql的索引设计原则以及常见索引的区别,希望对您有用.如果有疑问,可以联系我们. 索 ...

  6. 数据库设计原则【转】

    1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体. 在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证 ...

  7. 数据库设计原则:应该使用软删除吗?

    在数据库设计中,当删除一条记录的时候,是加一个标记位还是直接删除这一行? 物理删除:真删除,数据消失. 逻辑删除:假删除,数据存在,只是用一个字段来标记该条数据"已删除". 参考了 ...

  8. 性能优化(数据库设计原则)

    为什么80%的码农都做不了架构师?>>> 优化设计 数据库设计 数据库设计是一个软件项目成功的基石 .数据库设计也是门学问 . 在项目早期由开发者进行数据库设计(后期调优需要DBA ...

  9. 关系型数据库设计原则

    1. 原始单据与实体之间的关系  可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.  在特殊情况下,它们可能是一对多或多对一的关系,即一张原始 ...

最新文章

  1. C#中调用C++ 动态链接库 dll 的方法
  2. imag--复数的虚数部分
  3. 阿里8亿加持B端智能化后,本地生活服务更好做了吗?
  4. 【收藏】解决mac问题:打不开,因为它来自身份不明的开发者
  5. html应用中心模板,HTML5--应用网页模板
  6. 用SmarterFox替换Internet Explorer的“加速器”
  7. Halcon—Tuple中符号的含义
  8. img 固定在父容器底部_容器苗容器怎么选?六种容器特点详解!
  9. 可变字典 NSMutableDictionary
  10. 架构系列一:大型项目架构演进过程
  11. 大话集群和负载均衡,太强了!
  12. SQL Server 监视(Monitoring)体系架构
  13. 牛客竞赛语法入门班选择结构习题【完结】
  14. 去马赛克 Demosaic
  15. 数据分析需要学习的技能有哪些?
  16. 一文了解二进制和CPU工作原理
  17. java通过代理使用redis,redis自动关闭连接,释放资源
  18. Word文件总页码不含首页和目录设置方法
  19. Android4.0新特性 中文翻译
  20. 基于JSP的网上订餐管理系统的设计与实现(包调试成功)

热门文章

  1. 非科班出身MCU工程师,C语言基础重塑之路
  2. Android 查看蓝牙日志
  3. MEC打通5G应用场景的“经络”
  4. 橙色云CDS|研发设计产业互联网新业态
  5. SAP 物料凭证历史查询--(后台配置)
  6. 2023计算机毕业设计SSM最新选题之javajava高校社团管理系统km21e
  7. Sission与aplication 在servlet中用法汇总
  8. kiss of death
  9. 22年低分上岸成都电子科技大学计算机经验贴
  10. matlab求马尔可夫转移矩阵,matlab – 估计马尔可夫转移矩阵的置信区间