设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 4009|回复: 19
打印 上一主题 下一主题

[表] 请教各位侠士:多字段主键如何建立一对多关系?

[复制链接]
跳转到指定楼层
1#
发表于 2016-9-29 07:26:40 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lzongb 于 2016-9-29 11:55 编辑

如题,请指教!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2016-9-29 11:56:36 | 显示全部楼层
Henry D. Sy 发表于 2016-9-29 09:05
复合主键的两个字段同时同方向(左或右)连接
btw:附件有密码

真是抱歉,附件密码已去掉,请抽时间帮忙看看,谢谢!
3#
 楼主| 发表于 2016-9-29 13:17:51 | 显示全部楼层
Henry D. Sy 发表于 2016-9-29 12:16
为什么要用复合键,
用主键外键不行吗?

不是很明白您的意思。就这个例子而言,我想实现的是:一个人名下有多个房屋,各个房屋又有多个装修设备附属物。房屋表(Structure)中用的是复合主键,即OwnerID+HouseSn,不能有重复值。还有别的方式可以实现吗?
4#
 楼主| 发表于 2016-9-29 13:27:14 | 显示全部楼层
有些时候房号要调整,所以希望装修设备附属物表中的房号也能够同步自动调整。
5#
 楼主| 发表于 2016-9-29 16:32:47 | 显示全部楼层
Henry D. Sy 发表于 2016-9-29 16:15
这样不行吗,为何要这么复杂

Structure中的房号是有重复的,张三家有1号房,李四家也有1号房,所以不能单把“房号”作为主键;但张三家不可能有2个1号房,所以是把OwnerID和房号一起作为复合主键。
6#
 楼主| 发表于 2016-9-29 19:47:37 | 显示全部楼层
t小宝 发表于 2016-9-29 16:44
在Structure表加个唯一索引的自动编号字段,装修设备附属物 表不需要 OwnerID 和 房号 字段,加个数字类型 ...

装修设备附属物表不可以没有OwnerID和房号字段,因为有了这两个字段,才能知道是装设附是哪一家哪一号房的。
我通过其它的方式变相解决了这一问题,我只是好奇复合主键能否与其它表建立一对多的关系并实施参照完整性,看来可能性很小啊。

点评

Structurege表和装修设备附属物表通过添加的那个字段连接查询就有OwnerID和房号字段了  发表于 2016-9-29 22:55
7#
 楼主| 发表于 2016-9-30 21:18:35 | 显示全部楼层
Henry D. Sy 发表于 2016-9-29 22:26
张三家有1号房,李四家也有1号房
为什么会这样??

抱歉,没有表达清楚。我的意思是说,每一家(比如四合院)都有多个房屋,我们需要对房屋进行编号。所以每一家都有自己的1号房,但对于同一家,我不可以把房号编重,即不可以有两个房屋都编成1号。
8#
 楼主| 发表于 2016-9-30 21:27:50 | 显示全部楼层
本帖最后由 lzongb 于 2016-9-30 21:29 编辑
roych 发表于 2016-9-30 12:39
1、如果非要那样,为什么不把这两个主键组合成一个唯一值?
2、把“附属物”的字段全部附加到第二个表里。

之所以以OwnerID和房号作为复合主键,就是为了避免把同一个人名下的多个房屋的序号编重。我不知道是否还有别的相对简便的方式可以达到这一点。这两个主键的和是不唯一的,有可能重复,比如:
OwnerID       房号        OwnerID+房号
1                     1                      2
1                     2                      3
2                     1                      3
……
9#
 楼主| 发表于 2016-9-30 21:32:51 | 显示全部楼层
我想要达到两个目的:
1、Structure表中,同一人名下的房屋的序号不可以重复。
2、当Structure表中的房号发生变化时,装修设备附属物表中的对应房号可以同步变更。
10#
 楼主| 发表于 2016-10-2 09:22:59 | 显示全部楼层
谢谢大家!暂时抛开我所提供的实例,回归问题的本质,我目前得出的结论是:复合主键表作为“一”方,想与另一个表建立“一对多”的关系并实施参照完整性是有难度的,甚至是不可能的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-6 20:24 , Processed in 0.267862 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表