授業資料
表の正規化
- 同じ情報は一カ所に集約する(1 fact in 1 place)
あまりまともでない表
書名 | 著者名 | 著者性別 | 著者生年 | 出版年 | 出版社 | 出版社所在地 |
たけくらべ | 樋口一葉 | 女 | 1872 | 2010 | B社 | 東京 |
こころ | 夏目漱石 | 男 | 1867 | 2005 | C社 | 東京 |
三四郎 , それから | 夏目漱石 | 男 | 1867 | 2010 | A社 | 大阪 |
舞姫 | 森鴎外 | 男 | 1862 | 2010 | B社 | 東京 |
一つのセルに複数の情報を入れない(第一正規形)
書名 | 著者名 | 著者性別 | 著者生年 | 出版年 | 出版社 | 出版社所在地 |
たけくらべ | 樋口一葉 | 女 | 1872 | 2010 | B社 | 東京 |
こころ | 夏目漱石 | 男 | 1867 | 2005 | C社 | 東京 |
三四郎 | 夏目漱石 | 男 | 1867 | 2010 | A社 | 大阪 |
それから | 夏目漱石 | 男 | 1867 | 2010 | A社 | 大阪 |
舞姫 | 森鴎外 | 男 | 1862 | 2010 | B社 | 東京 |
キーにできるものとそれに従属する情報をひとまとめにして表を分割する(第三正規形)
書名 | 著者名 | 出版年 | 出版社 |
たけくらべ | 樋口一葉 | 2010 | B社 |
こころ | 夏目漱石 | 2005 | C社 |
三四郎 | 夏目漱石 | 2010 | A社 |
それから | 夏目漱石 | 2010 | A社 |
舞姫 | 森鴎外 | 2010 | B社 |
著者名 | 著者性別 | 著者生年 |
樋口一葉 | 女 | 1872 |
夏目漱石 | 男 | 1867 |
森鴎外 | 男 | 1862 |
- これでは(同姓同名など)ユニークにならない場合もあるのでIDを使う
書籍ID | 書名 | 出版年 | 著者ID | 出版社ID |
1 | たけくらべ | 2010 | 1 | 2 |
2 | こころ | 2005 | 2 | 1 |
3 | 三四郎 | 2010 | 2 | 1 |
4 | それから | 2010 | 2 | 1 |
5 | 舞姫 | 2010 | 3 | 2 |
著者ID | 著者名 | 著者性別 | 著者生年 |
1 | 樋口一葉 | 女 | 1872 |
2 | 夏目漱石 | 男 | 1867 |
3 | 森鴎外 | 男 | 1862 |
出版社ID | 出版社名 | 出版社所在地 |
1 | A社 | 大阪 |
2 | B社 | 東京 |
3 | C社 | 東京 |
- 正規化することでデータのメンテナンスが楽になり速度も出る
- ただし、正規化,ID化もあまりやり過ぎると使いにくくなり、かえって速度も落ちる場合がある。
- 現実には、書籍のデータベースは共著なども考慮する必要があるのでこんなに単純にはならない。