データベースマネジメントシステム
-
データを一元管理
-
安全性・一貫性の確保
- 整合性
- 権限
-
生産性の向上
- アプリケーションごとにデータ管理を実装しなくていい
- データ操作の標準的な手段
-
データベースマネジメントシステムの機能
-
5つの柱
-
データの機密保護を実現
- 【補】GRANT/REVOKE
-
きめ細やか
- リソースごとユーザごとに権限付与
- 列単位
-
トランザクションを制御
- 同時実行制御による不整合防止も
-
データの整合性の維持
- 形式チェック、データの相互関係のチェックなど
- 【補】ドメイン、check制約、FK制約とかかな
-
障害からの安全な復旧
-
障害発生直前の状態に復旧させることができる
- バックアップとログを用いて
-
-
アプリケーションプログラムのためのインタフェースの提供
- DMLの提供
-
データモデル
-
対象世界
- データベースを構築する範囲
-
データモデル
- 対象世界をモデル化したもの
-
概念データモデル(概念モデル)
- 対象世界を抽象化
- 特定の種類のDBMSには依存しない
-
論理データモデル(論理モデル)
- 概念データモデルを、データベースとして実装可能な形に変換したもの
概念データモデル
-
ERモデルがよく用いられる
- Entity (実体)
-
Relationship (関連)
-
カーディナリティ
- 関連の多重度
- 1とか多とか
-
論理データモデル
- DBMSで実装可能なデータモデル
-
当然、DBMSに依存
- RDBMSは一種に過ぎない
-
種類
-
階層モデル
- 親と子は1対多
-
ネットワークモデル
- 親と子は多対多
-
関係モデル
-
データの論理的な構造の決定を遅延でき、柔軟性があるのが特徴
- 【補】JOINして初めて階層構造が生じる、的な意味かな
- cf. 階層モデル、ネットワークモデルではデータベース構築時にデータの論理的な構造が決定される
-
-
-
関係モデルの言葉
- tuple、組、row
- attribute、属性、column
- domain、定義域
-
degree、次数
- attributeの数
-
cardinality、基数
- tupleの数
SQLの基礎
SQLの規格
- ANSIとISOによる標準化
-
例: SQL:2016
SQLの分類
-
DDL: Data Definition Language
- CREATE
- ALTER
- DROP
-
【補】TRUNCATE TABLEもこれ
- cf. 全件DELETEはDML
-
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ではない
- 候補キー
- ボイスコッド正規形を目指すと非可逆になってしまうことがある
- 無損失分解になるように注意する