第3正規形

PostgreSQL データベースの作成

Darryl Reeves

Industry Assistant Professor, New York University

第3正規形の定義

要件

  • 2NF を満たす
  • 「推移的従属」がない
    • すべての非キー列は 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
  • course name -> teacher
  • teacher -> room number
  • course name -> room number
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
  • course name -> teacher
  • teacher -> room number
  • course name -> room number
     (推移的従属)
    
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...