MySQL 基础1 | 青训营笔记

96 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天。

1. 关系型数据库基础

数据库是保存有组织的数据的容器(通常是一个或者一组文件)。 是某种特定类型数据的结构化清单。 模式是关于数据库和表的布局及特性的信息。 是表中的一个字段。所有的表都是由一个或多个列组成的。 数据类型:所容许的数据的类型。每个表的每一列都有相应的数据类型。 是表中的一个记录。 主键是一个或者一组列,它能够唯一地区分表中的每一行。(任意两行不能具有相同的主键值;每一行都要有一个主键值。)

SQL 的优点:

  1. 几乎所有重要的 DBMS 都支持 SQL;
  2. SQL 简单易学;
  3. SQL 是强有力的语言,灵活使用可以进行非常复杂和高级的数据库操作。

MySQL 的优点:

  1. 开源免费
  2. 性能好,执行非常快
  3. 可信赖
  4. 简单,安装和使用都很容易

数据完整性

  • 实体完整性:实体完整性在MySQL中的实现是通过主键约束和候选键约束实现的。
  • 参照完整性:外键
  • 约束完整性:列的约束

1.1. 函数依赖与数据库范式

候选码:若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码。 主码:若一个关系中有多个候选码,则选定其中一个为主码。 主属性:所有候选码的属性称为主属性。 非主属性:不包含在任何候选码中的属性称为非主属性。

函数依赖:对于两个集合 A, B,如果一个已经确定值的 A 可以唯一的确定 B 的值,则称 A 函数决定 B,B 函数依赖 A。记作 A -> B部分函数依赖:如果 A -> B, X -> BXAX \subsetneqq A,则称 B 部分函数依赖于 A。 传递函数依赖:如果 A -> X, X -> BX !-> A,则称 B 传递函数依赖于 A。

数据库六大范式:

  • 第一范式:每个列都不可以再拆分。
  • 第二范式:在第一范式的基础上,非主属性必须完全依赖于候选码(消除非主属性对主属性的部分依赖)
  • 第三范式:在第二范式的基础上,任何非主属性不依赖于其它非主属性(消除非主属性对主属性的传递依赖)
  • BC 范式:在第三范式的基础上,任何主属性不能对候选码子集依赖(消除主属性对于候选码的部分与传递函数依赖)
  • 第四范式:在BC范式的基础上,限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。
  • 第五范式:在第四范式的基础上,表必须可以分解为较小的表,除非那些表在逻辑上拥有与原始表相同的主键。
学生表(学号,姓名,年龄,班主任,班主任办公室)
满足 2NF,不满足 3NF: 学号 -> 班主任 -> 班主任办公室 

修改:
学生表(学号,姓名,年龄,班主任)
班主任表 (班主任,班主任办公室)
学号姓名年龄班主任班主任办公室
1学生119班主任1办公室1
2学生219班主任1办公室1
3学生319班主任1办公室1
4学生419班主任2办公室2
5学生519班主任2办公室2
6学生619班主任3办公室3

不符合范式的关系,会产生很多异常,主要有以下四种异常:

  • 冗余数据:班主任信息冗余。
  • 修改异常:修改了一个记录中的信息,但是另一个记录中相同的信息却没有被修改。
  • 删除异常:删除一个信息,那么也会丢失其它信息。例如删除了学生6,则对应的班主任3的信息也没有了。 插入异常:例如想要插入一个办公室的信息,如果它还没有班主任入住就无法插入。