首页 / MYSQL / 项目实战(二)—你的数据库灵活吗?
项目实战(二)—你的数据库灵活吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了项目实战(二)—你的数据库灵活吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2061字,纯文字阅读大概需要3分钟。
内容图文
![项目实战(二)—你的数据库灵活吗?](/upload/InfoBanner/zyjiaocheng/532/891ad1545a7d4f19ba123fde9d8e3c12.jpg)
最近做项目的时候遇到一个这样的问题,一个表中由四个字段都是一对多的关系。如果把四个字段放入到一张表中,肯定存在很多冗余数据。想想那怎么办呢?分成四张表,用主外键关联起来,但太不灵活了。想到考试系统中用到的中间表,想这里也可以用到。现在比较
最近做项目的时候遇到一个这样的问题,一个表中由四个字段都是一对多的关系。如果把四个字段放入到一张表中,肯定存在很多冗余数据。想想那怎么办呢?分成四张表,用主外键关联起来,但太不灵活了。想到考试系统中用到的中间表,想这里也可以用到。现在比较一下三种建表方式的不同之处吧!
一、实例
1、 表:字段包括粮仓、前置机地址、端口、组、数据,其中粮仓、前置机地址可以唯一标识
2、关系:
(1)一个粮仓容纳多个前置机
(2)一个前置机对应多个端口
(3)一个端口对应多个组
3、假设:
(1) 1号仓中有前置机1和2;
(2)前置机1、2各有2个端口;
(3)每个端口对应的组不同;
二、建表方法
1、方法一:将所有字段放到一张表中
仓 |
前置机 |
端口 |
组 |
数据 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
2 |
2 |
1 |
1 |
2 |
3 |
3 |
1 |
1 |
2 |
4 |
4 |
1 |
2 |
1 |
5 |
5 |
1 |
2 |
1 |
6 |
6 |
1 |
2 |
2 |
7 |
7 |
1 |
2 |
2 |
8 |
8 |
1 |
2 |
2 |
9 |
9 |
大家可以看到,把所有字段放在一张表中,产生很多冗余字段。这仅仅一个仓有9组的情况下,仓和前置机、端口就产生了很多冗余数据,那如果说一个仓有10个前置机、20组呢?
优点:代码简单
缺点:产生很多冗余数据
2、方法二:建立四张表(仓表、前置机表、端口表、组和数据表)
(1)粮仓表
仓表(主键) |
1 |
(2)前置机表
前置机(主键) |
仓表(外键) |
1 |
1 |
2 |
1 |
(3)端口号表
端口 |
前置基表(外键) |
1 |
1 |
2 |
1 |
1 |
2 |
2 |
2 |
(4)组表
组(主键) |
数据 |
端口号(外键) |
1 |
1 |
1 |
2 |
2 |
1 |
3 |
3 |
1 |
4 |
4 |
1 |
5 |
5 |
2 |
6 |
6 |
2 |
7 |
7 |
2 |
8 |
8 |
2 |
9 |
9 |
2 |
优点:减少冗余,查找方便(建立主外键)
缺点:不灵活(如果某个前置机坏了,进行更换,我必须更改前置机表和端口表)
通过主外键联系,操作时会涉及到多张表,耦合性太强。
方法三、建立中间表,解耦和
(1)粮仓表
仓序号 |
仓表 |
1 |
1 |
(2)前置基表
前置机序号 |
前置机 |
1 |
1 |
2 |
2 |
(3)端口表
端口序号 |
端口 |
1 |
1 |
2 |
2 |
3 |
1 |
4 |
2 |
(4)组表
组序号 |
组号 |
数据 |
1 |
1 |
1 |
2 |
2 |
2 |
3 |
3 |
3 |
4 |
4 |
4 |
5 |
5 |
5 |
6 |
6 |
6 |
7 |
7 |
7 |
8 |
8 |
8 |
9 |
9 |
9 |
(5)仓与前置机的中间表
序号 |
仓序号 |
前置机序号 |
1 |
1 |
1 |
2 |
1 |
2 |
(7)前置机与端口中间表
序号 |
前置机序号 |
端口序号 |
1 |
1 |
1 |
2 |
1 |
2 |
3 |
2 |
1 |
4 |
2 |
2 |
(8)端口表与组表的中间表
序号 |
端口序号 |
组序号 |
1 |
1 |
1 |
2 |
1 |
2 |
3 |
2 |
3 |
4 |
2 |
4 |
5 |
1 |
5 |
6 |
1 |
6 |
7 |
2 |
7 |
8 |
2 |
8 |
9 |
2 |
9 |
优点:减少冗余、增加灵活性
通过中间表建立联系,操作时 无论是前置机、端口、组,还是具体的某个数据出现问题,我们更改时不需要更改两张基本表。
内容总结
以上是互联网集市为您收集整理的项目实战(二)—你的数据库灵活吗?全部内容,希望文章能够帮你解决项目实战(二)—你的数据库灵活吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。