将两个表与组合字段相关联

时间:2013-09-26 00:58:09

标签: ms-access foreign-keys ms-access-2010

我想将表DRG与表DAT在1对n中联系起来。

ID    Day    Month    Year    ForeignKeyDRG
1     01     April    1983    ?
2     07     June     2005    ?
..    ..     ..       ..

表DAT

DAT代表“DATe”并包含我相关日期的列表。

From    To
foo     bar
..      ..

表格DRG

没关系DRG代表什么,它只是一个带有值的任意表(实际上它代表“DateRanGe”但是这个例子在语义上没有这样做,所以让我们假设它是两个具有唯一资格的字段的任何东西每个条目。)

我不想在DRG中引入第三个字段ID,但希望从From和To中获得一个组合密钥。如何告诉MS-Access在表DAT中将组合用作外键?

1 个答案:

答案 0 :(得分:1)

  

我不想在DRG中引入第三个字段ID

你应该解释为什么你不想要第三个领域。假设您的DRG表没有其他字段,答案是您需要第三个字段,否则您也可以将From To字段移动到DAT表中。表使用主键到主键(一对一关系)或外键的主键(一对多关系)相互链接。可以使用复合键,其中两个字段组合以创建主键但我们经常看不到这些在关系中使用,尽管它可能是可能的。在你的特定情况下,没有任何东西可以获得,事实上,尝试这个是非常荒谬的,因为你需要两个表中的From和To字段才能形成关系。

有很多数据库人员都说每个表都应该有一个自动递增的数字ID字段作为它的主键。我已经连续几年一直在进行数据库编程了,而且我自己也开始朝着这个方向前进。拥有复合键通常没有意义。如果要防止在两个字段中都有两个具有相同值的记录,则始终可以创建包含两个字段的唯一索引。