社区
MS-SQL Server
帖子详情
数据库的1对1关系如何理解?
herdsboy
2002-06-24 01:37:18
我总觉得与其用一对一关系,不如干脆放到同一表总算了。
不知该如何用,在何种场合用,谁举个例子说明一下?
thanks.
...全文
579
22
打赏
收藏
数据库的1对1关系如何理解?
我总觉得与其用一对一关系,不如干脆放到同一表总算了。 不知该如何用,在何种场合用,谁举个例子说明一下? thanks.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
herdsboy
2002-06-27
打赏
举报
回复
咦,我明明给了分了,怎么还在
herdsboy
2002-06-27
打赏
举报
回复
Thank you, Everybody!
guguda
2002-06-25
打赏
举报
回复
全是高手啊。学习了。
bluepower2008
2002-06-25
打赏
举报
回复
一对一关系一般是在实体关系图中确定的,比如某个系统设计规定一个员工拥有一个门卡,那么员工这个实体和门卡这个实体就是一对一关系,这是数据库的逻辑视图概念。但具体到物理视图实现时,使用两个物理表,或是用一个物理表存储,然后创建两个逻辑视图,都是可以的。
我想这个问题应该搞清楚数据库逻辑视图和物理视图的区别。
当然,把一个逻辑视图的实体,用几个物理表来存储也是有可能的,主要是权限设置和避免表的列数太多,影响查询效率。(一个数据页可能只能存储一条记录)
herdsboy
2002-06-25
打赏
举报
回复
请更多高手各抒己见:)
Triy
2002-06-25
打赏
举报
回复
还有啊,夫妻关系也是多对多的关系而不是什么别的关系。
呵呵,我一家之言,大家多想想。
Triy
2002-06-25
打赏
举报
回复
学校校长的例子是不确切的。
你想,我为什么要做一个校长的表呢?我要做也是做一个老师或者Person的表啊。这很通用吧?
在我理解,1对1就是应该放在同一张表中的,所谓的“同一关系”。
我见过的一个例子,是一些私人信息放到一个表中,把一些开放的信息放到另外一个表中。
broker_chengchaoji
2002-06-25
打赏
举报
回复
我随便举了个例子,没考虑范式
Yang_
2002-06-24
打赏
举报
回复
好象有一些混淆了现实世界的1:1关系和表的1:1关系!?
表的1:1关系可能是出于一些考虑而拆出来的。
broker_chengchaoji(掮客) 的例子是能说明问题的,但是他的设计是有缺陷的,比如,象几十年,就会有各校长互换的情况,那样他的学校—校长就必须修改姓名,身份证号,婚否,其他信息等字段,改少了就会出现异常,而如果是
学校(校名,地址,学生人数,其他信息)
学校校长(姓名,身份证号,婚否,其他信息)
学校—校长(校名,姓名)
这样设计,就只改姓名一个字段,保证不会出现异常,
这也是第三范式的要求。
关于范式,不单单是用来节约存储空间的(特别是现在,存储空间往往没有问题),范式的更大意义在于消除插入异常和删除异常,保证数据的独立性。
broker_chengchaoji
2002-06-24
打赏
举报
回复
其实1:1是一个分析问题的一个手段而已,现实使用中放在一个表中也不见得一定错。但是也要看情况!
如
学校(校名,地址,学生人数,其他信息)
学校校长(姓名,身份证号,婚否,其他信息)
这两个是1:1关系。你要是把他们放在同一张表中,那像什么了?
学校—校长(校名,地址,学生人数,其他信息,姓名,身份证号,婚否,其他信息)
icevi
2002-06-24
打赏
举报
回复
同意Jasanye(叶子)。
还有一种情况,一般会把些大字段分到另一个表中去,比如TEXT、IMAGE之类的。
wanghai
2002-06-24
打赏
举报
回复
举个例子,比如又两张表,一张部门表,一张人员表,一个部门只有一个经理,一个经理也只控制一个部门,就表达了一对一的关系
herdsboy
2002-06-24
打赏
举报
回复
谢谢,请更多的高手谈谈
Jasanye
2002-06-24
打赏
举报
回复
分区就是通过将一个大表拆分成更小的单个表,我们在只访问一小部分数据的查询就可以执行得更快,因为需要扫描的数据较少。而且可以更快地执行维护任务。如现有一个表,它每月的数据量有200万条,数据需要保存3年,那么总的数据量是7200万条。其实我们在实际处理时最常用的是最近3个月的数据,其次是最近1年的数据。
那么我们在建表时每3个建立一张表,由于每3个月的表结构都是相同的,在查询时把多个表UNION在一起,由于SQL server有查询优化功能,他会在查询时通过时间来判别到哪些个表中去读取数据,而不是到所有的表中去读取数据。这样就可以加快查询速度。
herdsboy
2002-06-24
打赏
举报
回复
to programjava:
俺就是很难找到1对1关系的应用例子才来问的,介绍一下比较经典例子?
to jasanye:
谢谢你的答案,好像比较接近我猜测的想法
另外,我还不懂什么是分区,如何用,介绍一下?
:)
Jasanye
2002-06-24
打赏
举报
回复
在我们公司,一对一的表结构主要是为了解决查询时的速度问题,我们常把最常用的查询字段放到一个表中,而把不常用的查询字段放到另一个表中。在常用的查询处理中由于只查询那个简单的表,故速度较快,这在数据量在200万条到1000万条时很管用。但数据量再大时就不行了,那就只能用分区了。
programjava
2002-06-24
打赏
举报
回复
一对一很好理解不过你要是死钻牛角尖,那就比较难了,一对一很容易变成一对多或多对一,看数据之间的关系了~~~~~~
例子书上很多啊
herdsboy
2002-06-24
打赏
举报
回复
skyfeather(天羽) :
能解迷惑,多放1000分都无所谓
dgz01(打工者):
兄台谈谈你的高见?
dgz01
2002-06-24
打赏
举报
回复
有关范式的问题
★★★★★
打工好辛苦
★★★★★
钞票好难赚
★★★★★
编程好伤神
★★★★★
光阴好易混
★★★★★
skyfeather
2002-06-24
打赏
举报
回复
我不懂,可我看这边分多,所以进来了。
加载更多回复(2)
go
数据库
mysql与redis
MySQL 为
关系
型
数据库
(Relational Database Management System), 这种所谓的"
关系
型"可以
理解
为"表格"的概念, 一个
关系
型
数据库
由一个或数个表格组成, 如图所示的一个表格: 表头(header): 每一列的名称; 列...
数据库
一对一、一对多、多对多
关系
本来
数据库
一对一、一对多、多对多
关系
并不复杂,但是最近在
理解
的时候感觉又感觉多了写新意,所以现在在来总结一下吧 一、首先给出三种
关系
的实例 1、一对一
关系
实例 * 一个人对应一张身份证,一张身份证...
2
关系
型
数据库
是什么?
目录结构
关系
型
数据库
基本概念结构化查询语言数据定义语言(DDL)数据查询语言(Data Query Language, DQL)数据操纵语言(Data Manipulation Language, DML)数据控制语言(Data Control Language, DCL)
关系
型...
关系
型
数据库
的
理解
1.
关系
型
数据库
简单的可以
理解
为二维
数据库
,表的格式就如Excel,有行有列。常用的
关系
数据库
有Oracle,SqlServer,Informix,MySql,SyBase等。(也即是我们平时看到的
数据库
,都是
关系
型
数据库
) 2.所谓
关系
型...
图
数据库
:从传统
关系
型
数据库
说起
关系
型
数据库
,是指采用了
关系
模型来组织数据的
数据库
,其以行和列的形式存储数据,以便于用户
理解
,
关系
型
数据库
这一系列的行和列被称为表,一组表组成了
数据库
。用户通过查询来检索
数据库
中的数据,而查询是一个...
MS-SQL Server
34,575
社区成员
254,583
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章