Stop Codes と Journeys の間には多対多の関係があります。これを根絶するには、関係を分解する必要があります。
これを行うには、中間テーブルが必要です。これを JourneyStopCode と呼びましょう。次のようになります。
JourneyStopCode:
JourneyStopCodeID (primarykey)
JourneyID
StopCodeID
その場合、Stop Code テーブルには JourneyID フィールドがありません。
ジャーニーの停止コードを取得するには、次のようにします。
SELECT * FROM StopCode
INNER JOIN JourneyStopCode ON StopCode.StopCodeID = JourneyStopCode.StopCodeID
INNER JOIN Journey On Journey.JourneyID = JourneyStopCode.JourneyID
WHERE JourneyID = @yourJourneyID
編集:視覚化するには:
--------------- --------------------- ----------------
| Journey | | JourneyStopCode | | StopCode |
--------------- --------------------- ----------------
| JourneyID |<--- | JourneyStopCodeID | --->| StopCodeID |
| Description | |----| JourneyID | | | Latitude |
--------------- | StopCodeID |------ | Longitude |
--------------------- ----------------
次に、データは次のようになります。
旅
----------------------------------------
| JourneyID | Description |
----------------------------------------
| 34 | Southampton - Portsmouth |
----------------------------------------
停止コード
----------------------------------------
| StopID | Latitude | Longitude |
----------------------------------------
| SSDAFS | 12345 | 67890 |
----------------------------------------
JourneyStopコード
------------------------------------------
| JourneyStopID | JourneyID | StopCodeID |
------------------------------------------
| 1 | 34 | SSDAFS |
------------------------------------------