【问题标题】:Multi-Field Primary Key多字段主键
【发布时间】:2012-05-25 14:27:24
【问题描述】:

由于我无法理解的原因,提供我的表格的人没有任何形式的单字段唯一标识来标识他们表格中的 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”下的这两个字段的索引访问,并确保没有重复。我不知道该怎么做是允许另一个表引用其中一个房间作为其父级(一对多关系)。

在我的计算机表中,我希望引用一个特定的房间。也就是说,我希望确保 RoomRef 是对一个唯一房间的引用。我该怎么做?

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

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

任何帮助都非常感谢!

【问题讨论】:

  • 您有什么理由不想使用查询吗?是否有任何理由不应该以表格形式进行查找?在表格中查找字段并不是一个好主意。
  • 我已经考虑过这个问题,但是如果需要,我如何确保可以参考正确的房间,比如“选择所有少于 2 台计算机的房间”?
  • 让我重新表述这个问题......

标签: ms-access multikey lookup-field


【解决方案1】:

Room 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

或者差不多。

【讨论】:

  • IF (big if) 我跟着这个对,意思是你要我使用关系表?或者您是说我的计算机表中应该有两个字段;一个用于建筑物,一个用于房间,然后使用查询选择“位于房间 X 和建筑物 Y 中的计算机”?
  • 您的计算机表和任何其他需要匹配数据的表中应该有两个字段。拥有两个领域是有优势的。您可以在您的计算机表中建立唯一的建筑代码 + 房间代码 + 计算机 ID 索引,以关联数据表的唯一建筑代码 + 房间代码索引。
  • 谢谢。我认为这就足够了。
猜你喜欢
  • 2012-05-03
  • 2011-03-31
  • 1970-01-01
  • 2010-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-23
  • 1970-01-01
相关资源
最近更新 更多