2012-05-25 56 views
0

由于我无法理解的原因,提供我的表的人没有任何形式的表单中的20k +条目的单个字段唯一标识。多字段主键

我有两个字段BuildingCode和RoomCode,它们共同组成一个独特的房间。例如:

BuildingCode RoomCode OtherInfo 
001    100A  This is room 100 A in building 1 
001    101   Different room in the same building 
002    100A  This is still unique, even though two 100As exist 

我知道我可以告诉访问索引这两个字段下一个“MainIndex”,并确保没有重复。我不知道该怎么做是让另一张桌子引用其中一个房间作为其父母(一对多关系)。

在我的Computers表中,我想引用一个特定的房间。也就是说,我希望确保RoomRef参考一个独特的房间。我该怎么做?

ComputerSN  RoomRef 
ABC123   001-100A 
ABC124   002-100A 

由于实现数据更新(在房间表中)的方式,我无法更改给定房间表的布局。

任何帮助显然是赞赏!

+0

你有什么理由不希望使用查询吗?查询不应该以某种形式完成,是否有任何理由?在表格中查找字段并不是一个好主意。 – Fionnuala

+0

我已经考虑过这个问题,但是如果我需要的话,如何确保我能够引用正确的房间,比如说“选择所有房间少于2台电脑”? – StuckAtWork

+0

让我重新说明这个问题...... – StuckAtWork

回答

0

房间ref应该由两个字段组成以匹配数据。它足够简单,可以加入查询。例如

SELECT DataTable.BuildingCode, DataTable.RoomCode, Count(DataTable.RoomCode) 
FROM DataTable 
INNER JOIN LookUpTable 
ON DataTable.BuildingCode = LookUpTable.BuildingCode 
AND DataTable.RoomCode= LookUpTable.RoomCode 
GROUP BY DataTable.BuildingCode, DataTable.RoomCode 

或者那里有。

+0

如果(大,如果)我遵循这个权利,这意味着你想要我使用关系表?还是你说我的电脑桌上应该有两个字段;一个用于建筑物,另一个用于房间,然后使用查询来选择“位于X房间和Y房间的电脑”? – StuckAtWork

+1

您的计算机表格和任何其他需要与数据匹配的表格中应该有两个字段。有两个领域有优势。您可以在计算机表的建筑代码+房间代码+计算机ID上使用唯一的索引,以便与数据表的唯一建筑代码+房间代码索引相关联。 – Fionnuala

+0

谢谢。我认为这将是足够的。 – StuckAtWork