用一对一关系,不如干脆放到同一表总算了?

1.CSDN探讨:http://bbs.csdn.net/topics/10274493

1)

在我们公司,一对一的表结构主要是为了解决查询时的速度问题,我们常把最常用的查询字段放到一个表中,而把不常用的查询字段放到另一个表中。在常用的查询处理中由于只查询那个简单的表,故速度较快,这在数据量在200万条到1000万条时很管用。但数据量再大时就不行了,那就只能用分区了。

2)

其实1:1是一个分析问题的一个手段而已,现实使用中放在一个表中也不见得一定错。但是也要看情况!

学校(校名,地址,学生人数,其他信息) 
学校校长(姓名,身份证号,婚否,其他信息)
这两个是1:1关系。你要是把他们放在同一张表中,那像什么了?

学校—校长(校名,地址,学生人数,其他信息,姓名,身份证号,婚否,其他信息)

3)

好象有一些混淆了现实世界的1:1关系和表的1:1关系!?
表的1:1关系可能是出于一些考虑而拆出来的。

 broker_chengchaoji(掮客) 的例子是能说明问题的,但是他的设计是有缺陷的,比如,象几十年,就会有各校长互换的情况,那样他的学校—校长就必须修改姓名,身份证号,婚否,其他信息等字段,改少了就会出现异常,而如果是
学校(校名,地址,学生人数,其他信息) 
学校校长(姓名,身份证号,婚否,其他信息)
学校—校长(校名,姓名)
这样设计,就只改姓名一个字段,保证不会出现异常,

这也是第三范式的要求。

关于范式,不单单是用来节约存储空间的(特别是现在,存储空间往往没有问题),范式的更大意义在于消除插入异常和删除异常,保证数据的独立性。

4)

学校校长的例子是不确切的。
你想,我为什么要做一个校长的表呢?我要做也是做一个老师或者Person的表啊。这很通用吧?
在我理解,1对1就是应该放在同一张表中的,所谓的“同一关系”。
我见过的一个例子,是一些私人信息放到一个表中,把一些开放的信息放到另外一个表中。

2.原文:http://www.cnblogs.com/SkyD/archive/2009/05/28/1491214.html 

posted @ 2015-07-15 12:34  阿玛  阅读(1512)  评论(0)    收藏  举报