Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Нормализация отношений в реляционной базе данных

MOROZ ILKA Профи (762), открыт 1 неделю назад
- провести нормализацию,
- сформировать отношения,
- построить схему связей

у меня получилось что-то подобное. Преподаватель сказала придумать и подписать код преподавателя(КодП) самому, иначе таблицы невозможно будет связать. Немного не ясно, ко всем остальным таблицам тоже приделывать этот код, дабы можно было их связать?
1 ответ
Папа Высший разум (153211) 1 неделю назад
В каждой таблице должен быть первичный ключ. Выделяем сущность - делаем ей колонку "id". В целях производительности её тип обычно - целое число, назначаемое из последовательности.

Я бы ещё выделил "образование" в отдельный справочник и ссылался бы на него.

А вот выделения учебных часов в сущность не понял. Зачем это делать? Нужно выделять группу и дисциплину, а отдельное отношение группа-дисциплина-препод может иметь свойство "количество часов". Как-то так:
 Модель:


+--------Расписание (sid, tid, did, gid, hours)
| | |
| | |
v | v
Препод (tid, фио) | Дисциплина (did, code, name)
^ ^ |
| | +-------------------->Группа (gid, name)
| |
| +----------------------+
| |
Квалификация (qid, tid, grade, cost) |
|
Образование (eid, tid, name)
Здесь "расписание" - то самое тройственное отношение многие ко многим, у него свой id и свойство "часы". Преподаватель, группа и дисциплина - независимые сущности.

А у нормализации, кстати, есть шесть форм , каждая включает свойства предыдущей, и в 6-й НФ ты вообще не узнаешь свою БД.
MOROZ ILKAПрофи (762) 1 неделю назад
Спасибо за ответ, все таблицы, в том числе учебные часы выделял по наставлению учителя. То есть грубо говоря к каждой таблице сделать колонку id и выделить её как первичный ключ, и через id связывать их?
Папа Высший разум (153211) MOROZ ILKA, обнови ответ, я схемку набросал.
Похожие вопросы