Третья нормальная форма

Создание баз данных PostgreSQL

Darryl Reeves

Industry Assistant Professor, New York University

Определение третьей нормальной формы

Требования

  • Выполнена 2НФ
  • Отсутствуют «транзитивные зависимости»
    • То есть все неключевые столбцы зависят только от PRIMARY KEY
Создание баз данных PostgreSQL

Транзитивные зависимости

  • Участвуют 3 столбца таблицы
  • Столбцы X, Y, Z
  • столбец X -> столбец Y
  • столбец Y -> столбец Z
  • столбец X -> столбец Z
Создание баз данных PostgreSQL

Пример: назначение аудиторий

id name teacher num
157 Algebra Maggie Winters 244
162 Physics Maggie Winters 244
321 Spanish I Jeremy Smith 309
497 History I Sarah Williams 313
613 Spanish II Jeremy Smith 309
  • название курса -> преподаватель
  • преподаватель -> номер аудитории
  • название курса -> номер аудитории
Создание баз данных PostgreSQL

Пример: назначение аудиторий

id name teacher num
157 Algebra Maggie Winters 244
162 Physics Maggie Winters 244
321 Spanish I Jeremy Smith 309
497 History I Sarah Williams 313
613 Spanish II Jeremy Smith 309
  • название курса -> преподаватель
  • преподаватель -> номер аудитории
  • название курса -> номер аудитории
           (транзитивная зависимость)
Создание баз данных PostgreSQL

Пример: назначение аудиторий

id name teacher num
157 Algebra Maggie Winters 244
162 Physics Maggie Winters 244
321 Spanish I Jeremy Smith 309
497 History I Sarah Williams 313
613 Spanish II Jeremy Smith 309
  1. Обновление номера аудитории
Создание баз данных PostgreSQL

Пример: назначение аудиторий

id name teacher num
157 Algebra Maggie Winters 244
162 Physics Maggie Winters 244
321 Spanish I Jeremy Smith 309
497 History I Sarah Williams 313
613 Spanish II Jeremy Smith 309
  1. Обновление номера аудитории
  2. Добавление новых преподавателей
Создание баз данных PostgreSQL

Пример: назначение аудиторий

id name teacher num
157 Algebra Maggie Winters 244
162 Physics Maggie Winters 244
321 Spanish I Jeremy Smith 309
497 History I Sarah Williams 313
613 Spanish II Jeremy Smith 309
  1. Обновление номера аудитории
  2. Добавление новых преподавателей
  3. Удаление всех курсов преподавателя
Создание баз данных PostgreSQL

Пример: назначение аудиторий

Как изменить структуру данных, чтобы устранить эти потенциальные проблемы?

Создание баз данных PostgreSQL

Пример: назначение аудиторий

Таблица teacher

id name room_num
1 Maggie Winters 244
2 Jeremy Smith 309
3 Sarah Williams 313
Создание баз данных PostgreSQL

Пример: назначение аудиторий

Таблица teacher

id name room_num
1 Maggie Winters 244
2 Jeremy Smith 309
3 Sarah Williams 313

Таблица course_assignment

id name teacher_id
157 Algebra 1
162 Physics 1
321 Spanish I 2
497 History I 3
613 Spanish II 2
Создание баз данных PostgreSQL

Давайте потренируемся!

Создание баз данных PostgreSQL

Preparing Video For Download...