一:表中应该避免可为空的列;

二:表不应该有重复的值或者列;

三: 表中记录应该有一个唯一的标识符 
  在数据库表设计的时候,数据库管理员应该养成一个好习惯,用一个ID号来 唯一的标识行记录,而不要通过名字、编号等字段来对纪录进行区分。每个表都应该有一个ID列,任何两个记录都不可以共享同一个ID值。另外,这个ID值最 好有数据库来进行自动管理,而不要把这个任务给前台应用程序。否则的话,很容易产生ID值不统一的情况。
  另外,在数据库设计的时候,最好还能 够加入行号。如在销售订单管理中,ID号是用户不能够维护的。但是,行号用户就可以维护。如在销售订单的行中,用户可以通过调整行号的大小来对订单行进行 排序。通常情况下,ID列是以1为单位递进的。但是,行号就要以10为单位累进。如此,正常情况下,行号就以10、20、30依次扩展下去。若此时用户需 要把行号为30的纪录调到第一行显示。此时,用户在不能够更改ID列的情况下,可以更改行号来实现。如可以把行号改为1,在排序时就可以按行号来进行排 序。如此的话,原来行号为30的纪录现在行号变为了1,就可以在第一行中显示。这是在实际应用程序设计中对ID列的一个有效补充。这个内容在教科书上是没 有的。需要在实际应用程序设计中,才会掌握到这个技巧。

四:数据库对象要有统一的前缀名 
  一个比较复杂的应用系统,其对应的数据库表往往以千计。若让数据库管理员看到对象名就了解这个数据库对象所起的作用,恐怕会比较困难。而且在数据库对象引用的时候,数据库管理员也会为不能迅速找到所需要的数据库对象而头疼。
   为此,笔者建立,在开发数据库之前,最好能够花一定的时间,去制定一个数据库对象的前缀命名规范。如笔者在数据库设计时,喜欢跟前台应用程序协商,确定 合理的命名规范。笔者最常用的是根据前台应用程序的模块来定义后台数据库对象前缀名。如跟物料管理模块相关的表可以用M为前缀;而以订单管理相关的,则可 以利用C作为前缀。具体采用什么前缀可以以用户的爱好而定义。但是,需要注意的是,这个命名规范应该在数据库管理员与前台应用程序开发者之间达成共识,并 且严格按照这个命名规范来定义对象名。
  其次,表、视图、函数等最好也有统一的前缀。如视图可以用V为前缀,而函数则可以利用F为前缀。如此数据库管理员无论是在日常管理还是对象引用的时候,都能够在最短的时间内找到自己所需要的对象。

五:尽量只存储单一实体类型的数据 
  这里将的实体类型跟数据类型不是一回事,要注意区分。这里讲的实体类型 是指所需要描述对象的本身。笔者举一个例子,估计大家就可以明白其中的内容了。如现在有一个图书馆里系统,有图书基本信息、作者信息两个实体对象。若用户 要把这两个实体对象信息放在同一张表中也是可以的。如可以把表设计成图书名字、图书作者等等。可是如此设计的话,会给后续的维护带来不少的麻烦。
   如当后续有图书出版时,则需要为每次出版的图书增加作者信息,这无疑会增加额外的存储空间,也会增加记录的长度。而且若作者的情况有所改变,如住址改变 了以后,则还需要去更改每本书的记录。若这个作者的图书从数据库中全部删除之后,这个作者的信息也就荡然无存了。很明显,这不符合数据库设计规范化的需 求。
  遇到这种情况时,笔者建议可以把上面这张表分解成三种独立的表,分别为图书基本信息表、作者基本信息表、图书与作者对应表等等。如此设计以后,以上遇到的所有问题就都引刃而解了。

mysql数据库设计学习---数据库设计规范化的五个要求相关推荐

  1. mysql dba系统学习-数据库事务详解

    mysql dba系统学习-数据库事务详解 上个星期去面试数据库管理员的工作,笔试通过之后就是直接的面试,他问了我一个问题,叫我介绍哈数据库的事务的看法和理解,但是不知所错的没有章法的乱答一气,唉唉, ...

  2. 模式设计学习——工厂设计与策略设计

    模式设计学习--工厂设计与策略设计 文章目录 模式设计学习--工厂设计与策略设计 前言 一.工厂模式与策略模式是什么? 二.实现 1.工厂模式 2.策略模式 总结 前言 记录笔者在工作学习中总结的知识 ...

  3. MySQL数据库(1)~~一起学习数据库冲冲冲

    MySQL数据库~~一起学习数据库冲冲冲 数据库操作 1.显示当前数据库 2.创建数据库 3.使用/选中数据库 4.删除数据库 数据库表操作 1.创建表 2.查看表 3.查看表结构 4.删除表 5.表 ...

  4. MySQL数据库课程设计_什么是数据库?如何学习数据库?

    工业自动化领域,大家经常接触到上位机软件,比如我们常用的WinCC,IFix,FactoryTalk View,WiSCADA等,都会牵扯到历史数据的存储,用于历史趋势,历史报警,报表的显示,很多公司 ...

  5. php spry文本域_《PHP和MySQL Web 开发》第8章 设计Web数据库

    封面人物 刘承羽 前言 这是我学习<PHP和MySQL Web 开发>的读书笔记,一些重要的知识点我会记录下来,当然只会写我觉得重要的. 如果有幸有人看到这个学习笔记了,你要结合着书看,不 ...

  6. mysql部门人员排序设计_MySQL数据库访问性能优化

    MYSQL应该是最流行的WEB后端数据库.大量应用于PHP,Ruby,Python,Java 等Web语言开发项目中,无论NOSQL发展多么快,都不影响大部分架构师选择MYSQL作为数据存储. MYS ...

  7. 初学数据库---数据库设计学习

    数据库设计学习笔记 一.理解并口述(技术点和面试点) 1.数据库简介 口述1:什么是数据?(理解并掌握) 数据(Data)是描述事物的标记符号.例如: 人的身高数据是170cm, 体重数据是60kg, ...

  8. MySQL设计工厂管理数据库(Ⅰ)—表结构设计

    MySQL设计工厂管理数据库(Ⅰ)-表结构设计 引言 设计思路 工厂管理E-R图 设计工厂管理逻辑图 实现过程 项目(project)表实现 职工(staff)表设计 零件(components)表设 ...

  9. MySQL数据库表结构的设计

    一.前言 1.1 关系型数据库 数据库关系型模型的概念最早由"关系数据库之父"之称的埃德加·弗兰克·科德(Edgar Frank Codd或E. F. Codd)博士提出,1970 ...

最新文章

  1. ASIHTTPRequest 简单应用
  2. linux ftp 命令集合
  3. 云中家园FTP搜索站点开通
  4. 字符串反转python_Python 反转字符串(reverse)的方法小结
  5. windows apache html5,Windows服务器下的IIS和Apache性能比较
  6. [翻译] ABCIntroView
  7. wpf 切换搜狗输入法英文_CPA《财管》考试,没时间按计算器,用搜狗V模式,真香!...
  8. pycharm error:no module named caffe
  9. c/c++教程 - 总集1. c基础语法
  10. linux程序内存布局,关于Linux中程序的内存布局
  11. android消息,android消息机制
  12. 似然(Likelihood)
  13. MyBatis基础:MyBatis入门(1)
  14. 医学编码与计算机,医学编码培训课件.ppt
  15. 随机过采样与随机欠采样 代码
  16. 贝叶斯⑤——搜狗新闻分类实战(jieba + TF-IDF + 贝叶斯)
  17. 鸭子-策略模式(Strategy)
  18. 费纳姆密码-二进制密码
  19. 安静品生活,这个周末在《Cabbage Harvest》里种菜如何?
  20. SysML精粹学习笔记二

热门文章

  1. 基础训练——合并电话簿
  2. 初创团队持续集成的落地与实现(gitlab+python)
  3. 怎么运行Typescript
  4. Facebook的bigpipe
  5. SpringCloud的微服务网关:zuul(理论)
  6. Python创建简单的HTTP服务
  7. 解决Nginx与mysql勾结的错误
  8. android各种color值
  9. Svn正确的使用方法
  10. 18个设计精美的旅游及酒店网站案例