2

私はこれに関連する他の提案を少し探しましたが、私が見たものは私のニーズに完全に合っていなかったので、ここに行きます!

私が持っているのは、マルチクラス(オーストラリアの中等学校、7〜12年生)、マルチデイ(月〜金)の学校の時間割です。私が今構築したいのは、アカウント駆動型Webサイトにデプロイされる次の情報を含むMySQLデータベースです。

  • 科目:
    • 実行時間(「水曜日の期間1」、「金曜日の期間2」など-この列の複数の値)
    • インストラクター(すべての教師の個別のデータベースにリンクされています)-教師が病気で交代した場合、これはさらに(一時的に)変更する必要があります。おそらく、NULLの場合に無視される「replacementinstructor」列です。
    • 場所(異なるが、特別に割り当てられた、異なる日に部屋)-上記のように、部屋が変更されたときに一時的に変更されます。
    • その他の自明性:コース名(「Year7Health」)、一意のID(INTを自動インクリメントするだけでなく、「7.HEALTH」のようなもの)など。
  • 教師:
    • 名前苗字
    • 彼らが受講するコース
    • 連絡先情報
    • その他の自明性:一意のID(INTの自動インクリメント)、ユーザー名(fname.lname)、アカウントのパスワードなど。
  • 学生:
    • 名前苗字
    • 彼らが参加するコース(各学生の個別のリストとして保存されます)
    • 年レベル/フォーム(7年目、11年目など)
    • 基本的な個人情報(郊外、メールなど)
    • より明白なもの:一意のID(教師と同じ設定)、ユーザー名(教師と同じ)、パスワードなど。

このようなデータ構造をどのように設計するかについての洞察をいただければ幸いです。私はMySQLの思想家というよりもUIの熱狂的ファンです;​​-D

前もって感謝します。

4

2 に答える 2

7

MySQLで使用する次のテーブルを考えることができます。

学生
学生情報

  • id(auto_increment)
  • ファーストネーム
  • 苗字
  • ユーザー名
  • パスワード
  • student_id(私は学生証を持っていましたが、7年目と10年目のどちらでこれを受け取ったか思い出せません)
  • Eメール
  • contact_phone
  • 郊外
  • 状態(ENUM-ACT、NSW、WA、SA、TAS、VIC、NT、QLD)

教師
教師情報

  • id(auto_increment)
  • ファーストネーム
  • 苗字
  • タイトル(博士、夫人など)
  • ユーザー名
  • パスワード
  • Eメール
  • contact_phone
  • 郊外
  • 状態(ENUM-ACT、NSW、WA、SA、TAS、VIC、NT、QLD)

主題
すべての異なる主題

  • id(auto_increment)
  • 主題
  • subject_code(例:7.HEALTH)

場所
学校周辺のさまざまな場所

  • id(auto_increment)
  • 場所(例:BLOCK A、ROOM 2、MUSIC ROOM)

subject_teachers
各教師が教える科目

  • id(auto_increment)
  • subject_id
  • Teacher_id

subject_students
各学生が受講する科目

  • id(auto_increment)
  • subject_id
  • 学生証

subject_timetable
メインタイムテーブル

  • id(auto_increment)
  • subject_id
  • location_id
  • Teacher_id
  • alt_teacher_id(例:代用教師)
  • 間隔
  • 期間(番号1-ただし、1日にいくつの期間。正しく覚えていれば6)
  • 週(数1-2またはおそらく1-52)
  • 平日(1-5番)
  • メモ(@Oswaldが提案したように、状況が変わったときにメモを追加できます)

メモを照合して、タイムテーブルに脚注として表示することができます。

于 2011-04-23T09:06:04.333 に答える
3

明らかに、科目用のテーブル、学生用のテーブル、教師用のテーブルが必要になります。

データベースの正規化について読んでください。これは(とりわけ)あなたに教えてくれます:

  • 実行時間をコンマ区切りのリストとしてサブジェクトテーブルに入れないでください。代わりに、実行時にテーブルを使用し、外部キーを使用して、そのテーブルからサブジェクトテーブルにエントリをマップします。
  • 教師をコースにマッピングする場合も同様です。
  • 学生をコースにマッピングする場合も同様です。
  • その実行時間テーブルは、特定の実行時間中にコースの場所を保持するのにも適しています。

さらに、データベースに一時的な変更を記録する場合、特定の時間に関連情報を変更する人々に依存しています。これを回避するために、記録するテーブルレッスンを検討することをお勧めします

  • 実行時間
  • 週番号
  • コース
  • インストラクター
  • 位置
  • その特定のレッスンに固有の可能性がある他のフィールド。

これにより、事前に変更をスケジュールすることができます(McCachney氏は次の2週間は病気で、101号室は1か月間改装のため閉鎖されます)。

于 2011-04-23T08:58:31.833 に答える