首页 / MYSQL / MySQL 笔记(三):三大范式
MySQL 笔记(三):三大范式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL 笔记(三):三大范式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4405字,纯文字阅读大概需要7分钟。
内容图文
一、什么是范式
为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。
二、第一范式
2-1、要求
确保每列的原子性,每个列都不可以再拆分
2-2、错误设计
+----+----------+--------+------------------+----------+------+---------------------------------------+
| id | username | gender | email | nickname | age | region |
+----+----------+--------+------------------+----------+------+---------------------------------------+
| 1 | admin | 男 | admin@qq.com | 管理员 | 25 | 广东省、深圳市、龙岗区、龙岗大道127号 |
| 2 | zhangsan | 男 | zhangsan@126.com | 张三 | 24 | 广东省、广州区、天河区、珠江大道29号 |
+----+----------+--------+------------------+----------+------+---------------------------------------+
分析:上述表很明显就不符合数据库第一范式的表设计,为何不符合?region列不具有原子性。因为还可以拆分成省份、城市、区域、详细地址字段。
2-3、正确设计
+----+----------+--------+----------+------+----------+--------+--------+---------------+
| id | username | gender | nickname | age | province | city | region | adress |
+----+----------+--------+----------+------+----------+--------+--------+---------------+
| 1 | admin | 男 | 管理员 | 25 | 广东省 | 深圳市 | 龙岗区 | 龙岗大道127号 |
| 2 | zhangsan | 男 | 张三 | 24 | 广东省 | 广州市 | 天河区 | 珠江大道29号 |
+----+----------+--------+----------+------+----------+--------+--------+---------------+
三、第二范式
3-1、要求
在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分
3-2、错误设计
+-----------+----------+------------+------+--------+----------+-------------+
| orders_id | goods_id | goods_name | nuit | prices | username | phone |
+-----------+----------+------------+------+--------+----------+-------------+
| 0001 | 1 | iphone13 | 台 | 9800 | 大当家 | 0755-864510 |
| 0001 | 2 | 智能扫把 | 把 | 150 | 大当家 | 0755-864510 |
| 0002 | 3 | 玩具车 | 辆 | 450 | 王二狗 | 0755-816540 |
+-----------+----------+------------+------+--------+----------+-------------+
分析:上述表很明显不符合第二范式,order_id 和 good_id 作为联合主键。但 good_name、number、unit、price 只和 good_id 有关,很明显和 order_id 主键无关,除此之外,上述表里做了两件事(订单信息、商品信息),第二范式的目的在于保证一张表只做一件事情,很明显违反第二范式。
3-3、正确设计
+-----------+----------+-------------+
| orders_id | username | phone |
+-----------+----------+-------------+
| 0001 | 大当家 | 0755-864510 |
| 0002 | 王二狗 | 0755-816540 |
+-----------+----------+-------------+
+----------+------------+------+--------+
| goods_id | goods_name | nuit | prices |
+----------+------------+------+--------+
| 1 | iphone13 | 台 | 9800 |
| 2 | 智能扫把 | 把 | 150 |
| 3 | 玩具车 | 辆 | 450 |
+----------+------------+------+--------+
+----------+----------+
| order_id | goods_id |
+----------+----------+
| 1 | 1 |
| 1 | 2 |
| 2 | 3 |
+----------+----------+
四、第三范式
4-1、要求
在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键
4-2、错误设计
+----------+--------------+----------+------+--------+
| goods_id | goods_name | category | nuit | prices |
+----------+--------------+----------+------+--------+
| 1 | iphone13 | 3C数码 | 台 | 9800 |
| 2 | 智能扫把 | 智能家居 | 把 | 150 |
| 3 | iphone12 pro | 3C数码 | 台 | 5800 |
+----------+--------------+----------+------+--------+
4-3、正确设计
+----------+--------------+------+--------+
| goods_id | goods_name | nuit | prices |
+----------+--------------+------+--------+
| 1 | iphone13 | 台 | 9800 |
| 2 | 智能扫把 | 把 | 150 |
| 3 | iphone12 pro | 台 | 5800 |
+----------+--------------+------+--------+
+-------------+---------------+
| category_id | category_name |
+-------------+---------------+
| 1 | 3C数码 |
| 2 | 智能家居 |
+-------------+---------------+
+-------------+----------+
| category_id | goods_id |
+-------------+----------+
| 1 | 1 |
| 2 | 2 |
| 1 | 3 |
+-------------+----------+
内容总结
以上是互联网集市为您收集整理的MySQL 笔记(三):三大范式全部内容,希望文章能够帮你解决MySQL 笔记(三):三大范式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。