数据规范化设计

一、数据规范化

  仅有好的RDBMS并不足以避免数据冗余,必须在数据库的设计中创建好的表结构
Dr E.F.codd 最初定义了规范化的三个级别,范式是具有最小冗余的表结构
这些范式是:
1、第一范式(1st NF -First Normal Fromate)
2、第二范式(2nd NF-Second Normal Fromate)
3、 第三范式(3rd NF- Third Normal Fromate)

第一范式 (1st NF):

第一范式的目标是确保每列的原子性
如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)
 
第二范式 (2nd NF):

如果一个关系满足1NF,并且除了主键以外的其他列,都依赖与该主键,则满足第二范式(2NF)
第二范式要求每个表只描述一件事情
 
第三范式 (3rd NF):

如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式(3NF)

二、规范化实例

假设某建筑公司要设计一个数据库,公司的业务规则概括说明如下:

1、公司承担多个工程项目,每一项工程有:工程号、工程名称、施工人员等
2、公司有多名职工,每一名职工有:职工号、姓名、性别、职务(工程师、技术员)等
3、公司按照工时和小时工资率支付工资,小时工资率由职工的职务决定(例如,技术员的小时工资率与
工程师不同)
4、公司定期制定一个工资报表

如图所示(工资表):

如图所示(工时表):

表中包含大量的冗余,可能会导致数据异常:
更新异常 :
------例如,修改职工号=1001的职务,则必须修改所有职工号=1001的行

添加异常:
------若要增加一个新的职工时,首先必须给这名职工分配一个工程。或者为了添加一名新职工的数据,先给这名职工分配一个虚拟的工程。(因为主关键字不能为空)

删除异常:
------例如,1001号职工要辞职,则必须删除所有职工号=1001的数据行。这样的删除操作,很可能丢失了其它有用的数据

采用这种方法设计表的结构,虽然很容易产生工资报表,但是每当一名职工分配一个工程时,都要重复输入大量的数据。这种重复的输入操作,很可能导致数据的不一致性。
 
应用范式规范化设计
一张表描述了多件事情

应用第二范式规范化

应用第三范式规范化

四、规范化和性能的关系

1、为满足某种商业目标,数据库性能比规范化数据库更重要
------通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间
------通过在给定的表中插入计算列(如成绩总分),以方便查询

2、进行规范化的同时,还需要综合考虑数据库的性能



感谢每一个认真阅读我文章的人!!!
如果下面这些资料用得到的话可以直接拿走:

1、自学开发或者测试必备的完整项目源码与环境

2、测试工作中所有模板(测试计划、测试用例、测试报告等)

3、软件测试经典面试题

4、Python/Java自动化测试实战.pdf

5、Jmeter/postman接口测试全套视频获取

我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。如果在学习或工作中遇到问题可以直接点击此链接进群询问,群里也会有大神帮忙解答,也可以手动添加群号 743262921 备注222

数据库设计规范(详细)相关推荐

  1. SQL Server 数据库设计规范

    2014-08-29 09:09 by pursuer.chen, 4821 阅读, 15 评论, 收藏, 编辑 数据库设计规范 1.简介 数据库设计是指对一个给定的应用环境,构造最优的数据库模式,建 ...

  2. 财务数据mysql库设计_数据库设计规范 - MySQL

    数据库设计规范 表达是与否概念的字段,必须使用 is_xxx的方式命名,数据类型是 unsigned tinyint( 1表示是,0表示否) 任何字段如果为非负数,必须是 unsigned. 表名.字 ...

  3. SQL Server数据库设计规范

    数据库设计规范 1.简介 数据库设计是指对一个给定的应用环境,构造最优的数据库模式,建立数据库及其他应用系统,使之能有效地存储数据,满足各种用户的需求.数据库设计过程中命名规范很是重要,命名规范合理的 ...

  4. win七系统如何卸载MySQL_win7系统卸载SQL2008R2数据库的详细教程

    用过SQL2008R2数据库的朋友都知道,安装起来容易卸起来麻烦,可是在win7 32位旗舰版系统就不知道怎么卸载SQL2008R2数据库了.其实卸载SQL2008R2数据库的方法也很简单,可直接通过 ...

  5. Oracle数据库设计规范

    Oracle数据库设计规范 一.命名规范 二.建表规范 三.索引规范 四.SQL开发规范 参考网上一些其他的数据库设计规范,结合Oracle官网设计文档做出的设计规范. 一.命名规范 [强制]不允许使 ...

  6. 数据库-优化-MYSQL数据库设计规范

    MYSQL数据库设计规范 数据库命名规范 a.采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成; b.命名简洁明确(长度不能超过30个字符); c.例如:user, ...

  7. mysql数据库设计规范_MYSQL数据库设计规范与原则

    MYSQL数据库设计规范 1.数据库命名规范 采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成; 命名简洁明确(长度不能超过30个字符); 例如:user, stat ...

  8. mysql 数据库设计规范_MYSQL数据库设计规范与原则

    MYSQL数据库设计规范 1.数据库命名规范 采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成; 命名简洁明确(长度不能超过30个字符); 例如:user, stat ...

  9. ERP 系统数据库设计规范

    数据库设计规范是个技术含量相对低的话题,只需要对标准和规范的坚持即可做到.当系统越来越庞大,严格控制数据库的设计人员,并且有一份规范书供执行参考.在程序框架中,也有一份强制性的约定,当不遵守规范时报错 ...

  10. 数据库设计规范 zhuan

    在这里总结一点吧,方便以后的使用 代码 数据库设计规范 数据库表命名规范  此规范包括表名命名规范,索引命名规范,外键命名规范和字段名命名规范.  表名命名规则  数据库表的命名以是名词的复数形式且都 ...

最新文章

  1. 10分钟学会Google Map API
  2. Unix时间戳(Unix timestamp)转换
  3. javascript php 性能,JavaScript知识点总结之如何提高性能_javascript技巧
  4. 细数开源历史上的九个重大事件
  5. loadrunner录制事件为0_测试工具LoadRunner常见问题汇总,解决方案整理
  6. unity鼠标控制镜头旋转_Unity Camera教程之 摄像机跟随鼠标移动而旋转
  7. mysql my.cnf 配置_MySQL——my.cnf参数设置说明
  8. virtualbox android分辨率,VirtualBox 修改Android x86虚拟机的分辨率
  9. 02-Http请求与响应全解
  10. paip.SVN merge分支合并到主干
  11. 快速查找Unity中的死循环
  12. Java数据结构:双向链表Double Linked List基础笔记
  13. 各协议的协议号和端口号
  14. 【论文阅读笔记】Securing software by enforcing data-flow integrity
  15. 用计算机制作多媒体作品小学,小学信息技术六年级上册《多媒体作品制作—古诗欣赏》教案...
  16. 2022年四川省科技型中小企业申报条件材料流程及奖励扶持
  17. AndroidStudio合并冲突失败,总在merging状态
  18. 备案域名服务器DNS修改,未备案域名也可以用高防CDN加速
  19. java代码拉马车游戏,8届省赛java 拉马车
  20. 手把手教你做音乐播放器(八)桌面小工具(上)

热门文章

  1. 记录下准备蓝桥杯的过程吧
  2. Android手机便携式wifi的使用及无线数据传输(主要针对XP系统)
  3. 【目标跟踪论文阅读】Cooling-Shrinking Attack: Blinding the Tracker with Imperceptible Noises
  4. html caption属性,HTML caption align 属性 | 菜鸟教程
  5. 解决VS2013 对话框界面编程Caption中文乱码办法
  6. 华为USG6320做双线-基于源地址的策略路由
  7. 品牌设计与VI设计的不同之处
  8. HTML5网页设计盒子模型-内容+padding+boder+margin
  9. 计算机水平居中,excel表格居中设置可数据还是偏左-excel表格,页面设置选水平居中了,为什么预览时它......
  10. Android系统安装Linux 系统的ubuntu版本