3

ここでの目的は、 Journey を提供するデータベースにクエリを実行できるようにすることです。Journey基づいて、データベースはこの旅を実行するすべての停止コードを返します。

たとえば、「ジャーニー 34 を通過するすべての停止コードを選択してください」と言うことができる必要があります。これにより、STOP CODE: SZDASDASDE のみが返されます。(本番環境では、さらに多くのコードが返されます)。

http://i.imgur.com/9ZBSxmq.png

上の図は、データベースの最初のテーブルの画像です。

ここに画像の説明を入力

各STOP CODEが親として多くのJOURNEYを持つ2 番目のテーブルも確認できます。私が知る限り、複数の旅を 1 つのフィールドに入れることは、標準的なデータベース設計には従わないので、誰かが私を修正するのを手伝ってくれれば、本当に感謝しています。

これらの画像は、これをどのように行うかを計画するために Microsoft の Excel で撮影したもので、本番環境では MySQL データベースを使用します。

ありがとう

4

3 に答える 3

5

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     |
------------------------------------------
于 2013-09-24T14:47:46.097 に答える
3

Journeys to stop code は多対多の関係であるため、結合テーブルが必要になる可能性が最も高くなります。

Table 1 :
SID   |   Stop Code   |  Long    |   lat 
0     | ASDFSAFA      | 1        | 2
1     | sdDSGSDGS     | 4        | 0 
....

Table 2 : 
Journey   | Description 
0         | Blah blah blah


Table 3 : 
Journey  | SID 
0        |  1
2        |  1
1        |  4


SELECT A.Longitude, A.Latitude FROM TABLE1 WHERE A.SID IN (
    SELECT SID FROM TABLE3 WHERE JOURNEY = 0
);
于 2013-09-24T14:46:30.887 に答える
0

これを試して:

    TABLE 1
    -------
    JOURNEY (PK) DESCRIPTION

    TABLE 2
    -------
    SEQUENCENO (PK) STOP_CODE LATITUDE LONGITUDE

    TABLE 3
    -------
    JOURNEY SEQUENCENNO 
于 2013-09-24T14:50:03.453 に答える