|
|
|
Связь с несколькими уровнями в иерархии
|
|||
|---|---|---|---|
|
#18+
Задача: В базе данных есть сущности Студент, Группа и Курс. Студент связан с группой многие-ко-многим, группа с курсом - многие-к-одному. Помимо того, есть сущность Занятие (lection). Проблема состоит в том, что занятия бывают трех типов: индивидуальные, для группы и для курса в целом. Никаких других различий между этими типами нет. Вопрос - как правильнее связать занятие с студентом, группой и курсом? Я вижу такие варианты: 1. Сделать вместо одной таблицы "занятие" три практически идентичные таблицы и привязать их к студенту, группе и курсу 2. Сделать одну таблицу, в нее добавить столбцы для связи со всеми тремя таблицами и написать ограничение, чтобы можно было заполнить только один из столбцов на выбор. 3. Добавить три таблицы для связи занятия с студентом, группой и курсом, сделав из зависимыми сущностями. Написать триггеры для того, чтобы одно занятие не могло быть одновременно и для группы и для курса и т.д. Кто-нибудь подобную задачу решал? Интересуют соображения за и против предложенных вариантов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 13:08 |
|
||
|
Связь с несколькими уровнями в иерархии
|
|||
|---|---|---|---|
|
#18+
SenjaИнтересуют соображения за и против предложенных вариантов ИМХО существует только один вид занятий - занятие со студентом - оценки получает не группа а студент, посещаемость тоже учитыывается лично для студента а не для курса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 13:37 |
|
||
|
Связь с несколькими уровнями в иерархии
|
|||
|---|---|---|---|
|
#18+
Да, я так внечале и сделал, но при таком варианте сложно например различить занятия для курсов и для групп. Сложно найти занятия для некоей группы - надо проверятть что на него записаны все студенты группы и больше никого :( В предметной области занятие привязывается именно к группе или курсу, студенты из двух разных групп или курсов не могут ходить на одно занятие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 13:52 |
|
||
|
Связь с несколькими уровнями в иерархии
|
|||
|---|---|---|---|
|
#18+
SenjaВ предметной области занятие привязывается. в предметной области есть журнал успеваемости, в котором, как раз и привязан КАЖДЫЙ студент к каждой лекции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 14:00 |
|
||
|
Связь с несколькими уровнями в иерархии
|
|||
|---|---|---|---|
|
#18+
Имхо, 1. 'Тип занятия' (для студента, для группы, для курса) 2. 'Занятие' с указанием Типа занятия 3. 'Студент' 4. 'Группа' 5. 'Крус' 3. Общая сущность 'О', объединяющая сущности 'Студент', 'Группа', 'Курс' (подтипы этой сущности, связанные с ней идентифицирующей связью). 4. Это связь 3 и 2 олицетворяющая 'экземпляр занятия', которое характеризуется ('Занятием', датой, аудиторией и пр). Уникальность записи по мимо PK требуется установить. Плюс ссылка на 'O' и проверка в триггере на соответствие типа занятия и того, что экземпляр 'O' представлен в соответствующей таблице ('Студент', 'Группа', 'Курс') Если мной правильно был понят смысл Вашего задания ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 14:28 |
|
||
|
Связь с несколькими уровнями в иерархии
|
|||
|---|---|---|---|
|
#18+
MaryCatИмхо, 1. 'Тип занятия' (для студента, для группы, для курса) 2. 'Занятие' с указанием Типа занятия 3. 'Студент' 4. 'Группа' 5. 'Крус' 3. Общая сущность 'О', объединяющая сущности 'Студент', 'Группа', 'Курс' (подтипы этой сущности, связанные с ней идентифицирующей связью). 4. Это связь 3 и 2 олицетворяющая 'экземпляр занятия', которое характеризуется ('Занятием', датой, аудиторией и пр). Уникальность записи по мимо PK требуется установить. Плюс ссылка на 'O' и проверка в триггере на соответствие типа занятия и того, что экземпляр 'O' представлен в соответствующей таблице ('Студент', 'Группа', 'Курс') Если мной правильно был понят смысл Вашего задания Ошибочка с пониманием вышла таки... :( 2 - убираем, Lection понимаем как 4, т.е. добавить туда ссылку на 'O' и учитываем проверки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 14:32 |
|
||
|
Связь с несколькими уровнями в иерархии
|
|||
|---|---|---|---|
|
#18+
MaryCatОшибочка с пониманием вышла таки... если следовать ТЗ - нет смысла делать (3) - нет такой сущности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 15:09 |
|
||
|
Связь с несколькими уровнями в иерархии
|
|||
|---|---|---|---|
|
#18+
зоранее благодарень 1. Попробуйте представить запрос, выдающий список курсов для некоторой группы. Его придется формулировать как "курс, на который записаны все студенты данной группы и больше никого" - очень неоптимальный запрос. 2. В группу пришел новый студент. Он должен автоматически добавляться во все курсы данной группы. Придется писать триггер, а в нем тот самый запрос, который пунктом 1. Не очень хорошо, фактически это денормализация. 3. Посещаемость я учитываю именно так как Вы и предложили. MaryCat Спасибо, интересный вариант, я до него не додумался. Но тоже неочевидно, что он лучше предложенных мной. Вобщем-то эта задача похожа на "физиков и юриков" но немного по-другому. А все-таки по поводу предложенных мной вариантов есть соображения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 15:32 |
|
||
|
Связь с несколькими уровнями в иерархии
|
|||
|---|---|---|---|
|
#18+
Senja зоранее благодарень RE: 1 1 то как вы формулируете запросы достойно всеческого удивления попробуйте сами представить такой запрос - откуда и зачем предикат "и" я бы еще понял формулировку " все студенты <определенной> группы но больше никто" 2 из вашего условия в ТЗ на картинке следует, что группа может входить только в один курс RE: 2 1 если в группу зачислен новый студент он включается в курс обучения по которому проходит группа в которую его зачислили. Курс-<Группа-<Студент... Не знаю, что вы знаете о денормализации и при чем тут триггеры RE: 3 1 уже не плохо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 16:08 |
|
||
|
Связь с несколькими уровнями в иерархии
|
|||
|---|---|---|---|
|
#18+
По пункту 2 я написал бред :) Имелось в виду, что он должен быть записан на все лекции , которые слушает его группа. А группа разумеется входит только в один курс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 16:16 |
|
||
|
Связь с несколькими уровнями в иерархии
|
|||
|---|---|---|---|
|
#18+
Да, может быть это не совсем понятно, но у меня курс - это не набор занятий ("Квантовая механика" или "Пение"), а совокупность нскольких групп, например первый курс, второй и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 16:20 |
|
||
|
Связь с несколькими уровнями в иерархии
|
|||
|---|---|---|---|
|
#18+
SenjaДа, может быть это не совсем понятно, но у меня курс - это не набор занятий ("Квантовая механика" или "Пение"), а совокупность нскольких групп, например первый курс, второй и т.д. нужно тщательнее разобрать предметку - иначе просто потратите время впустую. может ли лекция быть проведена для студентов из разных групп а если нет, то почему? (у вас определено что нет - почему?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 16:45 |
|
||
|
Связь с несколькими уровнями в иерархии
|
|||
|---|---|---|---|
|
#18+
На лекцияю приходит либо одна группа, либо курс целиком, либо один человек. Так хочет заказчик. Логика такова, что група - это и есть та часть курса, которую может обучить один преподаватель. Таких случаев, чтобы на одни лекции деление было по одному, а на другие - по другому нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 17:48 |
|
||
|
Связь с несколькими уровнями в иерархии
|
|||
|---|---|---|---|
|
#18+
SenjaНа лекцияю приходит либо одна группа, либо курс целиком, либо один человек. Так хочет заказчик. Логика такова, что група - это и есть та часть курса, которую может обучить один преподаватель. Таких случаев, чтобы на одни лекции деление было по одному, а на другие - по другому нет. поскольку посещаемость нужно указывать для каждого - лучше не делить на разные сущности а сплитить посещения лекций по меньшему целому - на студентов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 18:02 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34412214&tid=1544664]: |
0ms |
get settings: |
12ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
8ms |
get forum data: |
5ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 424ms |

| 0 / 0 |
