DB構造再編

旧TrainNaviでは路線や駅に番号を振っていたが、これは拡張性を妨げるので、やめる。例えば、数年後に山手線新駅が完成する。このとき、駅を挿入するためには駅番号をずらさなければいけない。するとあちこちのDBも同時に直さねばいかず、必ず漏れが出てデバッグが大変になる。
路線番号はもっと拘束が大きい。簡単にインポート・エクスポートなどを行うためには、邪魔でしかない。インポート時に手元のものと衝突するから路線番号を変えなければいけない、なんてことになるとすごく手間だ。
路線番号や駅番号は廃止しよう!路線名や駅名で直接selectするのでよし。PHPもJavaScriptにも連想配列があるから、むしろ文字列の方が楽だ。
今回は正確な緯度経度を基にして駅を配置するから、駅と駅の間を直線で結ぶだけでは、特に駅間距離が長いときに不恰好になってしまう。それに、常磐線と常磐快速線のように停車駅が異なるとき、経由する線路が同じなのに描画すると線路がずれる、なんてダサいことも起こりうる。なので、駅と駅の間に、任意に経由地を挿入できるようにするべきだ。そうすれば、キレイな路線が書ける。いっそのこと曲線も書けるようにした方がいいかもしれない。電車のオブジェクトを動かすのが大変だけれど。
と色々と想像は膨らむけれどこれを全部実装するのは相当な手間だな。

暫定のDB構造

  • tnline 路線テーブル
    • linename 路線名
    • linecolor 路線の色
  • tnstation 駅テーブル
    • linename 路線名
    • stationname 駅名(空欄にすると経由地を表す)
    • kilo 営業キロ
    • latitude 緯度
    • longitude 経度
  • tntrain 列車テーブル
    • linename 路線名
    • trainname 列車名(列車番号)
    • service 平日か土日か
    • trainkind 列車種類(急行とか各停とか)
    • nextlinename 直通先路線名
    • nexttrainname 直通先列車名
  • tnroute 経路テーブル
    • linename 路線名
    • trainname 列車名
    • service 平日か土日か
    • startstation 発駅
    • endstation 着駅
    • starttime 発車時間
    • endtime 到着時間

コメントを残す

メールアドレスが公開されることはありません。