我在将多个外键拉入Microsoft Access表中的一个记录时遇到了问题。
我有两张包含这些字段的表格:
表1: 拥有者 领域: 所有者ID(主键) 名字 姓氏
表2: 船舶 领域: 发货ID(主键) 出货名称
我需要在表1和表2之间创建一个关系,显示谁拥有该船。我已经尝试在表2中添加一个名为Owner ID(外键)的数字字段,这非常好用。
工作示例:
Table 1 – Owners Table 2 – Ships
Owner ID (Primary Key)__ Ship ID (Primary Key)
First Name \ Ship Name
Last Name \________Owner ID (Foreign Key)
不幸的是,表2中的我的船只可以同时拥有多个所有者(最多5个)。当我尝试在表2中创建一系列链接字段时,我的问题出现了。
不工作:
Table 1 – Owners Table 2 – Ships
Owner ID (Primary Key)__ Ship ID (Primary Key)
First Name \ Ship Name
Last Name \ Owner1 ID (Foreign Key)
\______/ Owner2 ID (Foreign Key)
\ Owner3 ID (Foreign Key)
任何人都可以推荐任何解决方法,以便我可以显示从Ships表中的Owners表中获取的多个所有者吗?
感谢您的帮助!
答案 0 :(得分:2)
您的数据库设计绝对不正确。
在您解释的情况下,您与船舶和船东之间存在多对多关系,必须转换为关系模型中的“关系表”。
在这种情况下:[所有权]表,包含2个字段,是相关表的2个主键(PK)。
换句话说,你需要3个表:
答案 1 :(得分:0)
问题在于,看起来Access不允许Nullable FK,因此无论拥有多少所有者,都必须填写所有所有者字段。
我能想到的唯一解决方案是引入ShipOwner表,该表具有ShipID和OwnerID列(作为Ship和Owner表的FK)。然后,您可以拥有任意数量的所有者。
Pros: You can add things like %Owned if that matters
Cons: The software has to enforce the limit of 5 owners
最大的专业:它会起作用!
干杯 -
编辑:第一段错误:Access确实允许你添加可空的FK。不过我仍然认为这里的建议很好。重复组(所有者1到5)违反规范化规则,并且此建议已标准化。