用一对一关系,不如干脆放到同一表总算了?
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决