六帖のかたすみ

DVを受けていた男性。家を脱出して二周目の人生を生きています。自閉症スペクトラム(受動型)です。http://rokujo.org/ に引っ越しました。

DB構造再編

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

暫定のDB構造

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