很抱歉这么模糊的标题 - 不知道如何更好地命名。
我的问题如下。我有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中。
答案 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个字段),您可以创建一个关系来反映这一点 - 但我不确定它有多大用处它会。