No Description

encry1024 de98616427 Update README.md 2 months ago
README.md de98616427 Update README.md 2 months ago

README.md

データベーススペシャリスト試験

第2章 概念データモデル

データモデル

  • 概念データモデル
    • ユーザの要件定義に基づいて、運用する市s手有無が使用するデータを概括したモデルであり、E-R図 を用いて表記される
    • 使用するDBMSに依存しない
  • 論理データモデル
    • 使用するDBMSの種類を前提に、再整理したデータモデル
    • 改装モデル・ネットワークモデル・関係モデル
  • 物理データモデル
    • DBMS固有のデータ構造や格納する型を前提に、論理データモデルをさらに詳細に定義したデータモデル
    • テーブル定義表、テーブルの容量計算・インデックス、ページサイズなどを決める

E-R図

  • 概念データモデルを表現する図
  • エンティティ(実体)を四角形で表現
  • リレーションシップ(関連)を矢印もしくは直線で表現
  • 属性
    • エンティティの特性を示すもの
  • インスタンス
    • エンティティの内容であるデータのこと
    • 属性値の集合
  • 主キー
    • インスタンスを一意に識別できる極少の属性
    • 主キーには、一意制約非NULL制約がある
  • 多重度 = デグリー = カーディナリティ
    • エンティティのインスタンス同士の数の対応関係のこと
    • 1側が直線で、多側が矢印
  • ロール
    • リレーションシップが示すエンティティの役割
  • 外部キー
    • エンティティの属性Aが、他のエンティティの主キーを参照する場合、その属性Aを外部キーと呼ぶ
    • 外部キーに対応する主キーには、外部キーの属性値が必ず存在しないといけない = 参照制約
  • 連関エンティティ(説明用用語)
    • 多対多のリレーションシップがある時に、2つのエンティティの間に作る主キーが2つのエンティティの主キーの組になるエンティティのこと
  • リレーションシップの両端の○と●
    • リレーションシップの対応関係にゼロを含む場合は○、含まない場合は●
    • 外部キー値がNULLになる場合は、主キー側が○になる

スーパータイプ・サブタイプ

  • 汎化
    • 複数のエンティティに共通する属性および属性値に注目して、それらを1つのエンティティにまとめること
    • スーパータイプとサブタイプの主キー名は、ほぼ一致する
  • スーパータイプにインスタンスが発生した場合、サブタイプのうち、いずれか1つのサブタイプにだけ、インスタンスが発生するサブタイプがほとんど

第3章 関係データモデル

関係

  • 関係は、行と列の2次元の表のデータ構造を持つモデル
  • 重複したタプルは存在できない

候補キー

  • 関係ないにあるタプルを一意に識別できる極小の属性、もしくは属性の組を候補キーと呼ぶ
  • 候補キー = 主キーの候補になるキー
  • 候補キーは、原則として中括弧で括る
  • 候補キーが複数ある場合の決め方
    • 候補キーを構成する属性の値が、先に格納される候補キー
  • 候補キーの値は、NULL値になっても良い

関数従属性

  • 1つの関係にある2つの属性X,Y間で、Xの属性値が決まると、Yの属性値が1つに決まるとき、YはXに関数従属する
    • Xを決定項、Yを被決定項
  • 完全関数従属性
    • 非キー属性が、候補キーを構成するすべての属性に関数従属している
  • 部分関数従属性
    • 非キー属性が、候補キーを構成する属性の一部に関数従属している
  • 推移的関数従属性
    • 候補キーX, 属性Y,Zが非キー属性であるとき以下の3つを見たす
    • X -> Y
    • Y -> Z
    • Y -> Xがない

正規化

  • 非正規形の要件
    • 属性値に繰り返しグループがある
  • 第1正規形の要件
    • 属性値に繰り返しがグループがない
  • 第2正規形の要件
    • 第1正規形かつ非キー属性がいずれも、全候補キーに対して完全従属していること
    • 部分関数従属性を排除してある
  • 第3正規形の要件
    • 第2正規形かつ候補キーと非キー属性との間に推移的関数従属性がない関係
    • 推移的関数従属性を排除する
    • 推移的関数従属性を考えるときに、反射率を使わない

関係代数

    • 両方または片方に現れるタプルを持つ新たな関係を作る演算
    • 共通なタプルを抜き出す
    • 片方のタプルにのみ現れるタプルを抜き出す
  • 直積
    • すべてのタプルの組み合わせ
  • 射影
    • 一部の属性を抜き出し新たな関係を作る
  • 選択
    • 条件をつけてタプルを抜き出す
  • 等結合
    • 指定されている2つの属性の属性値が一致しているタプルを抽出して結合する
    • 条件指定した属性が重複して現れる
  • 自然結合
    • 等結合で、条件していした属性が1つだけ現れるバージョン
  • 内部結合
    • 指定されている2つの属性の属性値が指定された条件(=, <, >など)に一致しているタプルを抽出して結合する
    • 内部結合は、等結合を含んでいるイメージ
  • 外部結合
    • 結合条件として指定された属性の値が一致しない場合でも、基準となる側の属性値を含む行を除外せず、結果表に含める演算
    • 左外部結合、右外部結合などがあり、基準ではない側の属性の値が存在しないときNULLで埋めるだけ

第4章 SQL

SQLの命令の種類

  • データ定義言語
    • CREATE SCHEMA
    • CREATE TABLE
    • CREATE VIEW
    • CREATE ROLE
    • ALTER
    • DROP
    • GRANT
    • REVOKE
  • データ操作言語
    • SELECT
    • INSERT
    • UPDATE
    • DELETE

SELECT

  • SELECTは、下記の条件の順番で実行される SELECT 列名 FROM 表名 WHERE 抽出条件 GROUP BY グループ化を行う列 HAVING グループ化をした後の抽出条件 ORDER BY 並べ変える条件
  • DISTINCTを指定しないと重複行がそのまま抽出されてしまう
  • 列名 AS 新列名 で列名をつけられる

WHERE句

  • 等しい場合は、=
  • 等しくない場合は、<>
  • >=<=
  • NULLは比較対象外
  • 列名 IS NULL では、値がNULL行だけを抜き取る
    • 逆は、列名 IS NOT NULL
  • BETWEEN 0 AND 30
  • LIKE
    • % は、任意の0文字か1文字以上
    • _ は、任意の1文字

ORDER BY

  • ORDER BY で、列名を引数に順番をソートできる
    • ASCは、昇順
    • DESCは、降順

UNION/INTERSECT/EXCEPT

  • 以下の3命令は、SELECT文を使って実行するための演算子
    • UNIONは、和演算子
      • ALLをつけると重複行を取り除かない
    • INTERSECTは、積演算
    • EXCEPTは、差演算

INSERT

  • 基本構文 INSERT INTO テーブル名 (列名1, 列名2, ・・・) VALUES (値1, 値2, ・・・)
  • SELECT文で取得した行をINSERTする値としても使うことができる

Update

  • 基本構文 UPDATE テーブル名 SET 列名1 = 値1, 列名2 = 値2 WHERE 抽出条件

DELETE

  • 基本構文 DELETE FROM テーブル名 WHERE 抽出条件

CREATE TABLE

  • 基本構文 CREATE TABLE テーブル名 ( 列名1 データ型1 列制約 )
  • 列制約
    • PRIMARY KEYは、主キーを設定
    • UNIQUEは、一意性制約
    • NOT NULLは、NULL値の存在を許さない
    • DEFAULT 定数
    • REFERENCES テーブル名は、指定されたテーブル名を参照先とする外部キーを設定する
    • CHECKは、検査制約
  • 表制約
    • PRIMARY KEY 列名n
    • FOREIGN KEY 列名n REFERENCES テーブル
    • CHECK
  • 外部キーの更新
    • 以下の動作をON DELETEON UPDATE の後に続けて指定することができる
    • NO ACTION
      • 主キー側のある行を更新・削除しようとしたとき、外部キー側にそのキーと同じ値を持つ行があれば、更新・削除を拒否する
    • CASCADE
      • 主キー側のある行を更新・削除しようとしたときに、当該動作をさせる
    • SET DEFAULT
      • 外部キー側を、デフォルト値に更新する
    • SET NULL
      • 外部キー側を、NULL値に更新する

CREATE VIEW

  • 基本構文 CREATE VIEW ビュー名 (列名1, 列名2, ・・・) AS SELECT ~~~
  • 複数のテーブルの結合・計算・特定の行や列の抽出など、複雑な検索をビューに定義することによって、データベースのソサやプログラミングの負荷を軽減する
  • テーブルに格納された機密情報を格納している列だけを見せないビューを作成してセキュリティを確保する

更新可能なビュー

  • ビューは、読み取り専用ではなく、以下の条件を満たせば、追加・変更・削除が可能になる
    • SELECTの選択項目リストに集合関数を含まない
    • DISTINCT を含まない
    • HAVING, GROUP BYを含まない
    • つまるところ、更新行を特定できる

GRANT

  • テーブルやビューのアクセス権をユーザに付与するコマンド
  • 基本構文 GRANT 権限範囲 ON テーブル名 TO ユーザID1, ユーザID2, ・・・ [WITH GRANT OPTION]
  • 権限範囲
    • ALL PRIVILEGES(ALL) 下記のすべての権限を付与する
    • SELECT
    • INSERT
    • UPDATE
    • DELETE

REVOKE

  • GRANTを取り消すコマンド
  • 基本構文 REVOKE 権限範囲 ON テーブル名 FROM ユーザID1, ユーザID2

CREATE ROLE

  • ROLEは、アクセス権限の集合体
  • CREATE ROLEで作成して、GRANT文を使って、そのロールに権限を付与し、GRANT ロール名 TO ユーザID1 などでロールをユーザに紐付ける

内部結合

SELECT 列名1, 列名2
  FROM テーブル名1 INNER JOIN テーブル名2
  [ON 列名1 = 列名2]
  WHERE 抽出条件

自然結合

  • INNER JOIN の前にNATURALを書く
  • 自動的に結合条件は決まるっため、WHERE句は書かない

外部結合

  • 以下の3つのいずれかを使う
    • LEFT OUTER JOIN
    • RIGHT OUTER JOIN
    • FULL OUTER JONI

第5章 トランザクション

トランザクション

  • DBの更新・参照に関連する複数の処理を一つにまとめること

ACID特性

  • ACID特性は、トランザクション処理が持つべき性質のこと

    • すでに持っているわけではない、あくまでモデル
  • Atomicity

    • トランザクションが終了したとき、全データが更新されたか、あるいは全くしてないかのどちらかであり、中途半端になっていないこと
  • Consistency

    • トランザクションの処理結果がどうであれ、データベース全体は、一貫していること
  • Isolation

    • 複数のトランザクションを並行して動作させても、直列に動作させた場合と同じ結果になること
  • Durability

    • トランザクションが終了したとき、その後の障害等に影響されず、データの内容が変わらないこと

ロストアップデート

  • 更新されたはずのデータが更新される前に戻ってしまい消失する現象
  • Update時にロックをかけて、別トランザクションのUpdateが走らないようにすることで対策可能

ダーティリード

  • ロールバックされるコミット前の更新データを読み取り、誤読してしまう現象
  • ロールバック前に参照されてしまうことが原因

ノンリピータブルリード

  • あるトランザクション処理が2回、同一のデータを読み出した時に、異なる値を読み取ってしまう現象のこと

ファントムリード

  • あるトランザクション処理が2回、同一範囲のデータを読み出したときに、1回目にはなかったデータを2回目で読み取ってしまう現象のこと

隔離性水準

  • あるトランザクション処理が他のトランザクション処理から受ける干渉の許容度
  • Read Uncommited
    • ダーティリード、ノンリピータブルリード、ファントムリード
  • Read Commited
    • ノンリピータブルリード、ファントムリード
  • Repeatable Read
    • ファントムリード
  • Serializable
    • なし
  • SET TRANSACTION ISOLATION LEVEL で設定する

排他制御

  • 楽観法
    • 書き込む時点に読み痕だデータが他のトランザクションによって更新されているかをチェック
    • 更新されていたらロールバックし、更新されてなければコミットする
  • 時刻印法
    • トランザクション処理が開始されたときの時刻、トランザクション処理がデータに読み書きした時刻印を記録する
  • ロック法
    • 最も一般的な排他制御
    • 行単位・ページ単位などでロックをかけられる
    • 共有ロックは、後続ロックとして共有ロックのみ可能
      • 共有ロックは、参照ロック とも呼ばれる

デッドロック

  • 2つのトランザクション処理が互いにたすきがけになるように共有資源を専有した場合に生じる
  • ロック順序を同じにすることで防止可能

2相ロック

  • 最初はロックをかけるのみ
  • Updateなどが終わったら、ロックを解除するのみ
  • トランザクションの隔離性を保証するが、デッドロックは起きうる

ログファイル

  • 更新前ログ
    • テーブルにある行を変更する時
    • テーブルにある行を削除する時
  • 更新後ログ
    • テーブルに行を追加する時
    • テーブルにある行を変更する時

ロールバック

  • 障害が発生した時点から、更新前ログを使って、指定されたある時点に復旧すること
  • トランザクション障害は、更新前ログでロールバックする

ロールフォワード

  • 更新後ログを使って、指定された時点に復旧することです
  • 媒体障害は、バックアップを新しいハードディスクにコピーして、更新後ログを使って障害直前まで戻す