Tabulka pro tento přehled
Tato zpráva funguje pouze v případě, že 'Michel' identifikuje jednoho instruktora. V opačném případě budete potřebovat více dílčích přehledů pro jeden průnik mezi pracovní dny a časové úseky, nebo potřebujete více přehledů.
Každý neprázdný dílčí přehled na řádku a sloupci vašeho přehledu vám říká:instructor Michel teaches course
C
in classroom
CR
to section
S
for department
D
.
Zpráva vám tedy říká celkově totéž jako tabulka obsahující řádky, kde:instructor Michel teaches course
C
in classroom
CR
to section
S
for department
D
in timeslot
TS
on weekday
WD
. Všimněte si, jak takto vezmeme každý sloupec a řádek vícerozměrného přehledu a přidáme pro něj sloupec do tabulky pro každý vícerozměrný dílčí přehled, kde se protínají.
Pravděpodobně budete chtít tabulku, která vám řekne to samé, co všechny zprávy pro všechny instruktory:instructor
I
teaches course
C
in classroom
CR
to section
S
for department
D
in timeslot
TS
on weekday
WD
. Všimněte si, jak vezmeme parametr v nadpisu a přidáme pro něj sloupec do tabulky.
(Nyní se nemusíme starat o to, zda Michel identifikuje jednoho instruktora.)
První návrh tohoto přehledu
Jména instruktorů jsou pravděpodobně nejedinečná nebo nestálá. Takže ke jménům a názvům sestav přidejte ID. Pravděpodobně máte více údajů o instruktorech, kurzech a odděleních. Mějte pro ně stoly. Číslo sekce je zjevně jedinečné pouze v rámci kurzu.
-- 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
Detaily vašeho designu se budou lišit. Možná mají kurzy a/nebo oddělení jedinečné kódy. Pak je můžete použít jako FK. Poté přidejte tabulku. Sekce může být zřejmě aktivní, ať už to znamená cokoli.
CK a normalizace
Daný instruktor, časový úsek a den v týdnu může mít pouze jednu týdenní přednášku. Ale žádná menší podmnožina z nich to nedělá. Takže máme Weekly_Lecture CK(I_id, TS_name, WD_name)
. Daný kurz, sekce, časový úsek a den v týdnu může mít pouze jednu týdenní přednášku. Ale žádná menší podmnožina z nich to nedělá. Takže máme Weekly_Lecture CK(C_name, S_number, TS_name, WD_name)
. Daná učebna, časový úsek a pracovní den mohou mít pouze jednu týdenní přednášku. Ale žádná menší podskupina z nich to nedělá. Takže máme Weekly_Lecture CK(CR_name, TS_name, WD_name)
.
Je možné, že daný předmět lze vyučovat pouze pro jedno oddělení? Možná, že dané číslo oddílu může učit pouze daný instruktor? Identifikací všech FD (funkčních závislostí) určíme všechny CK (kandidátské klíče). Poté normalizace používá je k případnému navrhování "lepších" voleb pro základní tabulky.