powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Связь с несколькими уровнями в иерархии
14 сообщений из 14, страница 1 из 1
Связь с несколькими уровнями в иерархии
    #34411458
Senja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача:
В базе данных есть сущности Студент, Группа и Курс. Студент связан с группой многие-ко-многим, группа с курсом - многие-к-одному.
Помимо того, есть сущность Занятие (lection).
Проблема состоит в том, что занятия бывают трех типов: индивидуальные, для группы и для курса в целом. Никаких других различий между этими типами нет.

Вопрос - как правильнее связать занятие с студентом, группой и курсом?

Я вижу такие варианты:
1. Сделать вместо одной таблицы "занятие" три практически идентичные таблицы и привязать их к студенту, группе и курсу
2. Сделать одну таблицу, в нее добавить столбцы для связи со всеми тремя таблицами и написать ограничение, чтобы можно было заполнить только один из столбцов на выбор.
3. Добавить три таблицы для связи занятия с студентом, группой и курсом, сделав из зависимыми сущностями. Написать триггеры для того, чтобы одно занятие не могло быть одновременно и для группы и для курса и т.д.

Кто-нибудь подобную задачу решал? Интересуют соображения за и против предложенных вариантов
...
Рейтинг: 0 / 0
Связь с несколькими уровнями в иерархии
    #34411552
Фотография зоранее благодарень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SenjaИнтересуют соображения за и против предложенных вариантов

ИМХО существует только один вид занятий - занятие со студентом - оценки получает не группа а студент, посещаемость тоже учитыывается лично для студента а не для курса
...
Рейтинг: 0 / 0
Связь с несколькими уровнями в иерархии
    #34411604
Senja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, я так внечале и сделал, но при таком варианте сложно например различить занятия для курсов и для групп. Сложно найти занятия для некоей группы - надо проверятть что на него записаны все студенты группы и больше никого :(
В предметной области занятие привязывается именно к группе или курсу, студенты из двух разных групп или курсов не могут ходить на одно занятие.
...
Рейтинг: 0 / 0
Связь с несколькими уровнями в иерархии
    #34411638
Фотография зоранее благодарень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SenjaВ предметной области занятие привязывается.

в предметной области есть журнал успеваемости, в котором, как раз и привязан КАЖДЫЙ студент к каждой лекции
...
Рейтинг: 0 / 0
Связь с несколькими уровнями в иерархии
    #34411739
MaryCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имхо,
1. 'Тип занятия' (для студента, для группы, для курса)
2. 'Занятие' с указанием Типа занятия
3. 'Студент'
4. 'Группа'
5. 'Крус'
3. Общая сущность 'О', объединяющая сущности 'Студент', 'Группа', 'Курс' (подтипы этой сущности, связанные с ней идентифицирующей связью).
4. Это связь 3 и 2 олицетворяющая 'экземпляр занятия', которое характеризуется ('Занятием', датой, аудиторией и пр). Уникальность записи по мимо PK требуется установить. Плюс ссылка на 'O' и проверка в триггере на соответствие типа занятия и того, что экземпляр 'O' представлен в соответствующей таблице ('Студент', 'Группа', 'Курс')

Если мной правильно был понят смысл Вашего задания
...
Рейтинг: 0 / 0
Связь с несколькими уровнями в иерархии
    #34411754
MaryCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaryCatИмхо,
1. 'Тип занятия' (для студента, для группы, для курса)
2. 'Занятие' с указанием Типа занятия
3. 'Студент'
4. 'Группа'
5. 'Крус'
3. Общая сущность 'О', объединяющая сущности 'Студент', 'Группа', 'Курс' (подтипы этой сущности, связанные с ней идентифицирующей связью).
4. Это связь 3 и 2 олицетворяющая 'экземпляр занятия', которое характеризуется ('Занятием', датой, аудиторией и пр). Уникальность записи по мимо PK требуется установить. Плюс ссылка на 'O' и проверка в триггере на соответствие типа занятия и того, что экземпляр 'O' представлен в соответствующей таблице ('Студент', 'Группа', 'Курс')

Если мной правильно был понят смысл Вашего задания

Ошибочка с пониманием вышла таки... :(
2 - убираем, Lection понимаем как 4, т.е. добавить туда ссылку на 'O' и учитываем проверки
...
Рейтинг: 0 / 0
Связь с несколькими уровнями в иерархии
    #34411914
Фотография зоранее благодарень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaryCatОшибочка с пониманием вышла таки...

если следовать ТЗ - нет смысла делать (3) - нет такой сущности
...
Рейтинг: 0 / 0
Связь с несколькими уровнями в иерархии
    #34412044
Senja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зоранее благодарень
1. Попробуйте представить запрос, выдающий список курсов для некоторой группы. Его придется формулировать как "курс, на который записаны все студенты данной группы и больше никого" - очень неоптимальный запрос.
2. В группу пришел новый студент. Он должен автоматически добавляться во все курсы данной группы. Придется писать триггер, а в нем тот самый запрос, который пунктом 1. Не очень хорошо, фактически это денормализация.
3. Посещаемость я учитываю именно так как Вы и предложили.

MaryCat
Спасибо, интересный вариант, я до него не додумался. Но тоже неочевидно, что он лучше предложенных мной.

Вобщем-то эта задача похожа на "физиков и юриков" но немного по-другому.


А все-таки по поводу предложенных мной вариантов есть соображения?
...
Рейтинг: 0 / 0
Связь с несколькими уровнями в иерархии
    #34412186
Фотография зоранее благодарень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senja зоранее благодарень

RE: 1

1 то как вы формулируете запросы достойно всеческого удивления попробуйте сами представить такой запрос - откуда и зачем предикат "и" я бы еще понял формулировку " все студенты <определенной> группы но больше никто"

2 из вашего условия в ТЗ на картинке следует, что группа может входить только в один курс

RE: 2

1 если в группу зачислен новый студент он включается в курс обучения по которому проходит группа в которую его зачислили. Курс-<Группа-<Студент... Не знаю, что вы знаете о денормализации и при чем тут триггеры

RE: 3

1 уже не плохо...
...
Рейтинг: 0 / 0
Связь с несколькими уровнями в иерархии
    #34412214
Senja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По пункту 2 я написал бред :)
Имелось в виду, что он должен быть записан на все лекции , которые слушает его группа. А группа разумеется входит только в один курс.
...
Рейтинг: 0 / 0
Связь с несколькими уровнями в иерархии
    #34412242
Senja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, может быть это не совсем понятно, но у меня курс - это не набор занятий ("Квантовая механика" или "Пение"), а совокупность нскольких групп, например первый курс, второй и т.д.
...
Рейтинг: 0 / 0
Связь с несколькими уровнями в иерархии
    #34412331
Фотография зоранее благодарень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SenjaДа, может быть это не совсем понятно, но у меня курс - это не набор занятий ("Квантовая механика" или "Пение"), а совокупность нскольких групп, например первый курс, второй и т.д.

нужно тщательнее разобрать предметку - иначе просто потратите время впустую.

может ли лекция быть проведена для студентов из разных групп а если нет, то почему? (у вас определено что нет - почему?)
...
Рейтинг: 0 / 0
Связь с несколькими уровнями в иерархии
    #34412550
Senja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На лекцияю приходит либо одна группа, либо курс целиком, либо один человек. Так хочет заказчик. Логика такова, что група - это и есть та часть курса, которую может обучить один преподаватель. Таких случаев, чтобы на одни лекции деление было по одному, а на другие - по другому нет.
...
Рейтинг: 0 / 0
Связь с несколькими уровнями в иерархии
    #34412599
Фотография зоранее благодарень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SenjaНа лекцияю приходит либо одна группа, либо курс целиком, либо один человек. Так хочет заказчик. Логика такова, что група - это и есть та часть курса, которую может обучить один преподаватель. Таких случаев, чтобы на одни лекции деление было по одному, а на другие - по другому нет.

поскольку посещаемость нужно указывать для каждого - лучше не делить на разные сущности а сплитить посещения лекций по меньшему целому - на студентов
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Связь с несколькими уровнями в иерархии
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]