0

データベースをモデル化する方法について助けが必要です。各公共交通機関の時刻表を保存する必要があります。私たちが持っているものを見てみましょう...

  • 異なる路線 (バス番号 100、101、102 など) があります。
  • 各路線には異なる停留所があり、それぞれの座標を保存する必要があります。
  • 各停留所には、次のような特定の時刻表があり ます

私が開発しているプログラムの目的は、公式時刻表のエラーをチェックすることです。各バスには、10 秒ごとに位置をデータベースに送信する追跡 GPS デバイスがあります。そのため、座標がいずれかの停留所の座標に近いレポートの時間を確認し、その時間を公式時間と比較し、大きな違いがある場合は、別のテーブル STATISTICS に問題を報告する行を作成する必要があります。

とにかく、これは文脈のためだけでした。真実は、それを効率的な方法で保存する方法についての手がかりがないということです.

ストップを含むテーブルを作成することを考えました: STOP_ID (PK) - NAME - LAT - LON - LINE - TIMETABLE

timetable は、その停留所 [5:03,5:25,5:50,6:12,...] に対してシリアル化されたすべての時刻を含む配列になります。

これは良い解決策ではないと思いますが、より良いアプローチについては考えられません。

停留所のテーブルとその他の時刻表のテーブルを作成できるかもしれませんが、時刻表の列は何でしょうか? 私には非常に多くの変数があります...それが毎週、土曜日、または休日の場合、多くの時間、分...そして停留所ごとにすべて異なります。

この問題に立ち向かう方法について、何か考えを共有できますか? どうもありがとうございました!!

4

1 に答える 1

2

サイモンが言ったように、あなたは大きなプロジェクトを始めようとしています。

提案: リレーショナル DBMS のさまざまな標準形式について調べてください。持っていない場合、これは役立つ背景を提供します。

エンティティ (テーブル) は何ですか? バス路線 (往路と復路を 2 つの異なる路線と見なします)。それらの線の駅、順序付けられました。移動 (例: 106 バスは中央駅を 05:22 に出発し、別の移動は 05:42 など)。定期停止 GPS 観測。

考えられるテーブルと列は次のとおりです。

 Busline table:   one row for each busline.   
   Busline  e.g. 106-outbound or 108-inbound   (pk)
   Description

 Station table:   one row for each bus stop, including ends of trips
   Busline        part of pk, fk to Busline  e.g. 106
   Stationid      part of pk  kf to Station 
   Description    e.g. Second Avenue Eastbound at Houston Street
   lat
   long

 Trip table: One row for each bus trip.
   Tripid   pk
   Busline  fk to Busline
   Description  e.g.   05:22 trip Central Station to University Park

 Schedule table:  one row for each scheduled time for each trip at each stop 
   Scheduleid  pk ... ascending serial number.
   Busline     fk to Station
   Stationid   fk to Station
   Tripid      fk to Trip
   Time

 Observation table  a row for each of your GPS readings
   Observationid  pk  ... ascending serial number
   Busline if you know it   fk to Busline
   Tripid if you have it    fk to Trip
   Time
   Lat
   Long

RDBMS 設計に関する私のアドバイスは、複数のデータ項目を単一の DBMS 列にシリアル化することは避けることです。そのため、スケジュール表を提案しました。

Busline、Station、Trip、および Schedule テーブルをロードする方法を理解し、Observation テーブルに観測をロードしたら、観測をスケジュールと関連付ける興味深い演習になるでしょう。

気をつけて!自治体の運輸部門に当惑する可能性があります。:-)

于 2013-06-12T22:04:52.047 に答える