3rd Normal Form

Creare database PostgreSQL

Darryl Reeves

Industry Assistant Professor, New York University

Definire la Terza Forma Normale

Requisiti

  • 2NF soddisfatta
  • Nessuna "dipendenza transitiva"
    • cioè, tutte le colonne non chiave dipendono solo dalla PRIMARY KEY
Creare database PostgreSQL

Dipendenze transitive

  • Coinvolge 3 colonne nella tabella
  • Colonne X, Y, Z
  • colonna X -> colonna Y
  • colonna Y -> colonna Z
  • colonna X -> colonna Z
Creare database PostgreSQL

Esempio: assegnazioni delle aule ai corsi

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
  • course name -> teacher
  • teacher -> room number
  • course name -> room number
Creare database PostgreSQL

Esempio: assegnazioni delle aule ai corsi

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
  • course name -> teacher
  • teacher -> room number
  • course name -> room number
           (dipendenza transitiva)
Creare database PostgreSQL

Esempio: assegnazioni delle aule ai corsi

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. Aggiornare il numero dell'aula
Creare database PostgreSQL

Esempio: assegnazioni delle aule ai corsi

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. Aggiornare il numero dell'aula
  2. Aggiungere nuovi docenti
Creare database PostgreSQL

Esempio: assegnazioni delle aule ai corsi

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. Aggiornare il numero dell'aula
  2. Aggiungere nuovi docenti
  3. Eliminare tutti i corsi di un docente
Creare database PostgreSQL

Esempio: assegnazioni delle aule ai corsi

Come cambiare la struttura dei dati per ridurre questi potenziali problemi?

Creare database PostgreSQL

Esempio: assegnazioni delle aule ai corsi

Tabella teacher

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

Esempio: assegnazioni delle aule ai corsi

Tabella teacher

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

Tabella course_assignment

id name teacher_id
157 Algebra 1
162 Physics 1
321 Spanish I 2
497 History I 3
613 Spanish II 2
Creare database PostgreSQL

Esercitiamoci!

Creare database PostgreSQL

Preparing Video For Download...