#author("2023-07-25T04:55:47+09:00;2012-05-07T00:33:22+09:00","default:ogiwiki","ogiwiki") #author("2023-07-25T04:56:34+09:00;2012-05-07T00:33:22+09:00","default:ogiwiki","ogiwiki") [[授業資料]] **表の正規化 [#zef6f800] -データベース設計の基本 -同じ情報は一カ所に集約する(1 fact in 1 place) ***あまりまともでない表 [#sc148879] ,書名,著者名,著者性別,著者生年,出版年,出版社,出版社所在地 ,たけくらべ,樋口一葉,女,1872,2010,B社,東京 ,こころ,夏目漱石,男,1867,2005,C社,東京 ,三四郎 , それから,夏目漱石,男,1867,2010,A社,大阪 ,舞姫,森鴎外,男,1862,2010,B社,東京 ***一つのセルに複数の情報を入れない(第一正規形) [#hd0241c2] ,書名,著者名,著者性別,著者生年,出版年,出版社,出版社所在地 ,たけくらべ,樋口一葉,女,1872,2010,B社,東京 ,こころ,夏目漱石,男,1867,2005,C社,東京 ,三四郎,夏目漱石,男,1867,2010,A社,大阪 ,それから,夏目漱石,男,1867,2010,A社,大阪 ,舞姫,森鴎外,男,1862,2010,B社,東京 ***キーにできるものとそれに従属する情報をひとまとめにして表を分割する(第三正規形) [#l50d83ef] --書名,著者名,出版社名がそれぞれ主キー -書名,著者名,出版社名がそれぞれ主キー (書籍テーブル) ,書名,著者名,出版年,出版社 ,たけくらべ,樋口一葉,2010,B社 ,こころ,夏目漱石,2005,C社 ,三四郎,夏目漱石,2010,A社 ,それから,夏目漱石,2010,A社 ,舞姫,森鴎外,2010,B社 (著者テーブル) ,著者名,著者性別,著者生年 ,樋口一葉,女,1872 ,夏目漱石,男,1867 ,森鴎外,男,1862 (出版社テーブル) ,出版社,出版社所在地 ,A社,大阪 ,B社,東京 ,C社,東京 ***IDを主キーに [#n386df97] -(同姓同名など)ユニークにならない場合もあるので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社,東京 ***正規化のメリット [#d9002785] -正規化することでデータのメンテナンスが楽になる --一箇所の情報を直せば全部に反映される --ただし、正規化,ID化もあまりやり過ぎると使いにくくなり、検索速度が落ちる場合がある。 --現実には、書籍のデータベースは共著なども考慮する必要があるのでこんなに単純にはならない。