キー
スーパーキー:行(タプル)を一意に識別するための列(属性)の集合
候補キー:スーパーキーのうち、必要最小限の列の組み合わせ
主キー:候補キーのうち、意味的に最もふさわしいもの
主キー制約
- 一意性制約:主キーは必ず一意である(主キーが重複する行は存在しない)
- 非ナル制約:主キーに含まれる列はNULLをとらない
代理キー:候補キーのうち、主キーに選ばれなかったもの
外部キー:別の関係表の主キーを持つ列、他の表を参照する
参照制約
- 外部キーの実現値が参照先の表に必ず存在する
関係データベースの正規化
第1正規形
繰り返し属性が存在しない
第1正規形ではない表
社員番号 | 商品 | 販売数 | 商品 | 販売数 |
---|---|---|---|---|
01 | りんご | 3 | みかん | 1 |
第1正規形の表
社員番号 | 商品 | 販売数 |
---|---|---|
01 | りんご | 3 |
01 | みかん | 1 |
第2正規形
候補キーの一部に従属する部分関数従属が存在しない
部分関数従属を独立させるように表を分割する
第2正規形ではない表(主キーは学生番号と図書番号の複合キー)
学生番号 | 図書番号 | 図書名 | 貸出日 |
---|---|---|---|
01 | 11 | 統計学 | 2024/9/30 |
01 | 12 | 心理学 | 2024/10/1 |
図書名は図書番号のみに従属するので、これを分割する。
第2正規形
学生番号 | 図書番号 | 貸出日 |
---|---|---|
01 | 11 | 2024/9/30 |
01 | 12 | 2024/10/1 |
図書番号 | 図書名 |
---|---|
11 | 統計学 |
12 | 心理学 |
第3正規形
候補キーから始まる推移的関数従属が存在しない、言い換えると非キー同士の関数従属が存在しない
非キー同士の関数従属を独立させるように表を分割する
コメントを残す