このレポートの表
このレポートは、'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 (候補キー) を決定します。次に正規化 これらを使用して、ベース テーブルの「より良い」選択肢を提案する可能性があります。