首页 > 编程知识 正文

三大范式与反范式,数据库反范式设计

时间:2023-05-06 06:40:39 阅读:168151 作者:1825

在日常开发过程中,必须与Mysql数据库进行操作。 这包括构建表。 如何创建结构化数据库表必须遵循以下三种数据库范式:

1 .第一范式

确保数据表中每列(字段)的原子性。

如果数据表中的每个字段都是不可重用的最小数据单元,则满足第一个模式。

例如,包含字段id、username和password的用户表

2 .第二范式

在第一模式的基础上更进一步,目标是确保表中的每一列都与主键相关。

如果关系满足第一正则表达式,并且非主键列依赖于该主键,则满足第二正则表达式。

例如,一个用户只有一个角色,但一个角色对应于多个用户。 可以创建数据表关系以满足第二正则表达式,如下所示:

user用户表,字段id,username,password,role_id

role角色表、字段id、name

用户表按角色id(role_id )关联角色表

3 .第三范式

在第二范式的基础上进一步,目标是确保表中的列与主键直接相关,而不是间接相关。

例如,一个用户可以对应于多个角色,一个角色可以对应于多个用户。 可以创建数据表关系以满足第三范式,如下所示:

用户表、字段id、用户名称、密码

role角色表、字段id、name

user_role用户-角色中间表,id,user_id,role_id

这样,可以通过第三张表(中间表)确立用户表和作用表的关系,同时遵循正规化的原则,称为第三正规化。

4 .反正规化

反规范化是通过增加冗余或重复的数据来提高数据库的读取性能。

例如,将role_name字段添加到上例中的user_role用户-角色中间表。

反规范化可以减少关联查询时join表的次数。

以上是我整理的MYSQL数据库表格制作范式。 希望今后能帮到大家。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。