【MYSQL】表的设计
发布时间:2025-06-24 17:35:53 作者:北方职教升学中心 阅读量:649
目录。
- 一、数据库约束。
- 1.1 not null 约束。
- 1.2 unique (唯一)约束。
- 1.3 default 默认价值约束。
- 1.4 primary key (主键)约束。
- 1.5 foreign key (外键)约束。
- 1.6 check 约束。
- 1.7 总结。
- 二、表的设计。
- 2.1 三大范式。
- 2.1.1 第一范式。
- 2.1.2 第二范式。
- 2.1.3 第三范式。
- 2.2表的关系。

第一,数据库约束。
- 是关系数据库的重要功能,
- 主要功能是保证数据的完整性,也可以理解数据的正确性(数据本身是否正确,关系是否正确),
- 人工检查数据完整性的工作量很大,在数据表中定义一些约束,然后当数据库写入数据时,数据库将帮助我们做验证工作,
- 约束通常是指定在列表上的,
- 在表的定义中添加要约束的列的类型。
1.1 not null 约束。
表示该列不能存储null值。
存入null会报错。
1.2 unique (唯一)约束。
表示列中的数据不能重复(null)除外。
插入相同或现有的值会报错。
1.3 default 默认价值约束。
指定列为空时默认值。
1.4 primary key (主键)约束。
相当于not null 和 unique的组合,
这意味着列中的数据既不能重复也不能空。
存入null会报错。插入相同或现有的值也会报错。
主键是整形时,我们经常加。auto_increment。
让主键从。目前最大值。加1,
但当插入错误时,该值相当于生成,下一个从这个开始。
目前主键最大值为7,然后插入时报错了,换回后,插入行的主键为9。
最多只能在一张表中定义一个主键,如果定义超过,就会报错,
复合主键只能用于多列为主键。primary key (列名1, 列名2)。
。
使用复合键列值必须相同才能重复,任何列值都不能是null。
1.5 foreign key (外键)约束。
确保一个表中的数据与另一个表中值的参考完整性相匹配。
将另一个表中的值作为表中该列的范围。
被外键约束的列在约束前定义,
语法是。foreign key (列名) references 外观名(外列名)。
,
如果外键约束的表仍然存在,则不能删除外观。
1.6 check 约束。
5.7版本的约束不能使用,导致兼容性差所以一般不用。
使用约束后,列只能插入约束值。
1.7 总结。
约束类型。 | 说明。 | 示例。 |
---|---|---|
not null 约束。 | 使用not null指定列不能为空。 | name varchar(20) not null, |
unique 约束。 | 指定列为唯一、不重复的,除了null。 | name varchar(20) unique, |
default 默认价值约束。 | 指定列为空时默认值。 | age int default 20, |
primary key 主键约束。 | not null 和 unique 的结合。 | id int primary key, |
foreign key外键约束。 | 关联其他表的主键或唯一键。 | foreign key (字段名) references 主表(列)。 |
check约束。 | 确保列中的值符合指定条件。 | check (gender = ‘男’ or gender =‘女’)。 |
二、表的设计。
一般来说,我们的编程流程如下:
OOA面向对象分析 -》面向对象的OOD设计 -》OOP面向对象编程。
设计表:
- 从需求中获得类,类对应于数据库中的实体,实体在数据库中表现为表,类中的属性对应于表中的字段(列),
- 确定类与类之间的关系,
- 使用SQL创建特定的表。
2.1 三大范式。
在设计表时,我们通常遵循一些规则,这些规则通常被称为三种范式。
范式是描述数据关系的模型,下面只介绍三个范式。
2.1.1 第一范式。
第一个范式是表中的字段不能拆分。
第一个范式是关系数据库最基本的要求,不符合第一范式的数据库不是关系数据库。
也就是说,定义表中的每个字段都可以用一种数据类型来表示,所以这个表符合第一范式。
2.1.2 第二范式。
在满足第一个范式的基础上,任何候选字段都没有非关键字段依赖函数()存在于复合主键中;
非关键字段即非主键字段,当没有主键时,候选字段可以理解为主键或唯一键。
由于两个或多个关键字段(#xfff09复合主键;决定一个记录的情况,若一行数据中的某些字段仅与关键字段中的一个有关,所以这意味着他只有部分函数依赖。
表中没有复合主键的表自然满足第二个范式。
2.1.3 第三范式。
在第二范式的基础上,没有非关键字段༌依赖于任何候选键的传输。
传递现象存在于两个强相关关系中,这种传递关系称为传递依赖。例如,在学生表中获得学号,可根据学号获得学校,还可以根据学校获得学院等信息。
2.2表之间的关系。
- 一对一:
例如,一个人只有一张身份证。 - 一对多:
例如,一个班有多个学生。 - 多对多༚
例如,一个学生选择多门课程一门课程由多个学生选择。