第三正規化(3NF)

建立 PostgreSQL 資料庫

Darryl Reeves

Industry Assistant Professor, New York University

定義第三正規化

必要條件

  • 滿足 2NF
  • 不存在「遞移相依」
    • 也就是:所有非鍵欄位只相依於 PRIMARY KEY
建立 PostgreSQL 資料庫

遞移相依(Transitive dependencies)

  • 牽涉資料表中的 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...