3-тя нормальна форма

Створення баз даних PostgreSQL

Darryl Reeves

Industry Assistant Professor, New York University

Визначення 3-ї нормальної форми

Вимоги

  • Виконано 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...