作者supisces (被~~~切~~~八~~~段)
看板Database
标题Re: [问题] Access 中 relation type 变更的问题?
时间Sat Feb 4 15:47:11 2012
※ 引述《TeemingVoid (TeemingVoid)》之铭言:
: 标题: Re: [问题] Access 中 relation type 变更的问题?
:
: → TeemingVoid:微软官网 http://ppt.cc/aj~8 的 Note 那段提到,如果 02/04 11:03
: → TeemingVoid:两个栏位都是PK或者有「不重复值」的索引,Access就会 02/04 11:04
: → TeemingVoid:判定成一对一,只有其中之一如此,则是一对多。 02/04 11:04
: → TeemingVoid:所以,再麻烦请您帮忙看一下复制过去的目的端那边,栏 02/04 11:04
: → TeemingVoid:位内容的索引那个项目,如果是:「是(不可重复」」,就 02/04 11:05
: → TeemingVoid:会被Access判定是一对一。 02/04 11:05
经过测试的结果, 以上是正解.
Indexed 有三种可能:
- No
- Yes (Duplicates OK)
- Yes (No Duplicates)
只有当连结的两端都是 Yes (No Duplicates) 时,
Access 会判定为 One-To-One,
其他情况则是 One-To-Many.
如果 table 中只有一个 PK,
PK 的 Indexed 一定是 Yes (No Duplicates).
这就是两个 PK 被判定为 One-To-One 的情况.
但是如果 table 中有两个以上的 PK,
每个 PK 的 Indexed 都可以变更为 NO or Yes (Duplicates OK),
这时连结两个 table 的 PK 就可能是 One-To-Many.
也就是说, 不是所有 PK 的连结都一定是 One-To-One.
在 table 中建立一个新的 attribute 时,
Access 预设其 Indexed 为 No,
所以跟其他 table 的 PK 连结时会是 One-To-Many,
这也是大部分的情况.
回到我的问题,
我一开始拿到的 table 中,
除了 PK 之外, 刚好只有一个 attribute 被设定为 Yes (No Duplicates),
所以当我将此 attribute copy --> create new table --> set PK 时,
两边都是 Yes (No Duplicates), 所以符合 One-To-One 的条件.
後来我将原 table 中的 attribute 删除再重建,
Indexed 变成预设的 No, 就变成我要的 One-To-Many 了.
再次谢谢 TeemingVoid 大大..
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 96.48.100.25
※ 编辑: supisces 来自: 96.48.100.25 (02/04 15:52)
1F:推 TeemingVoid:很开心 真相大白了 ^^ 02/04 16:11