磯野 ー !そんなことより 正規化しようぜー!
DESCRIPTION
磯野 ー !そんなことより 正規化しようぜー!. Alan Smithee. 自己紹介. Standard Query Language. データベース. データベースを どのように 作り上げるかということが重要. どのようにして作ろうか?. どんなデータが ある だろう? そのデータはどのような 関係性があるだろう?. 今回は概念のお話. 概念 をミスすると 大変なことになる!. 正規系. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/1.jpg)
磯野ー!そんなことより正規化しようぜー!Alan Smithee
![Page 2: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/2.jpg)
自己紹介
![Page 3: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/3.jpg)
StandardQuery
Language
![Page 4: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/4.jpg)
データベース
![Page 5: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/5.jpg)
データベースをどのように作り上げるかということが重要
![Page 6: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/6.jpg)
どのようにして作ろうか?
![Page 7: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/7.jpg)
どんなデータがあるだろう?そのデータはどのような関係性があるだろう?
![Page 8: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/8.jpg)
今回は概念のお話
![Page 9: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/9.jpg)
概念をミスすると大変なことになる!
![Page 10: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/10.jpg)
正規系
![Page 11: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/11.jpg)
非正規系第一正規系 (1NF)第二正規系 (2NF)第三正規系 (3NF)ボイス・コッド正規系 (BCNF)第四正規系 (4NF)第五正規系 (5NF)
![Page 12: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/12.jpg)
非正規系第一正規系 (1NF)第二正規系 (2NF)第三正規系 (3NF)ボイス・コッド正規系 (BCNF)第四正規系 (4NF)第五正規系 (5NF)
![Page 13: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/13.jpg)
なぜ正規系が大事?
![Page 14: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/14.jpg)
3つの問題が出てくる
![Page 15: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/15.jpg)
事前登録不能
![Page 16: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/16.jpg)
重複更新
![Page 17: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/17.jpg)
矛盾を防ぐ
![Page 18: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/18.jpg)
非正規系第一正規系 (1NF)第二正規系 (2NF)第三正規系 (3NF)ボイス・コッド正規系 (BCNF)第四正規系 (4NF)第五正規系 (5NF)
![Page 19: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/19.jpg)
関係喪失
![Page 20: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/20.jpg)
1.テーブルにキーを設定2.テーブルでの繰り返しを別のテーブルへ分離
3.導出項目の削除
![Page 21: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/21.jpg)
非正規系第一正規系 (1NF)第二正規系 (2NF)第三正規系 (3NF)ボイス・コッド正規系 (BCNF)第四正規系 (4NF)第五正規系 (5NF)
![Page 22: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/22.jpg)
部分関数従属性
![Page 23: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/23.jpg)
主キーの一部が決まれば非主キーのある値が一意的に決定する
![Page 24: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/24.jpg)
関係喪失
![Page 25: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/25.jpg)
非正規系第一正規系 (1NF)第二正規系 (2NF)第三正規系 (3NF)ボイス・コッド正規系 (BCNF)第四正規系 (4NF)第五正規系 (5NF)
![Page 26: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/26.jpg)
推移関数従属性
![Page 27: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/27.jpg)
非キー同士の関数従属性
![Page 28: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/28.jpg)
関係喪失
![Page 29: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/29.jpg)
非正規系第一正規系 (1NF)第二正規系 (2NF)第三正規系 (3NF)ボイス・コッド正規系 (BCNF)第四正規系 (4NF)第五正規系 (5NF)
![Page 30: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/30.jpg)
ボイスコッド正規系
![Page 31: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/31.jpg)
非キーからキーに関数従属性があるか否か
![Page 32: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/32.jpg)
間違った分解を行うと結合従属性を失う
![Page 33: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/33.jpg)
• 学生が科目を履修しないと、講師が科目を担当するという情報を登録できない• 講師が担当する科目を変更したとき、重複更新が発生する• 学生の履修情報を削除すると、講師が科目を担当する情報も削除される
![Page 34: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/34.jpg)
![Page 35: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/35.jpg)
!?
![Page 36: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/36.jpg)
![Page 37: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/37.jpg)
![Page 38: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/38.jpg)
![Page 39: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/39.jpg)
元のテーブルに会った関数従属性を失う
![Page 40: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/40.jpg)
ビジネスルールによるテーブル構造の問題
![Page 41: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/41.jpg)
データベース側での設定よりもアプリケーションとして実装したほうが保守性高い
![Page 42: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/42.jpg)
なぜ第三正規系ぐらいでokなの??
![Page 43: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/43.jpg)
テーブル構造からビジネスルールを排除すると、第 3正規化までで正規化が完了する。
![Page 44: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/44.jpg)
![Page 45: 磯野 ー !そんなことより 正規化しようぜー!](https://reader033.vdocuments.pub/reader033/viewer/2022061615/56815b3a550346895dc9134f/html5/thumbnails/45.jpg)
参考資料• @ITデータベースエンジニアへの道 第3回 素早く正規系を見抜く実践テクニック 下平浩由http://www.atmarkit.co.jp/fdb/rensai/db_enginer03/db_enginer03_1.html