訪問予定を登録していくのに、DBの設計をどのように作るとわかりやすいものか?と思っているので、アドバイスだけでもいただければと思っています。
1.訪問予定日の選択
2.乗車予定の車の選択
3.乗車予定スタッフの選択(必ず三名乗車)
4.訪問予定先の登録(最小1名~最大10名)
5.訪問予定時刻の登録(4同様)
6.一言コメント用
上記のような予定を登録するフォームをズラズラと作ったとすると、、、
DBの設計としては、、、
tablename=test
1.id,
2.scheduled_date datetime,
3.ride_car,
4.ride_staff_A,
5.ride_staff_B,
6.ride_staff_C,
7.visited_1,
8.visited_sceduled_date_1 datetime,
9.visited_2,
10.visited_sceduled_date_2 datetime,
11.visited_3,
12.visited_sceduled_date_3 datetime,
13.visited_4,
14.visited_sceduled_date_4 datetime,
15.visited_5,
16.visited_sceduled_date_5 datetime,
17.visited_6,
18.visited_sceduled_date_6 datetime,
19.visited_7,
20.visited_sceduled_date_7 datetime,
21.visited_8,
22.visited_sceduled_date_8 datetime,
23.visited_9,
24.visited_sceduled_date_9 datetime,
25.visited_10,
26.visited_sceduled_date_10 datetime,
27.comment text
やはり、それだけの入れる場所がひつようなので、こんなにカラムを作る必要がありますか?
登録する内容は○月○日の○号車には○と○と○が乗って、○に○時~○に○時~・・・というように登録したいのですが。
まずDBを作るのに、こんなにしないといけないものかな~~~と思いつつ、、、
別にこれで行くなら、全然それでいいんですが、こううまくシンプルにできる方法があるのかな?と思ったので質問いたしました。
不適切であれば、申し訳ありません。。。。。
[追記]
回答いただいた方々、本当にありがとうございます!
実は、このような質問は適切なのかどうか?不安でしたが、沢山の回答をいただき、とても参考になっています!
今一度、自分の中で設計図を考え、何をしたいのか?どのようにしたいのか?などを考え直していこうと思っております。
[追記]
こちらは、一応参考までに、、、
現在、会社で使っているエクセルでの運行予定と、業務日誌があります。
ふと、考えたのが運行予定を予定として登録しておいて、予定の車が、予定通り訪問したのか?訪問しなかったのか?などをなんらかのフォームで登録したりすることで、ついでに業務日誌としての表示も済ませてしまう、、、
漠然とではありますが、そんなことができれば楽だな、、、と思ってしまいました。
必要な画面として今考えれるのは、、、、
○運行予定を登録する
×月×日の×号車の予定=スタッフ▲と▲と▲が▲時に▲さんへ→複数
これは、逆に訪問先▲さんの予定として=×月×日は×号車にスタッフ▲さんと▲さんと▲さんが▲時に来るでも良いかもしれませんね。
もしかしたら、スタッフ側で、▲さん=×月×日は×号車にスタッフ▲さんと▲さんと乗り、▲時に訪問先▲さんへ行くという見方もあります。
○運行予定を表示する
号車が複数であり、全体を表示したいのならば→×月×日の予定で検索し、号車別に表示
自分の号車の予定だけならば→×月×日の×号車の予定で検索し、×号車の一日の予定を表示
スタッフ1人別での検索、、、これは実際必要無いと思っています。
訪問先別での検索→訪問先×の一ヶ月分、一週間分、今日の予定での表示
○実績を登録する
例えば、上記での予定の検索において、自分の当日の号車予定を検索し、抽出しておいたとして、
1.9時~ ××さん 訪問 中止 その他のようにボタンを設置しておいて、実際の実績として登録できるようにする。
2.タイムカードのような仕組みで、訪問先に到着した時に訪問先の名前を選択して、訪問と打刻、退室時に退室と打刻することで、訪問時間を実績として登録(実際に訪問した時間)。
3.休憩時間なども、入力できるようにしておく。
○実績の表示、集計
これはほぼ、訪問先別の一ヶ月分の実績を集計して、表示させることになるかなと思っています。
もう、一つずつ作っていって、これが足りない、これはいらないなどを見つけていこうとは思っております。
[追記]
新規で質問しなおすのが適切でしたら、ご指摘ください。
とりあえず元の内容があるので、こちらに追記として、、、、
DBの設計をいろいろ見ながら考えておりますが、、、
上記質問時の予定登録の部分をまず見つめなおしました。
第一正規というのをやってみる際に、上記の流れのままやっていくのも良かったのですが、回答にてご指摘をいただいたとおり、1番に予定日が来て、、、ではなく、訪問先から見ていけば確かに良いんじゃないか?と思いましたので、
MySQL
1tablename = plans // 予定を入れるテーブル 2id // とりあえずこのテーブルのIDは入れておいたほうが良いのかな? 3user_name // 訪問先 4staff_name // 訪問予定スタッフ(A) 5car_number // 訪問予定社用車 6visit_time // 訪問予定日
まずは、こうするだけでシンプルになったかな?と思ったのですが、どうでしょうか?
staff_nameに関しては基本的に訪問は1台の車で訪問先1件に対して3人ですが、確かに2人の場合や、1人の場合があると思ったので、上記のテーブルで考えると、、、
id = 1, user_name = '○○さん', staff_name = '○○', car_number = '○○', visit_time = '2016/03/18 10:00:00' id = 2, user_name = '○○さん', staff_name = '××', car_number = '○○', visit_time = '2016/03/18 10:00:00' id = 3, user_name = '○○さん', staff_name = '▲▲', car_number = '○○', visit_time = '2016/03/18 10:00:00'
1件の訪問先に対して、3名の職員が、○○号車に乗っていつ行くかというデータが3行で作成されました。
こういう感じ自体はいかがでしょうか?
こう考えると、とりあえずstaff, car, userのマスタを作っておけばさらに良いのかな?と考えました。
予定を表示する際も、visit_timeとcar_numberで抽出や、user_nameでの抽出、staff_nameでの抽出も可能かな?と思ったのですが、、、
さらに、実績用のテーブルを作成します。
MySQL
1id 2user_name // 訪問先 3staff_name // 実際訪問した人 4car_number // 実際訪問した社用車 5visit_time // 実際訪問した時間 6service // 訪問した際に何したか 7comment // 一言あれば
こういう感じの見通しはどうでしょう?
回答9件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/16 08:54