0

我正在尝试使用外键连接两个表。

表 1:(斑块)

PLAQUE_ID   PLAQUE_TYPE      facility_id    FACILITY    PLAQUE_SUB_LOCATION
2468        Lettering         26          Gorab Building    DONOR WALL FRIEND LEVEL
2469        Lettering         36          abc Hospital  MUSIC & ENTERTAINMENT WALL
2476        Facility Plaque   46          abc Hospital  1ST FL OFFICE ROOM

表 2:设施

FACILITY_ID FACILITY             FACILITY_DESC  PLAQUE_ID
26          Gorab Building                         2468
36          abc Hospital                           2469
46          abc Hospital                           2476

我不希望设施表与 Plaque 表具有相同的行。我想在设施列中使用不同的名称。我认为这样做的唯一方法是将FACILITY列作为表的外键,Plaque但我很困惑,因为我们可以将这样的列作为外键。我只看到ID列作为外键。列中不同值背后的原因是因为每一行都会对列中的值FACILITY进行大量描述。FACILITYFACILITY_DESC

一个答案将不胜感激。

4

1 回答 1

1

您不需要 Facility 表中的 PLAUQUE_ID,因为您在 Plaque 表中有一个 facility_id,这足以在 Plague 和 Facitlity 表之间建立连接。只需使用简单的连接。例如:

SELECT Plaque_ID, Plaque_Type, Facility FROM Plaque INNER JOIN Facility ON Plaque.Facility_ID = Facility.Facility_ID 

我认为您应该将 Facility 表的 Facility 列设置为唯一,并删除 Plaque 表的 Facility 列。请记住,斑块表应描述斑块属性。还可以考虑添加一个新的 PlaqueType 表,并将 Plaque id 的 Plaque Type 列替换为 PlaqueType 表的对应外键。

这里简单解释一下如何加入表http://www.w3schools.com/sql/sql_join_inner.asp

于 2013-05-13T18:56:58.877 回答