2

検索しても似たような質問が見つからなかったので投稿させていただきます。

  1. 10 人の同僚の仕事のスケジュールを楽しく作る

  2. カレンダーベースです(週7日のシフトがあり、シフトごとに異なる責任があります-(月曜日の午前8時から午後5時までのタスク1、月曜日の午前8時から午後5時までのタスク2、土曜日の午後5時から午前8時(夜)のタスク2など)

  3. MySQL の使用

mySQL テーブルをセットアップする最良の方法について頭を悩ませることはできません。誰でもこれを経験したことがありますか?

次の月曜日に言ってください:

Monday days - Joe - Task 1
Monday days - Sally - task 2
Monday days - Mike - task 3
Monday nights - Bob - task 1,2,3
Tuesday days - Joe - Task 1
..etc..

明らかに、このテーブルのセットアップは非効率的です。

id,  date, worker, shift, task

「日付」フィールドには、その年の各日に対して多数のエントリが含まれるため、非効率的です...もっと良い方法はありますか?

4

1 に答える 1

2

非常に興味深い質問であり、悪名高い難しい問題です。Scott Rosenberg のDreaming in Codeを読んで、この問題や同様の問題との闘いについて説明してください。

基本的なデザインをお選びいただけます。曜日とシフトを列挙するか、ワイルドカードのようなスキームを使用して時間間隔を記述することができます。(例: 「2013 年のすべての平日」または「2012 年 9 月の金曜と土曜」など)

ご覧のとおり、曜日とシフトを列挙すると、多くのレコードが生成されます。しかし、プログラミングは簡単です。また、MySQL は何万ものレコードを簡単に処理できます。

一方、ワイルドカードのようなスキームはよりエレガントです。しかし、意味的にははるかに複雑です。Unix / BSD / Linux crontab システム (http://crontab.org/) には、この種のものを指定するための単純だが見苦しい方法が含まれています。

この種の素晴らしい実装については、Google カレンダーの繰り返し予定機能セットをチェックしてください。

于 2012-08-11T18:48:34.797 に答える