Дизайн базы данных - это уважает 3-й НФ? - PullRequest
1 голос
/ 10 июня 2010

У меня есть следующие отношения (таблицы) в реляционной модели

Person
  person_id, first_name, last_name, address

Student
  person_id, matr_nr

Teacher
  person_id, salary

Lecture
  lecture_id, lect_name, lect_description

Attendees
  lecture_id, person_id, date

Меня интересует функциональная зависимость ученика и учителя.

Соответствуют ли эти таблицы 3-й нормальной форме? Какие должны быть первичные ключи этих таблиц?

Ответы [ 4 ]

3 голосов
/ 10 июня 2010

Используя такие понятия, как «наследование таблиц» (свободно) и таблицы объединения, я бы настроил это следующим образом:

 Person
  person_id, first_name, last_name, address

Student
  student_id, person_id, matr_nr

Teacher
  teacher_id, person_id, salary

Lecture
  lecture_id, teacher_id, lect_name, lect_description, date

Attendees
  lecture_id, student_id

Где таблицы «Ученик» и «Учитель» «наследуют» от таблицы Person и Attendees.Таблица соединения между Lecture и Student (учитель_id используется в таблице Lecture для указания того, кто преподает класс. И согласно рекомендациям таблицы Join таблица должна фактически называться Lecture_Student или аналогичной)

Альтернативный дизайн: (допускается для нескольких учителей в классе)

Person
person_id, first_name, last_name, address

Student
student_id, person_id, matr_nr

Teacher
teacher_id, person_id, salary

Lecture
lecture_id, lect_name, lect_description, date

Lecture_Student
lecture_id, student_id

Lecture_Teacher
lecture_id, teacher_id
0 голосов
/ 11 июня 2010

Это точно не 3NF. Простой, нормализованный дизайн для вышеуказанной проблемы (при условии, что person_id однозначно идентифицирует как преподавателей, так и студентов и что на лекцию приходится один преподаватель) будет выглядеть следующим образом:

Person
  person_id (PK), first_name, last_name, address, Student_matr_nr, Teacher_salary

Lecture
  lecture_id (PK), teacher_person_id (FK), lect_name, lect_description

Attendees
  lecture_id (PK), student_person_id (PK), date

Отношения, которые имеют одинаковые ключи друг от друга , являются теми же отношениями .

0 голосов
/ 10 июня 2010

«Соответствуют ли эти таблицы 3-й нормальной форме?»

Этот вопрос будет отвечать только в том случае, если вы сообщите нам, что это за ключи и каков полный набор функциональных зависимостей.

Безчто любой ответ, который кто-либо дает, может быть только результатом ненадлежащего количества догадок со стороны ответчика, и у вас нет гарантии, что эти догадки соответствуют вашей деловой реальности.

При этом вы можете посмотретьв участников.Скорее всего, там что-то гнилое.

(Эй, ты заявлял, что не хочешь быть обманутым).

0 голосов
/ 10 июня 2010

Я думаю, что это нормализовано 3NF (ключ, весь ключ и ничего, кроме ключа), насколько нам известно, но это может не решить проблемы вашей проблемной области.

Ваши первичные ключи - это столбцы _id, за исключением участников. где это были бы оба столбца _id - но это не позволило бы посещать одну и ту же лекцию в разные даты (или технически это было бы другим lecture_id?) В построенной мной системе планирования классов у нас были разделы в классе, но проблемная область ибо это может быть намного больше, чем то, что вы дали.

Проблема со студентами и учителями уже была поднята - оба будут посетителями, это все, что вы будете знать - все учителя могут преподавать, или только некоторые из них могут преподавать, или они могут быть сверстниками (семинар, скажем, )

Я думаю, что это скорее проблема моделирования домена, а затем нормализация ...

...