2个表之间的关系

时间:2015-04-20 09:34:15

标签: ms-access

很抱歉这么模糊的标题 - 不知道如何更好地命名。

我的问题如下。我有2个表,tbl1,tbl2。

tbl1:
tbl1ID
tbl1SomeInf

tbl2:
tbl2ID
tbl1ID (linked by FK)
tbl1SomeInf (copied from tbl1 based on the FK of tbl1ID, basically same row but different column)
tbl2SomeInf

我想要实现的是我知道tbl1SomeInf将始终与tbl1ID相关联,并且在创建tbl2时,我必须手动继续添加tbl1SomeInf值,这样可以犯错误。

问题:如何在tbl1的tbl1SomeInf列与tbl2的tbl1SomeInf之间建立关系。基本上已经存在将tbl1ID(tbl1)与tbl1中的tbl1ID相关联的关系,并且MS Access不会让我创建第二个关系。从逻辑上讲,这不是一种关系,只需从tbl1中获取与tbl1ID关联的tlb1SomeInf,并将其复制到tbl2,并将其复制到由FK tbl1ID关联的tbl1SomeInf字段中。

如果需要任何其他信息,请询问^ _ ^。

编辑:让我举一个例子。假设这些是tbl1中的条目:

tbl1ID    tbl1SomeInf
9017      ABC
9016      DEF
1140      ABC
1144      KJF
1000      KJF

现在tbl2条目:

tbl2ID    tbl1ID    tbl1SomeInf    tbl2SomeInf
AutoID    9017      ABC            irrelevant
.         9017      ABC            irrelevant2
.         9016      DEF            irrelevant3

基本上根据tbl1ID的FK自动填写tbl1SomeInf。

P.S。:所有这些都在MS Access中。

2 个答案:

答案 0 :(得分:0)

您根本不在第二个表中保存table1SomeInfo字段。由于table1和2已经存在关系,因此您始终可以从table2访问table1的信息。提供正确的外来/链接密钥。 只需从table2中删除不必要的字段table1SomeInf。

产生这样的结果:

tbl2ID    tbl1ID    tbl1SomeInf    tbl2SomeInf
AutoID    9017      ABC            irrelevant
.         9017      ABC            irrelevant2
.         9016      DEF            irrelevant3

你的查询将是这样的事情:

SELECT tbl2.autoid, tb1.tbl1ID, tbl1.tbl1someinf, tbl2.tbl2someinf
from tb1 inner join tbl2 on tb1.tbl1id= tbl2.tbl1id;

答案 1 :(得分:0)

@krish是对的。关系数据库很有用,因为它们可以减少数据冗余,这正是您正在做的事情。如果tbl1SomeInf影响tbl2SomeInf,那么该商业逻辑 - 不会让您的数据库关注此类内容。

我认为您使用了tbl1中的两个字段和tbl2中的前三个字段(或全部4个字段),您可以创建一个关系来反映这一点 - 但我不确定它有多大用处它会。

enter image description here