数据库范式设计 和 反范式化设计

三大范式设计

数据库表中的所有字段都只具有单一属性

单一属性的列是由基本数据类型所构成的

设计出来的表都是简单的二维表

要求表中只具有一个业务主键,也就是说符合第二范式的表不能存在非主键列只对部分主键的依赖关系

每一个非主属性既不部分依赖于也不传递依赖于业务主键,也就是在第二范式基础上相处于非主键对主键的传递依赖

优点

可以尽量减少数据冗余

范式化的更新操作比反范式化更快

范式化的表通常比反范式的小

缺点

对于查询需要对多个表进行关联

更难进行索引优化

反范式化设计

反范式化是为了性能和读取效率的考虑而适当对数据库设计范式的要求进行违反

允许存在少量的冗余,用空间来换取时间

优点

减少表的关联

可以更好的进行索引优化

缺点

存在数据冗余及数据维护异常

对数据的修改需要更对成本

物理设计

命名规范

数据库、表、字段的命名要遵守可读性原则

使用大小写来格式化的库对象名字以获得良好的可读性

例如:使用custAddress而不是custaddress来提高可读性。

数据库、表、字段的命名要遵守表意性原则

对象的名字应该能够描述它所表示的对象

例如:

对于表,表的名称应该能够体现表中存储的数据内容;对于存储过程

存储过程应该能够体现存储过程的功能。

数据库、表、字段的命名要遵守长名原则

尽可能少使用或者不使用缩写

数据类型选择

当一个列可以选择多种数据类型时

优先考虑数字类型

其次是日期、时间类型

最后是字符类型

对于相同级别的数据类型,应该优先选择占用空间小的数据类型

浮点类型

注意float 和double 是非精度类型,如果是和金额相关尽量用decimal

日期类型

面试经常问道 timestamp 类型 与 datetime区别

datetime类型在5.6中字段长度是5个字节

datetime类型在5.5中字段长度是8个字节

timestamp 和时区有关,而datetime无关

 

原文地址:https://www.cnblogs.com/qin1993/p/12118326.html

时间: 2024-10-10 20:55:24

数据库范式设计 和 反范式化设计的相关文章

数据库范式的思考以及数据库的设计

数据库范式--通俗易懂[转] 数据库范式是数据库设计中必不可少的知识,没有对范式的理解,就无法设计出高效率.优雅的数据库.甚至设计出错误的数据库.而想要理解并掌握范式却并不是那 么容易.教科书中一般以关系代数的方法来解释数据库范式.这样做虽然能够十分准确的表达数据库范式,但比较抽象,不太直观,不便于理解,更难以记忆. 本文用较为直白的语言介绍范式,旨在便于理解和记忆,这样做可能会出现一些不精确的表述.但对于初学者应该是个不错的入门.我写下这些的目的主要是为了加强 记忆,其实我也比较菜,我希望当我

数据库范式的设计

数据库范式的设计     关系数据库就是通过二维表(行和列)来保存数据. 实体:现实世界中客观存在并可以被区别的事物.比如"一个学生"."一本书"."一门课"等等.值得强调的是这里所说的"事物"不仅仅是看得见摸得着的"东西",它也可以是虚拟的,不如说"老师与学校的关系". 属性:教科书上解释为:"实体所具有的某一特性",由此可见,属性一开始是个逻辑概念,比如说,&qu

[转]数据库范式的设计

数据库范式的设计     关系数据库就是通过二维表(行和列)来保存数据. 实体:现实世界中客观存在并可以被区别的事物.比如“一个学生”.“一本书”.“一门课”等等.值得强调的是这里所说的“事物”不仅仅是看得见摸得着的“东西”,它也可以是虚拟的,不如说“老师与学校的关系”. 属性:教科书上解释为:“实体所具有的某一特性”,由此可见,属性一开始是个逻辑概念,比如说,“性别”是“人”的一个属性.在关系数据库中,属性又是个物理概念,属性可以看作是“表的一列”. 元组:表中的一行就是一个元组. 分量:元组

数据库范式?编辑 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

数据库范式 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小. 目前关系数据库有六种范式:第一范式(1NF).第二范式(2NF).第三范式(3NF).巴斯-科德范式(BCNF).第四范式(4NF)和第五范式(5NF,还又称完美范式). 第一范式(1NF) 所谓第一范式(1NF)是指在关系模型中,对域添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,

【数据库设计-3】菜单设计

场景 我们在使用数据库时,经常会遇到菜单选项,比如个人信息表中有: "性别":男.女: "学历":大专以下.大专.本科.硕士及以上: "英语等级":英语四级.英语六级.专业八级: 等等: 这些菜单选项肯定需要在数据库中进行维护,当数据表很多时,菜单选项可能都会达到上百个,该如何设计呢? 下面将讲解设计方法. (设计方法不唯一,本人总结的也不代表最好的,仅供参考). 数据表设计 总共包含4个表,分别如下: 1. 2. 3. 4. 具体示例 1. 若

反人类设计

今天下午在回BUG的时候发现了一个特别奇葩的问题,那就是项目中经过多次商讨没有解决的高级选项,先上图: 在我看来这是一个很普通,很常规的问题,而在这里却成了高度敏感话题,描述一下目前存在的问题:在我没有选择省市区县的时候,断面是可以选择的.(断面定义,指区县下设立的一些监测点) 业务看法:当没有选择省市区县的时候,断面选项卡可以选择所有断面,注意:这个地方就有点反人类,我都没有筛选就给我出来一大堆的断面,让用户以为是BUG,而且会出现歧义,再次,业务需求,当我选择指定省的时候,也会加载所有断面,

数据库范式(转)

数据库范式是数据库设计中必不可少的知识,没有对范式的理解,就无法设计出高效率.优雅的数据库.甚至设计出错误的数据库.而想要理解并掌握范式却并不是那 么容易.教科书中一般以关系代数的方法来解释数据库范式.这样做虽然能够十分准确的表达数据库范式,但比较抽象,不太直观,不便于理解,更难以记忆. 本文用较为直白的语言介绍范式,旨在便于理解和记忆,这样做可能会出现一些不精确的表述.但对于初学者应该是个不错的入门.我写下这些的目的主要是为了加强 记忆,其实我也比较菜,我希望当我对一些概念生疏的时候,回过头来

数据库范式那些事

转载至:http://www.cnblogs.com/CareySon/archive/2010/02/16/1668803.html 简介 数据库范式在数据库设计中的地位一直很暧昧,教科书中对于数据库范式倒是都给出了学术性的定义,但实际应用中范式的应用却不甚乐观,这篇文章会用简单的语言和一个简单的数据库DEMO将一个不符合范式的数据库一步步从第一范式实现到第四范式. 范式的目标 应用数据库范式可以带来许多好处,但是最重要的好处归结为三点: 1.减少数据冗余(这是最主要的好处,其他好处都是由此而

MYSQL学习笔记——数据库范式及MYSQL优化整体思路

一.数据库范式                                                                               为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式. 1.1.第一范式(1NF:每一列不可包含多个值)      所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列