Mariadb学习总结(五):数据库表约束及三范式

原创
ithorizon 8个月前 (09-01) 阅读数 65 #Linux

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)

第三范式在第二范式在出现的同时,要求表中的所有字段不仅完全依赖性于主键,而且不存在传递依赖性。即表中的字段不依赖性于非主属性,或者表中的非主属性彼此之间不依赖性。

遵循三范式可以有效地减少数据冗余和更新异常,尽也许减少损耗数据库的性能和可维护性。


本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: Linux


热门