Связи между таблицами. SQL Server
Подскажите, правильно ли я начинаю выстраивать БД:
пока есть 3 таблицы: dbo.Exam, dbo.Offset, dbo.Session.
У экзамена и зачета схожая структура: id name date.
Структура dbo.Session: id fromDate toDate.
Сессия одна, но у нее может быть несколько зачетов и экзаменов.
Как я предполагаю, мне нужно сделать связь Многие ко многим.
Поэтому делаю следующее:
create table dbo.StudentSession
(
SessionId int foreign key references dbo.Session(Id),
ExamId int foreign key references dbo.Exam(Id),
OffsetId int foreign key references dbo.Offset(Id),
constraint id primary key(SessionId, ExamId, OffsetId)
)
P.s как я потом могу ссылаться на id dbo.StudentSession из других таблиц?
Ответы (1 шт):
Если вы утверждаете, что одна сессия может содержать несколько экзаменов и зачетов , то это две связи один ко многим.
Рациональнее создать таблицы SessionExam SessionOffset , состоящие соответственно из sessionId, examId и sessionId, offsetId. Это позволит не плодить записи в будущей таблице StudentSession. Соответственно потом из этих таблиц по внешнему ключу sessionId можно будет получить всю необходимую информацию об экзаменах и зачётах по id сессии.