アルバイト等でシフトを作ったりすると思うのですが、そのようなシステムを作りたいと思ってます。
DB設計の段階で、どういうテーブルを持ち、どういうスキーマにするべきなのか悩んでいます。
シフトは1ヶ月ごとに出すと仮定します。途中で特定の日時の編集はできるようにします。
例えば10月15日にシフトを書き始めた場合、15日までの日時は全てnoneにするようにします。月末までにシフトを記述していれば、翌月1日からシフトを反映させます。15日に記述したシフトについては16日から月末までの記述を行い、16日よりシフトを反映させます。
要件としてはこのくらいです。
ここから実際にDBの設計を行いたいのですが、自分が考えた設計としては以下の通りです。
- ユーザテーブル
- シフトテーブル
ユーザとシフトは1:多の関係で作っておきます。
シフトは1ヶ月毎に1レコード作られるとします。
つまり一つのレコード、例えば10月のシフトレコードを作成し多場合、スキーマとして、シフトID、ユーザの外部キー、1日から月末までのバイト有無と時間が考えられると思います。
ですが、問題が2点ほどあります。
まず1つ目に、スキーマが多すぎること、一月の日数を1フィールととすると30以上ものフィールドが出来てしまいます。
2つ目に月の日数が確定していないこと。30日の月もあれば29日も31日もあります。また閏年なども考慮しなければなりません。
このような問題で悩まされているのですが、何か良い打開策はないでしょうか?
また、違う設計の場合はどいうものが考えられるでしょうか?
回答宜しくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/10/15 14:40
2016/10/16 01:51