【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面向对象编程。

设计表:

  1. 从需求中获得类,类对应于数据库中的实体,实体在数据库中表现为表,类中的属性对应于表中的字段(列),
  2. 确定类与类之间的关系,
  3. 使用SQL创建特定的表。

2.1 三大范式。

在设计表时,我们通常遵循一些规则,这些规则通常被称为三种范式。
范式是描述数据关系的模型,下面只介绍三个范式。

2.1.1 第一范式。

第一个范式是表中的字段不能拆分。

第一个范式是关系数据库最基本的要求,不符合第一范式的数据库不是关系数据库。
也就是说,定义表中的每个字段都可以用一种数据类型来表示,所以这个表符合第一范式。

2.1.2 第二范式。

在满足第一个范式的基础上,任何候选字段都没有非关键字段依赖函数()存在于复合主键中;

非关键字段即非主键字段,当没有主键时,候选字段可以理解为主键或唯一键。

由于两个或多个关键字段(#xfff09复合主键;决定一个记录的情况,若一行数据中的某些字段仅与关键字段中的一个有关,所以这意味着他只有部分函数依赖。

表中没有复合主键的表自然满足第二个范式。

2.1.3 第三范式。

在第二范式的基础上,没有非关键字段༌依赖于任何候选键的传输。

传递现象存在于两个强相关关系中,这种传递关系称为传递依赖。例如,在学生表中获得学号,可根据学号获得学校,还可以根据学校获得学院等信息。

2.2表之间的关系。

  1. 一对一:
    例如,一个人只有一张身份证。
  2. 一对多:
    例如,一个班有多个学生。
  3. 多对多༚
    例如,一个学生选择多门课程󿀌一门课程由多个学生选择。