45
磯磯磯 磯磯磯磯磯磯磯 磯磯磯磯磯磯磯磯Alan Smithee

磯野 ー !そんなことより 正規化しようぜー!

  • Upload
    clare

  • View
    52

  • Download
    0

Embed Size (px)

DESCRIPTION

磯野 ー !そんなことより 正規化しようぜー!. Alan Smithee. 自己紹介. Standard Query Language. データベース. データベースを どのように 作り上げるかということが重要. どのようにして作ろうか?. どんなデータが ある だろう? そのデータはどのような 関係性があるだろう?. 今回は概念のお話. 概念 をミスすると 大変なことになる!. 正規系. - PowerPoint PPT Presentation

Citation preview

Page 1: 磯野 ー !そんなことより 正規化しようぜー!

磯野ー!そんなことより正規化しようぜー!Alan Smithee

Page 2: 磯野 ー !そんなことより 正規化しようぜー!

自己紹介

Page 3: 磯野 ー !そんなことより 正規化しようぜー!

StandardQuery

Language

Page 4: 磯野 ー !そんなことより 正規化しようぜー!

データベース

Page 5: 磯野 ー !そんなことより 正規化しようぜー!

データベースをどのように作り上げるかということが重要

Page 6: 磯野 ー !そんなことより 正規化しようぜー!

どのようにして作ろうか?

Page 7: 磯野 ー !そんなことより 正規化しようぜー!

どんなデータがあるだろう?そのデータはどのような関係性があるだろう?

Page 8: 磯野 ー !そんなことより 正規化しようぜー!

今回は概念のお話

Page 9: 磯野 ー !そんなことより 正規化しようぜー!

概念をミスすると大変なことになる!

Page 10: 磯野 ー !そんなことより 正規化しようぜー!

正規系

Page 11: 磯野 ー !そんなことより 正規化しようぜー!

非正規系第一正規系 (1NF)第二正規系 (2NF)第三正規系 (3NF)ボイス・コッド正規系 (BCNF)第四正規系 (4NF)第五正規系 (5NF)

Page 12: 磯野 ー !そんなことより 正規化しようぜー!

非正規系第一正規系 (1NF)第二正規系 (2NF)第三正規系 (3NF)ボイス・コッド正規系 (BCNF)第四正規系 (4NF)第五正規系 (5NF)

Page 13: 磯野 ー !そんなことより 正規化しようぜー!

なぜ正規系が大事?

Page 14: 磯野 ー !そんなことより 正規化しようぜー!

3つの問題が出てくる

Page 15: 磯野 ー !そんなことより 正規化しようぜー!

事前登録不能

Page 16: 磯野 ー !そんなことより 正規化しようぜー!

重複更新

Page 17: 磯野 ー !そんなことより 正規化しようぜー!

矛盾を防ぐ

Page 18: 磯野 ー !そんなことより 正規化しようぜー!

非正規系第一正規系 (1NF)第二正規系 (2NF)第三正規系 (3NF)ボイス・コッド正規系 (BCNF)第四正規系 (4NF)第五正規系 (5NF)

Page 19: 磯野 ー !そんなことより 正規化しようぜー!

関係喪失

Page 20: 磯野 ー !そんなことより 正規化しようぜー!

1.テーブルにキーを設定2.テーブルでの繰り返しを別のテーブルへ分離

3.導出項目の削除

Page 21: 磯野 ー !そんなことより 正規化しようぜー!

非正規系第一正規系 (1NF)第二正規系 (2NF)第三正規系 (3NF)ボイス・コッド正規系 (BCNF)第四正規系 (4NF)第五正規系 (5NF)

Page 22: 磯野 ー !そんなことより 正規化しようぜー!

部分関数従属性

Page 23: 磯野 ー !そんなことより 正規化しようぜー!

主キーの一部が決まれば非主キーのある値が一意的に決定する

Page 24: 磯野 ー !そんなことより 正規化しようぜー!

関係喪失

Page 25: 磯野 ー !そんなことより 正規化しようぜー!

非正規系第一正規系 (1NF)第二正規系 (2NF)第三正規系 (3NF)ボイス・コッド正規系 (BCNF)第四正規系 (4NF)第五正規系 (5NF)

Page 26: 磯野 ー !そんなことより 正規化しようぜー!

推移関数従属性

Page 27: 磯野 ー !そんなことより 正規化しようぜー!

非キー同士の関数従属性

Page 28: 磯野 ー !そんなことより 正規化しようぜー!

関係喪失

Page 29: 磯野 ー !そんなことより 正規化しようぜー!

非正規系第一正規系 (1NF)第二正規系 (2NF)第三正規系 (3NF)ボイス・コッド正規系 (BCNF)第四正規系 (4NF)第五正規系 (5NF)

Page 30: 磯野 ー !そんなことより 正規化しようぜー!

ボイスコッド正規系

Page 31: 磯野 ー !そんなことより 正規化しようぜー!

非キーからキーに関数従属性があるか否か

Page 32: 磯野 ー !そんなことより 正規化しようぜー!

間違った分解を行うと結合従属性を失う

Page 33: 磯野 ー !そんなことより 正規化しようぜー!

• 学生が科目を履修しないと、講師が科目を担当するという情報を登録できない• 講師が担当する科目を変更したとき、重複更新が発生する• 学生の履修情報を削除すると、講師が科目を担当する情報も削除される

Page 34: 磯野 ー !そんなことより 正規化しようぜー!
Page 35: 磯野 ー !そんなことより 正規化しようぜー!

!?

Page 36: 磯野 ー !そんなことより 正規化しようぜー!
Page 37: 磯野 ー !そんなことより 正規化しようぜー!
Page 38: 磯野 ー !そんなことより 正規化しようぜー!
Page 39: 磯野 ー !そんなことより 正規化しようぜー!

元のテーブルに会った関数従属性を失う

Page 40: 磯野 ー !そんなことより 正規化しようぜー!

ビジネスルールによるテーブル構造の問題

Page 41: 磯野 ー !そんなことより 正規化しようぜー!

データベース側での設定よりもアプリケーションとして実装したほうが保守性高い

Page 42: 磯野 ー !そんなことより 正規化しようぜー!

なぜ第三正規系ぐらいでokなの??

Page 43: 磯野 ー !そんなことより 正規化しようぜー!

テーブル構造からビジネスルールを排除すると、第 3正規化までで正規化が完了する。

Page 44: 磯野 ー !そんなことより 正規化しようぜー!
Page 45: 磯野 ー !そんなことより 正規化しようぜー!

参考資料• @ITデータベースエンジニアへの道 第3回 素早く正規系を見抜く実践テクニック 下平浩由http://www.atmarkit.co.jp/fdb/rensai/db_enginer03/db_enginer03_1.html