-3

ユーザーが自由な時間帯を指定できるフォーム セクションを備えた Web サイトを構築しようとしています。(例: John Smith は、火曜日は 4 時から 7 時まで、水曜日は 8 時から 9 時まで空いています)

次に、サーバー側のコードを実行して、同様の時間ブロックを持つユーザーをペアリングしたいと考えています。

この機能をサポートするためにデータベースをどのように設計すればよいか、またどのようなアルゴリズムを使用すれば同様のユーザーと一致させることができるのだろうかと考えていました。

4

1 に答える 1

2

さて、私はあなたのデータベース構造を作ろうとします。

私が最善だと思うのは、1日をタイムブロックで分割することです。たとえば、00:00〜01:00、01:00〜02:00などです。これらをテーブルに配置します。

ID | day    | timestart | timeend
1  | Monday | 00:00     | 01:00
2  | Monday | 01:00     | 02:00
.....................

もちろんIDを除いて、すべての列は純粋に何を参照しているのかがわかるようになっていることに注意してください。

次に、ユーザーテーブルがあります

ID | username | email             | ...
1  | John     | john@example.com  | ...
.....................

次に、別のテーブル、time_offまたはsthがあります

    user_ID  | timeblock_ID
    1        | 2
    1        | 8
...............

他のテーブルを参照するために、user_IDとtimeblock_IDの両方に外部キーを配置します

次に、次の方法でこれを照会できます。

SELECT GROUP_CONCAT(timeblock_ID SEPARATOR ',') AS timeblocks FROM time_off WHERE user_ID=$id

結果を使用して、すべてのユーザーに同じ時間をオフにします。

SELECT
   users.ID, users.username
FROM time_off
   LEFT JOIN users ON users.ID=time_off.user_ID
WHERE
    time_off.timeblock_ID IN($timeblocks)
GROUP BY users.ID

それほど難しいことではありませんか?実装はあなた次第です。

于 2013-02-26T21:51:29.923 に答える