数据库存储原理与表设计:从基础概念到实践应用
数据库存储原理与表设计:从基础概念到实践应用
数据库作为现代软件系统的核心组件,其存储和管理数据的方式直接影响着系统的性能和可靠性。本文将从数据库的基本术语开始,深入探讨数据库存储数据的核心概念,并详细讲解表设计的基本原则,帮助读者建立扎实的数据库基础知识。
一、数据库的一些基本术语
在数据库中,数据的存储和组织依赖于一系列基本概念。以下是几个核心术语的解释:
- 字段:事物的一种特性,可以理解为成员变量一枚。
- 属性:字段的别称。
- 列:字段的别称。
- 记录:字段的组合,表示具体的一个事物,其实就是数据库表中的一行。
- 元组:记录的别称。
- 表:记录的组合,表示某一类事物的集合。
二、约束概念及分类
约束是数据库中用于确保数据完整性和一致性的关键机制。约束主要分为列约束和表约束两大类,它们的主要区别在于定义位置的不同:
- 列约束:直接写在字段类型的后面。
- 表约束:加在表的最后,需要用括号将相应的字段括起来。
1. 主键约束
主键是用于唯一标识表中某条记录的一个字段或多个字段的组合。在开发中,通常使用没有实际意义的字段作为主键,例如数字类型的字段。
2. 外键约束
外键是来自其他表的主键或唯一键的字段。在MySQL中,外键约束只能在表级上定义。以下是一个包含外键约束的表创建示例:
create table user
(
user_id int primary key,
user_name varchar(20) unique,
user_email varchar(40) not null,
user_number int,
foreign key(user_number) references user(user_id)
)
含有外键的表称为外键表,而作为外键字段来源的表称为主键表。删除关联表时,必须先删除外键表,再删除主键表。
3. 唯一键约束
唯一键约束确保一个字段的值在表中是唯一的。在MySQL中,列级的唯一键约束不支持修改约束名,但表级约束支持修改约束名。
4. default约束
default约束保证一条记录中的某个字段一定有值。如果插入数据时未指定默认值字段,必须显式指明该字段为null,否则会报错。
5. check约束
check约束用于保证数据在合法范围内。在MySQL 8.0.16版本之前,check约束虽然可以被解析但会被忽略;从8.0.16版本开始,check约束才真正生效。
三、一对一、一对多、多对多表设计
1. 一对一情况
在一对一关系中,一个表的外键是另一个表的主键。这种关系相对简单,相当于两个表通过主键和外键相互关联。
2. 一对多情况
在一对多关系中,外键只能存在于“多”的那一边。例如,在父母和孩子的关系中,外键应该放在孩子的表中,而不是父母的表中。
3. 多对多情况
多对多关系需要通过新建一张关联表来实现。例如,老师和班级的多对多关系可以通过以下方式实现:
create table if not exists classroom
(
room_id int primary key,
room_stu_count int
);
create table if not exists teacher
(
tea_id int primary key,
tea_name varchar(20)
);
create table class_tea_mapper
(
ct_mapper_c_id int,
ct_mapper_t_id int,
foreign key(ct_mapper_c_id) references classroom(room_id),
foreign key(ct_mapper_t_id) references teacher(tea_id)
)
在关联表中,包含两个主表的主键作为外键,并可以添加其他相关字段。主键可以是两个外键的组合。
本文原文来自CSDN