和羞走,倚门回首,却把青梅嗅。

——李清照《点绛唇》

数据库设计

百度百科数据库设计定义:

  • 数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统

  • 数据库设计的设计内容包括:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的实施和数据库的运行和维护。

1. 数据库规范化

  • 好的数据库设计对数据的存储性能和后期的程序开发,都会产生重要的影响。建立科学的,规范的数据库就需要满足一些规则来优化数据的设计和存储,这些规则就称为范式

1.1 范式

目前关系数据库有六种范式:

  • 第一范式(1NF)
  • 第二范式(2NF)
  • 第三范式(3NF)
  • 巴斯-科德范式(BCNF)
  • 第四范式(4NF)
  • 第五范式(5NF,又称完美范式)。

1.2 三大范式

  • 数据库设计满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。

1.2.1 第一范式:1NF

原子性:表中每列不可再拆分

1.2.2 第二范式:2NF

  • 在1NF的基础上,消除部分依赖,一张表只描述一件事情。
  • 非码属性必须完全依赖于码属性。

一、函数依赖
  • A—>B,如果通过A属性(属性组),可以唯一确定B属性,那么称B依赖于A
  • 学号—>姓名
二、完全函数依赖
  • A—>B,如果A属性是一个属性组,则B属性值的确定依赖于A属性组中所有的属性值。
  • (学号,课程名称)—> 分数。 B完全依赖于A
三、部分函数依赖
  • A—>B,如果A属性是一个属性组,则B属性值的确定依赖于A属性组中的某一些属性值
  • (学号,课程名称)—> 姓名 B部分依赖于A
四、传递函数依赖
  • A—>B , B—>C,如果通过A属性组可以唯一确定B属性组的值,通过B属性组的值可以唯一确定C属性组的值,这时候,我们C传递依赖于A.
  • 学号—>系名 系名—>系主任 ,系主任传递依赖于学号
五、码
  • 如果一张表中,一个属性或者属性组,完全被其他所有的属性依赖,则称这个属性或者属性组为码。
  • (学号,课程名称)就是当前表中的码。
六、主属性
  • 码中所有属性就是主属性。
  • ( 学号,课程名称 )
七、非主属性
  • 码中不包含的属性就非主属性。

1.2.3 第三范式:3NF

在2NF的基础上,不产生传递依赖,表中每一列都直接依赖于主键。而不是通过其它列间接依赖于主键。