Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 外键栏问题_Sql Server - Fatal编程技术网

Sql server 外键栏问题

Sql server 外键栏问题,sql-server,Sql Server,我正在尝试使用外键连接两个表 表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 &

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

表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
我不希望设施表与牌匾表具有相同的行。我希望设施列中有不同的名称。我认为唯一的方法是将
FACILITY
列作为
plate
表的外键,但我感到困惑,因为我们可以将这样的列作为外键。我只看到
ID
列作为外键。
FACILITY
列中存在不同值的原因是,每一行在
FACILITY\u DESC
列中都有关于该
FACILITY
的大量描述


如能答复,将不胜感激

您不需要设施表中的设施ID,因为您在设施表中有一个设施ID,这足以在瘟疫和设施表之间建立联系。只需使用一个简单的连接。例如:

SELECT Plaque_ID, Plaque_Type, Facility FROM Plaque INNER JOIN Facility ON Plaque.Facility_ID = Facility.Facility_ID 
我认为您应该将Facility表的Facility列设置为唯一,并删除Plate表的Facility列。记住,牙菌斑表应描述牙菌斑的性质。 还考虑添加一个新的PPLAQETYPE表,并用PraceCype表中的外键替换斑块ID的斑块类型列。


这里简单解释了如何连接表

,那么为什么不直接查询
不同的
设施呢?外键只能引用目标表的主键(很可能是
plate\u ID
),或者唯一索引中的任何列。由于
plate
中的
Facility
不是唯一的,因此您无法在其上放置唯一索引-因此您将无法使用外键引用它斑块和设施之间的关系是什么?我猜一个设施可以有任意数量的斑块,但每个斑块必须存在于一个且仅存在于一个设施中。这是正确的吗?@FreshPrinceofSO此时我正在尝试建立关系数据库,因此我需要找出方法来规范化设施表,这样,如果斑块表中有80000条记录,那么设施表中只有200个设施(不同计数)然后可以在200而不是80中输入描述,000@RBarryYoung是的,没错,我按照你的指示做了,但这给了我不同的设施行和相应的斑块id,斑块类型。但我也希望展示其他具有相同功能的斑块。我怎样才能得到那些具有相同功能的斑块。斑块表有80000行。一个牌匾只有一个设施,但一个设施有许多牌匾。所以,如何在Plate表中使用外键连接在Facility表中有不同的行。我找到了一个解决方案,只需在Plate表中使用Excel中的Vlookup生成Facility ID。具有相同名称的设施将具有相同的设施id