OSS-DB試験対策 緑本 ch2 データベースの基礎知識
データベースマネジメントシステム
- データを一元管理
- 安全性・一貫性の確保
- 整合性
- 権限
- 生産性の向上
- アプリケーションごとにデータ管理を実装しなくていい
- データ操作の標準的な手段
- 安全性・一貫性の確保
データベースマネジメントシステムの機能
- 5つの柱
データモデル
- 対象世界
- データベースを構築する範囲
- データモデル
- 対象世界をモデル化したもの
- 概念データモデル(概念モデル)
- 対象世界を抽象化
- 特定の種類のDBMSには依存しない
- 論理データモデル(論理モデル)
- 概念データモデルを、データベースとして実装可能な形に変換したもの
概念データモデル
- ERモデルがよく用いられる
- Entity (実体)
- Relationship (関連)
- カーディナリティ
- 関連の多重度
- 1とか多とか
- カーディナリティ
論理データモデル
- DBMSで実装可能なデータモデル
- 当然、DBMSに依存
- RDBMSは一種に過ぎない
- 種類
- 階層モデル
- 親と子は1対多
- ネットワークモデル
- 親と子は多対多
- 関係モデル
- データの論理的な構造の決定を遅延でき、柔軟性があるのが特徴
- 【補】JOINして初めて階層構造が生じる、的な意味かな
- cf. 階層モデル、ネットワークモデルではデータベース構築時にデータの論理的な構造が決定される
- データの論理的な構造の決定を遅延でき、柔軟性があるのが特徴
- 階層モデル
- 関係モデルの言葉
- tuple、組、row
- attribute、属性、column
- domain、定義域
- degree、次数
- attributeの数
- cardinality、基数
- tupleの数
SQLの基礎
SQLの規格
SQLの分類
- DDL: Data Definition Language
- DML: Data Manipulation Language
- CRUDの4つ
- DCL: Data Control Language
- GRANT/REVOKE
- BEGIN/COMMIT/ROLLBACK
データベース設計
概念データモデルの作成
- ERDを書く
- この時点では多対多とかは気にしない
- RDBMS依存の図ではないから
- 属性はまだEntityを具現できる最低限でいい
論理データモデルへの変換
- RDBMS上で実装できるところまで落とし込む
- 多対多を連関Entityで1対多にほぐす
- 詳細な属性も明確化
- 属性のデータ型やデータ長も明確化
- 正規化
正規化
- 更新時異常を防ぐために行う
- 更新時異常とは
- 冗長データ
- 不整合
- 「更新」
- 広義(updateだけじゃない)
- CRUDのR以外ぜんぶ
候補キーと主キー
- 候補キーはNULLを含むこともあるっぽい
非正規形(非第一正規形)
- 繰り返し項目が存在する
tel1
,tel2
,tel3
カラムとか
- 複数の値を含む属性から構成される
- カンマ区切りとか
第一正規形
- 【補】定義は「表をRelationとして扱える」こと
- NULLが含まれると第一正規形違反
- 繰り返し項目がない
- 複数の値を含む属性がない
第二正規形
- 部分関数従属がないこと
- 部分関数従属
- 候補キー
{A, B}
に対してA -> X
なる関数従属 (Xは非キー属性)
- 候補キー
第三正規形
- 推移的関数従属がないこと
- 推移的関数従属
- 非キー属性から非キー属性への関数従属
ボイスコッド正規形(BCNF)
- 非キー属性から、候補キーを構成する属性への関数従属がないこと
- 候補キー
{A, B}{, 非キー属性
Xに対して
X->A`なる関数従属があったりするとBCNFではない
- 候補キー
- ボイスコッド正規形を目指すと非可逆になってしまうことがある
- 無損失分解になるように注意する