0

外部キーを使用して 2 つのテーブルを接続しようとしています。

表 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列をテーブルの外部キーとして作成することだと思いましたが、そのような列を外部キーにPlaqueすることができるので混乱しています。ID列のみを外部キーとして見ました。列の個別の値の背後にある理由は、すべての行にFACILITY列の内容に関する大きな説明があるためです。FACILITYFACILITY_DESC

回答をいただければ幸いです。

4

1 に答える 1

1

Plaque テーブルに facility_id があり、Plague テーブルと Facitlity テーブルを接続するにはこれで十分なので、Facility テーブルに PLAUQUE_ID は必要ありません。単純な結合を使用するだけです。例えば:

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 に答える