数据库设计简述

发布于:2025-08-09 ⋅ 阅读:(14) ⋅ 点赞:(0)

系列文章目录

MySQL的基础操作-CSDN博客

MySQL操作进阶-CSDN博客

MySQL索引事务-CSDN博客

MySQL的JDBC编程-CSDN博客

MySQL存储过程和触发器_mysql 存储过程-CSDN博客


目录

系列文章目录

前言

一、数据库设计的主要步骤

二、数据库中的范式

三、数据库范式解决的问题

四、数据的完整性与安全性

五、一对一,一对多,多对多关系在数据库中的实现方式

六、如何使用E-R图进行数据库设计

七、在数据库设计阶段考虑扩展性



前言

本文介绍了MySQL数据库设计的关键步骤和规范。主要内容包括:1)数据库设计的4个步骤:需求分析、概念设计、逻辑设计和物理设计;2)三大范式(1NF、2NF、3NF)的定义及作用,重点分析了不满足范式可能引发的数据冗余、更新异常等问题;3)三种关系(一对一、一对多、多对多)的实现方式;4)E-R图的使用方法;5)数据库扩展性设计考虑,如冗余字段和预留字段的应用。文章为数据库设计提供了系统性的指导思路。


提示:以下是本篇文章正文内容,下面案例可供参考

一、数据库设计的主要步骤

数据库设计分为 4 个步骤:

1. 需求分析:阅读需求文档,提取概念类以及类的属性;

2. 概念设计:绘制 ER 图,和需求方进行沟通;

3. 逻辑设计:确定数据库的名字,表的名字,表中字段的名字,类型和约束,以及数据库设计的其它规范,类如还需设计哪些公共字段等,编写 SQL 代码;

4. 物理设计:考虑当前系统数据库服务器的分配;

二、数据库中的范式

数据库设计中常用的有三大范式:第一范式,第二范式和第三范式;

第一范式:

满足表中的列是不可分割的原子数据项,即天然满足第一范式;

如果表中的列是一个类,还可再拆分成更多的列,那么就不满足第一范式;

反例:学生表中有一个学校的列,学校还可以拆分成学校地址,学校电话,那么就不满足第一范式;

第二范式:

满足第一范式的基础上,不存在非关键字段对任意候选键的部分函数依赖,即满足第二范式;

候选键指的是可以唯一标识一行数据的列或者列的组合,可以从候选键中选一个或者多个当作表的主键;

部分依赖指的是多个列作为表的主键时,非关键字段依赖主键的某个列,不依赖于全部列;

当主键只有一列时,天然就满足第二范式;

反例:学生课程成绩表中,学号和课程作为主键,学生的个人信息都只依赖于学号,课程相关的信息都只依赖于课程,那么这就属于部分依赖,不满足第二范式;

第三范式:

在满足第二范式的基础上,不存在非关键字段,对任一候选键的传递依赖;

反例:例如在学生表中存在“学院”,“学院电话”,“学院地址”等字段,“学院电话”和“学院地址”是依赖“学院”的,而不是依赖主键,这就是传递依赖,不满足第三范式;

三、数据库范式解决的问题

主要涉及第二范式,不满足第二范式,可能会出现以下问题:

1. 数据冗余

不满足第二范式,多个列组合成一个主键,可能会存在部分依赖。

这种情况下会出现大量的冗余字段,造成大量的数据冗余;

例如:学生表中,学生 ID 和 课程组合称为主键,每个学生信息后面都会出现课程相关的字段,比如学分,重复出现造成了大量的数据冗余;

2. 更新异常

如果要调整冗余字段,就会涉及到表中的所有相关行,一旦执行中断,数据就会更新失败,造成了行与行数据不一致的情况;

例如:学生表中,如果要更新课程相关的学分,就会涉及到修改多行数据,如果更新终端,那么就会出现同一门课程,学分不一致的情况;

3. 插入异常

例如:学生课程成绩表中,学生只有参加考试获得成绩,才会生成一条记录。当一门新课,还没有学生参加考试取得成绩,这门课程在数据库中就不存在,因为成绩为空的时候,记录没有意义;

4. 删除异常

例如:学生课程成绩表中,如果将所有学生的成绩都删除,课程和学生的信息也会被删除,数据库中没有学生和课程的信息;

四、数据的完整性与安全性

数据完整性是通过数据库的一些约束,比如非空,外键约束,默认值等,进行数据校验,避免非法数据,保证数据的完整性;

数据的安全性是通过权限分级,避免所有人都可以访问数据库,对数据造成破坏;

五、一对一,一对多,多对多关系在数据库中的实现方式

一对一:

创建两个数据表,在其中一个表中创建一个关联字段,实现建立关联关系;

例如:用户表和账户表,在和用户表中增加一个账户ID字段,或者在账户表中增加一个用户ID字段,都可以将两张表关联起来;

一对多:

创建两个数据表,在多的一方增加一个关联字段,实现建立关联关系;

例如:班级表和学生表,在学生表中增加一个班级ID字段,将两张表关联起来;同时也可以建立一个外键关系;

多对多:

建立两张数据表,再建立一个关联表,实现建立关联关系;

例如:学生表和课程表,可以在建立一个关联表,包含学生ID和课程ID字段,将两张表关联起来;

六、如何使用E-R图进行数据库设计

E-R 图是实体关系图,包含实体,属性和关系,实体指类,用矩形表示,属性指列,用椭圆表示,关系指实体之间的关系,用菱形表示;

一对一:

一对多:


多对多:

七、在数据库设计阶段考虑扩展性

冗余字段:由于考虑到数据库的性能,往往会反范式设计,增加一些关键字段的冗余字段,避免频繁的联表查询;

预留字段:后续迭代需求时,可以对数据库结构进行小的改动;



网站公告

今日签到

点亮在社区的每一天
去签到