关系型数据库

关系型数据库的两个基本概念:E-R图和三大范式

1.E-R模型

(1)概念

当前的数据库都是根据E-R模型设计的

  • E表示entry,实体
  • R表示relationship,关系
  • 一个实体转换为数据库中的一个
  • 关系描述两个实体之间的对应规则,包括一对一,一对多,多对多
    如:
    博客(实体)与 用户(实体)-----关系是:一对多
    用户(实体)与 博文(实体)------关系是:一对多

2 .三大范式

经过研究和经验,对数据库的设计提出了一些规范,这些规范被称为范式

  • 第一范式(1NF):列不可拆分,即无重复的域
  • 第二范式(2NF):唯一标识,即拥有实体的唯一标识(如:身份证,id号等)
  • 第三范式(3NF):引用主键,即每列数据都与主键直接相关
    关系型数据库有六种范式。一般来说,数据库只需满足第三范式就可以

3.范式判断案例

1)范式判断:是否符合第一范式?

第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项
关系型数据库
不符合第一范式,因为联系方式这一列还可以再分为邮箱和电话
正确的为:
关系型数据库

2)范式判断:是否符合第二范式

第二范式指每个表中必须仅有一个主键,其他数据元素必须与主键的关系是一一对应,这种关系称为函数依赖
第二范式:符合第一范式的条件下,消除部分函数依赖
关系型数据库
不符合,因为班级地址依赖于班级班级编号,剩下的列依赖于姓名,应分为两个表
关系型数据库

3)范式判断:是否符合第二范式?

关系型数据库
1)每一名学生的学号、姓名、系名、系主任这些数据重复多次。每次系与对应的系主任的数据也重复多次(数据冗余过大
2)假如学校新建了一个系,但是暂时还没有招收任何学生,那么无法将系名与系主任单独的添加到数据表中(插入异常
3)假如将某个系中所有学生相关的记录都删除,那么所有系与系主任的数据也就随之消失了(删除异常
4)假如李小明转系到法律系,那么为了保证数据库中数据的一致性,需要修改三条记录中系与系主任的数据(修改异常
将上表分为以下几个表就可以了
关系型数据库
关系型数据库

4)范式判断:是否符合第三范式?

第三范式:每个表必须只有一个主键
关系型数据库
不符合,完全符合了第二范式,但是薪资等级和奖学金之间存在函数依赖性,所以分割表
关系型数据库

4.范式

  • 三大范式只是一般设计数据库需要遵循的基本规范,由此可以建立冗余较小、结构合理的数据库
  • 如果有特殊需求,需要根据需求创建数据库,数据库的设计:需求>性能>表结构
  • 所以不应一味的追求符合三大范式去创建数据库