Я разрабатываю систему управления университетом. У меня есть 5 столов: студент, учитель, курсы, доступные_курсы и учебы.Дизайн базы данных. Многим многим. Каким должен быть Основной ключ?
Student:
student_id (PK)
Teacher:
teacher_id (PK)
Courses:
courses_id (PK)
Available_Courses:
available_courses_id
teacher_id
course_id
Courses_Taken:
courses_taken_id
student_id
courses_available_id
Что должно быть PK в доступных курсах и курсах_Также таблица?
Если я не делаю доступным primary_courses_id (в таблице Available_Courses) первичным ключом, тогда я не смогу подключить Courses_Table, и если я сделаю составной ключ из всех трех атрибутов в таблице Available_Courses, то один учитель может снова зарегистрироваться с тем же курсом и еще раз. Создание составного ключа из двух атрибутов, то есть teacher_id и course_id будет работать, но увеличит повторение в моей базе данных, поскольку они оба будут также находиться в таблице Courses_Taken для создания отношений.
То же самое с таблицей Courses_Taken, поскольку мне нужно использовать его ПК в таблице. Посещение (еще не сделано).
Так что же делать в такой ситуации?
Кажется, что available_courses содержит строки, где курс учит учитель. Можно было бы ожидать, что доступными курсами станут курсы, которые появляются в некоторой строке в этой таблице. Не важно, чтобы ваш вопрос определял ваши таблицы, вам просто нужно сказать нам, какие ограничения существуют. (CK, FD, FK). – philipxy