3章のメモ。
関係データモデル
前回の三つのデータモデルの中にも出てたね。
論理データモデルの一つに、関係データモデルがある。
|---------|---------|
| hoge | fuga |
|---------|---------|
| 1 | 2 |
| 2 | 2 |
| 3 | 4 |
|---------|---------|
みたいなやつかはぁはぁ(手動で作った)
ただ、表ではないみたいで、
- 全く同じ内容の行は作れない。
|---------|---------|
| hoge | fuga |
|---------|---------|
| 1 | 2 |
| 1 | 2 |
|---------|---------|
こんなのはだめ。あと明確には決まってないけど主キーが左にくることが多いらしい。
用語等
候補キー
主キーは前回ので解説したの。
候補キーは主キーの候補になる極小の(重要らしい)属性や属性の組をさす。
下に線が引いてあったり、波線でかこってあったりする。
代理キー
主キーにならなかった候補キーのことをさす。
非キー属性
候補キーではないやつ。
スーパーキー
候補キーから極小の条件を引いた感じのやつ。
関係スキーマ
うんち(id, 名前, 形, サイズ, 匂い, 色…)
みたいなやつ。
関数従属性
基本情報の難所らしい。専門学校時代に先生がそんなこと言ってた。これが理解できるかどうかでウンタラカンタラ。
これについては説明をみるよりもいくつか例をみてこういうことかなるほどねってする方がわかりやすい気がする。
しかし、例もまたケースによるけどなぁってなったりするのであれ。
例えば、
うんち(id, 名前, 形, サイズ, 匂い, 色)
とあるとすると、idがわかると形やサイズ、匂いまでわかるよねってことなんだけど、うんこはたとえ悪いな(二つの意味で)
ここでのみの設定だけど、うんこは匂いで色がわかるんだとしたら
うんち(id, 名前, 形, サイズ, (匂い, 色))
みたいになり、つまり色は匂いがわかる時点で判明するから別にidに従属してないよねってなって、
うんち(id, 名前, 形, サイズ, 匂いid)
うんちの匂い_色(匂いid, 色)
みたいに分けることができる。これでいいのかな。
これはもしかしたら推移的関数従属性かも知れない。
例えるならこうかな。
うんこちんこ(うんこ名前, うんこ形, うんこ匂い, ちんこ名前, ちんこ形, ちんこ匂い)
スキーマの中にスキーマが入ってるみたいな感じ。全く別のスキーマに分けれるじゃん。
お前これでよく基本通ったな?
あときったな。人生洗った?????????
正規化
関係の独立化と表現されててなるほどとなった。
非正規形
繰り返しがあったり完全関数従属性がない。
第一正規形
繰り返しがない。
第二正規形
第一 + 非キー属性全てに完全関数従属性がある。
第三正規形
第二 + 非キー属性と候補キーの間に推移的関数従属性がない。
第四正規形以降はここら辺がわかりやすかったかな。
第四正規化・第五正規化・ボイスコッド正規化がややこしいので、備忘録として自分なりにまとめてみた(データベーススペシャリストの勉強) | メサイア・ワークス
第四正規形
第三 + 多値従属性がない。
あまりいい例えが思いつかないので上記リンクを見た方が早いかも。
わかりにくい用語は以下にまとめる。
完全関数従属性
印象としては、{A,B}→Cが成り立ち、かつ、A→CもB→Cも成り立っているのを「Cは{A,B}に完全関数従属している」と表す方が自然に思われるかもしれません。しかし実際は、{A,B}→Cが成り立ち、かつ、A→CもB→Cもどちらも成り立たないのを「Cは{A,B}に完全関数従属している」といいます。
推移的関数従属性
先ほど盛大に間違えたやつ。
ここでのみの設定だけど、うんこは匂いで色がわかるんだとしたら
うんち(id, 名前, 形, サイズ, (匂い, 色))
みたいになり、つまり色は匂いがわかる時点で判明するから別にidに従属してないよねってなって、
うんち(id, 名前, 形, サイズ, 匂いid)
うんちの匂い_色(匂いid, 色)
これのこと。これが残ってると3は名乗れない。
こんなもんか。
>> Home