アットウィキロゴ

論理設計

論理設計

DBの論理設計について書き留めておきます。

正規化理論

  • 非正規形
このままだとテーブルに実装できない形です。
ID 年月日 店名 住所 注文 価格
1 130716 鈴傳 東京都新宿区四谷1-10鈴伝ビル ビール大瓶 500
煮込み 350
満寿美 380
なす 350
2 130626 富士屋本店 東京都渋谷区桜丘町2-3富士商事ビル 瓶ビール 450
煮込み 400
3 130626 細雪 東京都渋谷区道玄坂2-8 生ビール 500
コハダ 400
ホッピーセット 550
肉豆腐 350

  • 第1正規形
テーブルに実装できる形ですが、繰り返し項目があります。
ID 年月日 店名 住所 注文 価格
1 130716 鈴傳 東京都新宿区四谷1-10鈴伝ビル ビール大瓶 500
1 130716 鈴傳 東京都新宿区四谷1-10鈴伝ビル 煮込み 350
1 130716 鈴傳 東京都新宿区四谷1-10鈴伝ビル 満寿美 380
1 130716 鈴傳 東京都新宿区四谷1-10鈴伝ビル なす 350
2 130626 富士屋本店 東京都渋谷区桜丘町2-3富士商事ビル 瓶ビール 450
2 130626 富士屋本店 東京都渋谷区桜丘町2-3富士商事ビル 煮込み 400
3 130626 細雪 東京都渋谷区道玄坂2-8 生ビール 500
3 130626 細雪 東京都渋谷区道玄坂2-8 コハダ 400
3 130626 細雪 東京都渋谷区道玄坂2-8 ホッピーセット 550
3 130626 細雪 東京都渋谷区道玄坂2-8 肉豆腐 350

  • 第2正規形
この値だけあればレコードを特定できる列(候補キー)は、この場合
{ID,注文}または{年月日,店名,住所,注文}です。
この値の一部が決定しただけで決まってしまう列(部分従属関数がある)を別テーブルに分けた形が第2正規形です。
この場合、{ID,注文}の一部、IDが決定したら{年月日,店名,住所}が決定するため、別テーブルにします。
※今回は、注文が同じ値であっても店によって別物ということでお願いします。
ID 注文 価格
1 ビール大瓶 500
1 煮込み 350
1 満寿美 380
1 なす 350
2 瓶ビール 450
2 煮込み 400
3 生ビール 500
3 コハダ 400
3 ホッピーセット 550
3 肉豆腐 350

ID 年月日 店名 住所
1 130716 鈴傳 東京都新宿区四谷1-10鈴伝ビル
2 130626 富士屋本店 東京都渋谷区桜丘町2-3富士商事ビル
3 130626 細雪 東京都渋谷区道玄坂2-8
最終更新:2013年07月25日 20:45