数据库设计三范式

三范式

第一范式:1NF 原子性   数据不可再分

例1.错误数据库表的设计

错误:违背数据库三范式的原子性

周行知      湖南       php

周行知       湖南      html

第二范式:2NF 唯一性  使得每一行 数据具有唯一性,并消除数据之间的部分依赖

例1   

create table tab1(

id int,

name varchar(10)

);

insert into tab1 values(1,'a');

insert into tab1 values(1,'a');


对比 

错误数据库设计

create table tab2(

id int,

name varchar(10),

primary key(id)

);


insert into tab2 values(1,'a');

insert into tab2 values(1,'a');


错误原因:违反数据库设计第二范式:唯一性

2.消除数据部分依赖

回到定义中去。

什么叫做依赖?

依赖,就是在一个表中,其中某个字段的值B可以由另一个字段值A来决定

字段B依赖字段A

字段Aj决定字段B

学生姓名      性别    课程名称    学分      成绩

周行知        男           计算机             2      100

选择"周行知",性别就确定。除非周行知不阴不阳

你确定性别男,难道你认为所有的男人都叫周行知吗?

主键决定其他字段

其他字段依赖主键

什么叫部分依赖?

如果某个字段,只依赖部分主键字段,此时就称为部分依赖

身份证号码     学生姓名      性别    课程名称                         学分        成绩

4301111111      周行知       男             计算机程序设计艺术          10      78

建议:销毁部分依赖

解决方案:

id int auto_increment primary key,

经验:每个表都要设计主键

第三范式  独立性,消除传递依赖。

使得每个字段都独立依赖与主键字段(独立性),而要消除其中部分主键字段的内部依赖---这种

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次...
    海边的蜗牛ng阅读 2,309评论 0 2
  • 数据库范式 范式的级别设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同...
    南乡清水阅读 2,994评论 1 6
  • 数据库设计三范式 设计数据库表的时候所依据的规范,共三个规范: 第一范式 数据库表中不能出现重复记录,每个字段是原...
    我可能是个假开发阅读 17,920评论 1 31
  • 避免以下: 数据冗余: 一列数据可以其他列也有,或可由其他列计算所得 维护异常 插入异常:表中的一个实体随另一实体...
    胖达_4b7e阅读 139评论 0 0
  • 1.《电话恐惧症》 如果有“电话恐惧症”这种病的话,我应该病得不轻。平时在学校里手机都关静音,所以同学想找我经常得...
    有颗荔枝阅读 305评论 0 0