データベース勉強メモ
言葉
関係モデル | SQL | ファイルシステム |
---|---|---|
属性(アトリビュート) | 列 | フィールド(項目) |
タプル | 行 | レコード |
関係(リレーション) | 表(テーブル) | ファイル |
● 外部キー
- そのテーブルにおいて、他のテーブルとのリンクの役割をするキー。
- そのテーブルから他のテーブルへのジャンプ先。
- 「ちゃんとジャンプ先がないと駄目」っていうのが「外部キー制約(参照制約)」。
- 外部キー制約:
- 表に外部キーがあると、その外部キーの値は、参照する候補キーのどれかの値か、NULL値でなければならない。
- 外部キー制約:
- 「ちゃんとジャンプ先がないと駄目」っていうのが「外部キー制約(参照制約)」。
● インデックス (索引)
- Select 文のための補助ツール。
- Where 句で効いてくる。
- ヒット率が関係ある。
- 検索時の性能が上がるが、データ追加時の性能が下がる可能性がある(インデックスを更新するため)。
● 導出項目
- 他の情報から補完できる項目
● 相関副問合せ
- 呼び出し元の情報を参照するようなサブクエリ。
select * from TABLE_A where exist ( select * from TABLE_B where TABLE_A.ATTR = TABLE_B.ATTR )
ログ
トランザクションログ。
正規化
Q: そもそもなんで正規化するの?
A: 正規化されたテーブルじゃないと、レコードの Insert, Delete, Update ができないため。
● 第1正規化
+----+---------+ +------+---------+ | 01 | Pikachu | | 01-1 | Pikachu | | | Kairyu | ----> | 01-2 | Kairyu | | 02 | Yadoran | | 02 | Yadoran | +----+---------+ +------+---------+
● 第2(3)正規化
+----+-----+---------+ +----+-----+ | No | Id | Name | | No | Id | +----+-----+---------+ +----+-----+ | 01 | 025 | Pikachu | | 01 | 025 | | 02 | 149 | Kairyu | --+--> | 02 | 149 | | 03 | 080 | Yadoran | | | 03 | 080 | +----+-----+---------+ | +----+-----+ | | +-----+---------+ | | Id | Name | | +-----+---------+ | | 025 | Pikachu | +--> | 080 | Yadoran | | 149 | Kairyu | +-----+---------+
- 「Id が決まれば Name も決まる」ような状態は、正規化できる。
- Id 列が主キーだった場合は第2正規化
- Id 列が非主キーだった場合は第3正規化