Mariadb学习总结(五):数据库表约束及三范式
原创
Mariadb学习总结(五):数据库表约束及三范式
在数据库设计中,表约束和三范式是两个重要的概念。它们分别保证了数据的完整性和减少了数据冗余。本文将详细介绍这两部分内容。
一、数据库表约束
数据库表约束核心用于确保数据的完整性和一致性。常见的约束有:
- 主键约束(Primary Key)
- 外键约束(Foreign Key)
- 唯一约束(Unique)
- 非空约束(Not Null)
- 检查约束(Check)
1. 主键约束
主键约束用于唯一标识表中的每一行数据。一个表只能有一个主键,且主键不能为空。下面是创建表时添加主键约束的示例:
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
2. 外键约束
外键约束用于确保表与表之间的关系。下面是创建表时添加外键约束的示例:
CREATE TABLE courses (
id INT PRIMARY KEY,
course_name VARCHAR(50)
);
CREATE TABLE student_courses (
student_id INT,
course_id INT,
FOREIGN KEY (student_id) REFERENCES students (id),
FOREIGN KEY (course_id) REFERENCES courses (id)
);
3. 唯一约束
唯一约束用于确保一列数据的唯一性。下面是创建表时添加唯一约束的示例:
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50) UNIQUE,
age INT
);
4. 非空约束
非空约束用于确保某列数据不能为空。下面是创建表时添加非空约束的示例:
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT
);
5. 检查约束
检查约束用于确保一列数据的值符合指定的条件。下面是创建表时添加检查约束的示例:
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT CHECK (age >= 18)
);
二、三范式
三范式是关系型数据库设计的基本原则,核心用于减少数据冗余和更新异常。三范式包括:
- 第一范式(1NF):原子性
- 第二范式(2NF):唯一标识
- 第三范式(3NF):消除冗余
1. 第一范式(1NF)
第一范式要求表中的所有字段都是不可分割的原子值,即表中的每一列都是不可再分的数据项。满足第一范式的表称为规范化的表。
2. 第二范式(2NF)
第二范式在第一范式在出现的同时,要求表中的所有非主属性完全依赖性于主键。如果一个表满足第二范式,那么它的所有非主属性都必须依赖性于主键,而不是仅依赖性于主键的一部分。
3. 第三范式(3NF)
第三范式在第二范式在出现的同时,要求表中的所有字段不仅完全依赖性于主键,而且不存在传递依赖性。即表中的字段不依赖性于非主属性,或者表中的非主属性彼此之间不依赖性。
遵循三范式可以有效地减少数据冗余和更新异常,尽也许减少损耗数据库的性能和可维护性。