项目实战(二)—你的数据库灵活吗?

浏览:
字体:
发布时间:2013-12-09 23:24:00
来源:

最近做项目的时候遇到一个这样的问题,一个表中由四个字段都是一对多的关系。如果把四个字段放入到一张表中,肯定存在很多冗余数据。想想那怎么办呢?分成四张表,用主外键关联起来,但太不灵活了。想到考试系统中用到的中间表,想这里也可以用到。现在比较一下三种建表方式的不同之处吧!

一、实例

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

 

优点:减少冗余、增加灵活性

通过中间表建立联系,操作时 无论是前置机、端口、组,还是具体的某个数据出现问题,我们更改时不需要更改两张基本表。


>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2024 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();