現在、データベースのアイデアをいじっています。どのような方法でも展開されることはなく、むしろ学習体験です。
これは、私が通った大学の一連のクラスのチューター情報の収集と処理を簡素化することを目的としています。私は、学期ごとに少数のクラスの家庭教師を編成するオフィスでアルバイトをしていました。
いくつか質問がありますが、現在問題になっているのは、各チューターの空き状況をどのように保存できるかということです。現在、3 つのオプションを検討しており、技術的な観点からそれぞれの長所と短所についてフィードバックを求めています。
背景: チューター情報は「tutor」テーブルに保存され (tutorID はこれを参照します)、以前の可用性を呼び出せる必要があります。講師の空き状況は個別 (時間単位) で、学期を通じて一定です。
オプション1:
Table: Availability
+-----------+---------+-------+-------+---+---+---+----+---+
| avID (PK) | tutorID | year | sem | M | T | W | Th | F |
| | | (int) | (int) | (all strings) |
+-----------+---------+-------+-------+---+---+---+----+---+
このテーブルでは、可用性が文字列に格納されます (08、09、10、13、14 は、午前 8 時、午前 9 時、午前 10 時、午後 1 時、および午後 2 時を表します)。
データは次の方法で再利用できます
SELECT * FROM Availability WHERE tutorID=0001 AND year=2013 AND sem=1
そして、誰が利用可能かを確認するには
SELECT * FROM Availability WHERE AND year=2013 AND sem=1 AND M LIKE '%08%'
オプション 2:
Table: Availability
+-----------+---------+-------+-------+--------------+
| avID (PK) | tutorID | year | sem | availability |
| | | (int) | (int) | (set) |
+-----------+---------+-------+-------+--------------+
このレイアウトでは、可用性列は mysql に SET データ型として格納され、オプションは月から金曜までのすべての組み合わせと、8 から 4 までのすべての時間 (M08、M09... Th14、F16 など) です。これは、45 の許容値になります。これは私が現在傾いているものですが、SETデータ型についてはあまり知りません。
データは次の方法で再利用できます
SELECT * FROM Availability WHERE tutorID=0001 AND year=2013 AND sem=1
そして、誰が利用可能かを確認するには
SELECT * FROM Availability WHERE AND year=2013 AND sem=1
AND FIND_IN_SET('M09',availability) > 0
オプション 3:
Table: Availability
+-----------+---------+-------+-------+-------+-------+
| avID (PK) | tutorID | year | sem | day | time |
| | | (int) | (int) | (int) | (int) |
+-----------+---------+-------+-------+-------+-------+
このオプションでは、各チューターごとに毎年、各タイムスロットに 1 つの行があります。
データは次の方法で再利用できます
SELECT * FROM Availability WHERE year=2013 AND sem=2 AND tutorID=0001
可用性
SELECT * FROM Availability WHERE year=2013 AND sem=2 AND day=3 AND time=14
とにかく...すべてを読んでくれてありがとう。うまくいけば、誰かがこれに光を当てることができるでしょう。基本的にベストプラクティスタイプの質問になると思います。私が完全に見逃したものがない限り!!