データベーススペシャリスト_正規化
- 正規化
データベースの表をムダや矛盾が生じないように分割、整理すること。
学生時代から何度もやってきたはずだが、ちゃんと覚えてはいない。
仕事でも触る機会は今までほぼなかった。NO SQLとかは触ったけど関係データベースじゃいのであんまり関係なかった。
SEとかだと顧客システムによってはデータ移行とかして再設計とかする機会あるんかなあ。
- 第1正規化
同一行内での繰り返しをなくす。
- 第2正規化
部分関数従属性をなくす。
部分関数従属とは、ある非キー属性が候補キーのー部に関数従属していることである。
- 第3正規化
推移関数従属性をなくす。
推移関数従属とは、テーブルの非キー属性Aが特定の非キー属性Bに関数従属していることである。
- 主キー
表の中で一つだけ設定する。
一意制約(重複が認められない)かつ非ヌル制約(NULLが認められない)を満たし、候補キーの中から最もふさわしいものが選ばれます。Idとか。
- 候補キー
表の中に複数存在する場合がある。
主キーの候補となるキーが候補キーである。
候補キーの条件は、タプル(行)を一意に識別できること、極小であること(スーパーキーの中で極小のもの)であり、NULLを許可する属性を持つ(もしくは含む)ものも許可する。
- スーパーキー
表の中に複数存在し、タプル(行)を一つに特定できる。
候補キーに様々な組み合わせで他の属性を付け足したものである。
(表の全ての属性もスーパーキー)
- 外部キー
他のエンティティの主キーを参照する属性である。
- 非キー属性
候補キーに該当しないものである。
- 参考URL
https://products.sint.co.jp/topsic/blog/database-normalization
https://www.seplus.jp/dokushuzemi/fe/fenavi/mastering_tech/normalization/