引言

数据库表结构设计有一套规范。设计出的表结构应尽量避免不必要地冗余,同时要确证灵活性。只需要遵守公认的范式,就可以达到较合理地设计效果。同时,这些范式也是评价一个数据库表结构设计是否合理的标准。

范式:

1NF、2NF、3NF、BCNF,它们是一级包含一级的关系,即必须先满足第一范式,再判断是否满足第二范式。如果已经满足第二范式,再判断是否满足第三范式。1NF、2NF、3NF、BCNF是逐级递进的。只有符合范式要求的表结构设计才能说是合理的设计。

下面以学生成绩管理数据库来讲解这些范式:

1NF

表示属性值是不可分割

比如学生信息表t_student:

student
201501Mike

student字段不满足第一范式。因为该属性值可以再分割变为:

id name
201501 Mike

2NF

非主要的属性,必须完全依赖主要的属性,不能部分依赖

比如选课信息表:

选课人 课程 上课老师 教材 老师职称
Mike 数据库 Jack 《数据库原理》 副教授

(选课人、课程)才能确定这张表的唯一行。所以它是主属性。但是教材只与课程有关。教材并不依赖选课人。

那么问题来了,假设1万个选课行,那么教材发生修改就需要修改这1万行。而且如果某一门课,没人选,那如何插入呢?

所以这不符合2NF。解决方案是拆分成过个表。

3NF

表示非主属性不要依赖于其他非主属性

还以上述选课表为例。

选课人 课程 上课老师 老师职称
Mike 数据库 Jack 副教授

同样,主属性是(选课人,课程),但是老师职称跟选课人没关系。只和上课老师相关。所以这就是非主属性依赖其他非主属性。不满足第三范式。

数据库范式-表结构设计规范相关推荐

  1. SQL巩固以及数据库、表结构优化

    SQL巩固&数据库.表结构优化 前言 对于初级程序开发工程师而言,SQL是很多人的弱项,为此我给大家来做一下总结,希望能够帮到你们. 课程说明 1.介绍项目实战开发过程中常用的MySQL函数及 ...

  2. 数据库间表结构对比和数据对比

    概述 对于企业软件开发或实施人员,在软件实施过程中,经常会遇到了这么一个问题,我们在客户那边安装了整个ERP程序并且向数据库中导入了客户提供给我的基础资料,程序进入试运行阶段,在试运行期间,客户反映出 ...

  3. 把数据库的表结构导出Excel格式

    把数据库的表结构导出Excel格式 话不多说先上代码! SELECT COLUMN_NAME 列名, COLUMN_TYPE 数据类型, DATA_TYPE 字段类型, CHARACTER_MAXIM ...

  4. MySQL 对比数据库的表结构

    有时候,需要对比一下测试环境和生产环境中,数据库的表结构是否有所差异.有两个常用的工具. AmpNmp.DatabaseCompare GUI 界面,支持多种数据库(MySQL.SQL Server. ...

  5. dbisam数据库主从表结构的使用方法

    要使用DBISAM数据库主从表结构,需用到下列控件: 一个TDBISAMTable或者TDBISAMQuery控件,命名为tblMaster或者qryMaster, 一个(或多个)TDBISAMTab ...

  6. navicat 导出数据库的表结构

    navicat 导出数据库的表结构 (1)打开navicat for Mysql,点击页面上方的"new query" (2)在"SQL Editior"中写入 ...

  7. MySQL数据库修改表结构

    修改表结构可以使用: alter table 语句,多个修改字段之间使用逗号分隔 前几篇博文把goods表中的商品分类和品牌信息已经更改成了商品分类id和品牌id,为了使数据库中表的字段名称标准化,需 ...

  8. ORACLE数据库对比表结构

    有时候会有某种需求:需要对比两个表的表结构是否一致,有时候甚至是整个数据库所有表的表结构对比.......表结构对比无非就是字段名.字段类型.字段数据类型.以及字段的顺序的对比.如果需要对比表结构,可 ...

  9. sybase数据库导出mysql_sybase导出数据库的表结构命令

    在不同平台上导数据时,只能用BCP命令,但是BCP命令不能导出数据库表结构,所以需进行数据库表结构的导出. 在sybase12.5版本以上,可以用如下方式导出表结构: ddlgen –Usa –Pxx ...

最新文章

  1. linux dump用法,Linux命令之tcpdump命令用法介绍
  2. InnoDB O_DIRECT选项漫谈(一)【转】
  3. 不同局域网内经Internet的P2P通信技术总结
  4. html加载出来图片乱掉,HTML基础 img alt 图片加载失败时,出现替代文本
  5. C++成员变量和成员函数分开存储
  6. 水面的简单渲染 – Gerstner波
  7. JAVA企业级应用服务器之TOMCAT实战
  8. 数据结构(C语言版)+数据结构题集(C语言版)
  9. 注册google的gmail邮箱显示此手机号无法用于验证--解决
  10. PhalAPI学习笔记 ——— 第三章细致讲解使用PSR-4规范自定义你的命名空间
  11. SpringMVC -- Restful风格的API
  12. 2021年度汇总丨20大热门TWS耳机功能配置汇总解析
  13. 华为人均工资70万人人想要,可华为员工16项标准你能做到几条?
  14. Windows10黑体字体
  15. Python 基础 之 词云(词的频率统计大小成图)的简单实现(包括图片词云,词云颜色,词的过滤)
  16. Elasticsearch 使用java分页查询条数超过1w的解决办法 -search_after方式
  17. RPC远程调用(RMI的方式实现RPC、HttpClient实现RPC远程调用)
  18. 华为鸿蒙第一期公测,华为鸿蒙开启第二轮公测,新增7款机型,有你的吗?
  19. Spring【Bean的作用域与生命周期】
  20. 我屮艸芔茻,mongo居然可以自动删除数据

热门文章

  1. Linux系统安装ffmpeg + h264视频编码
  2. vue实现天地图行政区(新疆为例)轮廓描边(一)
  3. 大型网站技术架构核心原理与案例分析学习笔记(理论篇)
  4. opencv遍历实现灰度图转伪彩色图[C/C++][附applyColorMap方法]
  5. 玩诈欺的小杉(详细解析+代码)
  6. TCP协议中的序列号
  7. Java命名规则和Java命名规范
  8. 土拨鼠网站日记管理(分析推送二合一)】宝塔插件之自动爬取全站URL推送说明书
  9. SQL注入漏洞,攻防必杀技!
  10. IBM ServerGuide9.40 for IBM X3950 X5 安装2008 R2操作系统