基本情報技術者試験
こちらより
続いてデータベースについてです。
SQLについては内容が長くなるので
別の機会に投稿予定です。
データベース基礎
一元管理の効果
・独立性
・整合性
・機密保持
3層スキーマアーキテクチャ
スキーマはデータの構造という意味です。
外部スキーマ
外部から見えるスキーマ
概念スキーマ
登録されているデータ全て
内部スキーマ
記憶装置上でのデータ構造です。
関係データベース
表形式でデータを管理するデータベースです。
主キー
行を一行に特定できる属性
複合キー
複数の属性の組み合わせで主キーとなっているもの
一意性制約(UNIQUE): 同じ値はだめ
非ナル値制約(NOT NULL): 空値を取ってはいけない
外部キー
他の表で主キーとなっているもの
参照制約
外部キーの値が必ず参照先の表に必ず存在しなければならない
実表
概念スキーマに該当
データベースに登録されている表本体のこと
ビュー
外部スキーマに該当
実表から、必要な行や属性を抜き出して作成した仮装の表
キーバリューストア
データ構造の一つ
保存したいデータ(Value)と
そのデータを一意に識別できる値(Key)を組としてデータに保管
[1234,田中]
のように
[キー(Key),バリュー(Value)]
となっています。
E-R図
業務で扱うデータの性質を分析
E-R図基礎
エンティティ(実体)とリレーションシップ(関連)を用いて表現
要はエンティティは表名
リレーションは紐、矢印の名称など
多重度
エンティティの数的な関係を表します。
矢尻のある方が'多'
矢尻のない方が'1'です。
家には複数の人間が住めるが
人間は一つの家にしか住めないなど
多重度を読み取る時は
それぞれのエンティティから考える
E-R図と関係データベース
次のルールから作成できます。
・ER図のエンティティを表をする。
・エンティティの属性は、表の属性とする
・1-1関係は 一方の主キーを、他方で外部キーに設定する
・1-多関係は、1の側の主キーを、多の側で外部キーに設定する。
・多-多関係は、連関エンティティを用いて1-多関係に変形する。
連関エンティティ
多-多関係のままだとややこしいのので
1-多の関係にする仲介表を作成します。
その中間エンティティつまり中間表を
これを連関エンティティと呼びます。
例として
社員と部署だと多-多の関係なので
間に所属こと連関エンティティを作成します。
正規化
表を分割してデータの重複を排除すること
整合性を高くすることができる。
利点は不整合の発生を防ぐ
欠点はアクセスに時間がかかる
関数従属
Aを特定すればBが特定される。など
非正規形
繰り返し項目をもつ表
一行に複数のデータは入っているなど
このままだと使えない
第一正規形
繰り返し項目を持たない
一行に複数のデータが入っていない
単純な表
第二正規形
ここで分割するようになります。
第一の条件を満たしていて
非キー属性が主キー属性に関数従属する。
第三正規形
第二の条件を満たしていて
非キー属性が主キーに推移的関数従属しない
一旦分割した表をさらに分割して見やすくしている。
推移的関数従属
A→B→C
のように関数従属が推移していくもの
受注番号→顧客番号→顧客名
のような形です。
受注番号→顧客番号
顧客番号→顧客名
となるように分割して第三正規形を作ります。
さかのぼらず、一つ前から出せるようにする。
関係演算と集合演算
関係演算
選択
列を抜き出す
射影
列を抜き出す
結合
対応付けて双方の表を一つにする
結合キー
対応付けに使うキーのこと
集合演算
直積
複数の表の全ての行の組み合わせ
買い物表にフルーツだとか日用品だとか
一つ残らずデータを追加するようなイメージ
DBMS
ACID
トランザクションが持つべき特性
トランザクション
関連する一連の手順をまとめた単位
コミット(COMMIT)
全て実行する
ロールバック(ROLLBACK)
全く実行しない状態に戻す
原子性
全て実行するか
全く実行しないか
一貫性
矛盾させない
独立性、隔離性
他のトランザクションの影響を受けない
持続性、耐久性
更新結果は消失することがない
2相コミットメント制御
2つのデータベースを扱う場合
両方とも命令して準備完了と応答が来たら
実行する処理
分散データベース
情報を様々な場所で管理しているデータベースを
分散データベースといいます。
同時実行制御
共有されている場合、各自で更新すると
混乱が生じます。
そこでロックをかけて制御できるようにすることです。
### 共有ロック
読み込み時にかけるロック
他が共有ロックをかけている場合
さらに共有ロックをかけことができます。
さらに他は占有ロックをかけることはできません
占有ロック
書き込み時にかけるロック
占有ロックをかけている場合
他は占有も共有もかけることはできません。
ロック粒度
ロックをかける単位
これを大きくすると
トランザクションまちが酷くなりますが
その分整合性を取りやすくなります。
小さくすると
トランザクションまちが短くなりますが
その分整合性が取りづらくなります。
デッドロック
膠着状態になること
複数のトランザクションが互いに相手の
ロック解除待ちをしている状態
この場合どれかのトランザクションを強制終了を再実行が必要になります。
障害回復
ロールバック
更新前ログで使用
障害発生時に実行中であった
トランザクションの途中結果を
全てキャンセルする。
ロールフォワード
更新後ログで使用
コミット済みトランザクションの
実行結果を復旧する。
チェックポイント
メモリ中のデータをディスク装置に反映する
ディスクへのアクセスに時間がかかるので
メモリ上のデータを更新するだけに留めて
後で行います。
ストアドプロシージャ
SQLのまとまりをDBサーバに登録しておき
クライアントが呼び出しして実行すること
要はSQLのショートカット機能