sql >> データベース >  >> RDS >> Sqlserver

作成した表から講師用の予定表を作成するにはどうすればよいですか

    このレポートの表

    このレポートは、'Michel' が 1 人のインストラクターを識別した場合にのみ機能します。それ以外の場合は、1 つの平日の時間帯の交差点に対して複数のサブレポートが必要になるか、複数のレポートが必要になります。

    レポートの行と列にある空白でない各サブレポートは、次のことを示しています:インストラクターのミシェルがコースを教えています C 教室で CR セクションへ S 部門用 D .

    したがって、このレポートは、次のような行を保持するテーブルと全体的に同じことを示しています。 C 教室で CR セクションへ S 部門用 D タイムスロット内 TS 平日 WD .このような多次元レポートの各列と行を取得し、それらが交差する各多次元サブレポートのテーブルに列を追加する方法に注目してください。

    おそらく、すべてのインストラクターのすべてのレポートと同じことを示すテーブルが必要になるでしょう:instructor コースを教える C 教室で CR セクションへ S 部門用 D タイムスロット内 TS 平日 WD .タイトルでパラメーターを取得し、その列をテーブルに追加する方法に注目してください。

    (これで、Michel が 1 人のインストラクターを特定したかどうかを心配する必要がなくなりました。)

    このレポートの最初のデザイン

    インストラクターの名前は、おそらく一意ではないか、永続的ではありません。そのため、名前とレポートのタイトルに ID を追加してください。おそらく、インストラクター、コース、および部門に関するより多くのデータを持っているでしょう。だからそれらのためのテーブルを用意してください。どうやら、セクション番号はコース内でのみ一意です。

    -- instructor ID is named NAME and ...
    Instructor(id, name, ...)
        CK(id)
    -- course NAME ...
    Course(name, ...)
        CK (name)
    -- department NAME ...
    Department(name, ...)
        CK (name)
    -- course C_NAME has section S_NUMBER
    Course_Has_Section(C_name, S_number)
        CK (C_name, S_number)
        FK(C_name) to Course
    -- instructor I_id teaches course C_NAME in classroom CR_NAME to section S_NUMBER 
    --     for department D_NAME in timeslot TS_NAME on weekday WD_NAME
    Weekly_Lecture(I_id, C_name, CR_name, S_number, D_name, TS_name, WD_name)
        FK(I_id) to Instructor
        FK(C_name, S_number) to Course_Has_Section
        FK(D_name) to Department
    

    デザインの詳細は異なります。おそらく、コースや部門には固有のコードがあります。次に、それらを FK として使用できます。次に、テーブルを追加します。どうやら、それが何を意味するにせよ、セクションがアクティブになる可能性があるようです。

    CK と正規化

    特定のインストラクター、時間枠、および平日は、週に 1 回の講義のみを行うことができます。しかし、それらの小さなサブセットはそうではありません。 Weekly_Lecture CK(I_id, TS_name, WD_name) があります .特定のコース、セクション、時間枠、および平日は、週に 1 回の講義のみを行うことができます。しかし、それらの小さなサブセットはそうではありません。 Weekly_Lecture CK(C_name, S_number, TS_name, WD_name) があります .特定の教室、時間枠、および平日は、週に 1 回の講義のみを行うことができます。しかし、それらの小さなサブセットはそうではありません。 Weekly_Lecture CK(CR_name, TS_name, WD_name) があります .

    特定のコースは 1 つの学科でしか教えられないのでしょうか?特定のセクション番号は、特定のインストラクターだけが教えることができるのでしょうか?すべての FD (機能依存関係) を識別することにより、すべての CK (候補キー) を決定します。次に正規化 これらを使用して、ベース テーブルの「より良い」選択肢を提案する可能性があります。




    1. 非表示の入力で選択の値を送信する方法

    2. varchar(max) どこでも?

    3. SQLでパーセント/合計を行う方法は?

    4. MicrosoftAccessの10の時間節約ショートカット