勉強日記

チラ裏

OSS-DB試験対策 緑本 ch2 データベースの基礎知識

www.shoeisha.co.jp


データベースマネジメントシステム

  • データを一元管理
    • 安全性・一貫性の確保
      • 整合性
      • 権限
    • 生産性の向上
      • アプリケーションごとにデータ管理を実装しなくていい
    • データ操作の標準的な手段

データベースマネジメントシステムの機能

  • 5つの柱
    • データの機密保護を実現
      • 【補】GRANT/REVOKE
      • きめ細やか
        • リソースごとユーザごとに権限付与
        • 列単位
    • トランザクションを制御
      • 同時実行制御による不整合防止も
    • データの整合性の維持
      • 形式チェック、データの相互関係のチェックなど
      • 【補】ドメイン、check制約、FK制約とかかな
    • 障害からの安全な復旧
      • 障害発生直前の状態に復旧させることができる
        • バックアップとログを用いて
    • アプリケーションプログラムのためのインタフェースの提供

データモデル

  • 対象世界
    • データベースを構築する範囲
  • データモデル
    • 対象世界をモデル化したもの
    • 概念データモデル(概念モデル)
      • 対象世界を抽象化
      • 特定の種類の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
    • CREATE
    • ALTER
    • DROP
    • 【補】TRUNCATE TABLEもこれ
      • cf. 全件DELETEはDML
  • DML: Data Manipulation Language
  • 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ではない
  • ボイスコッド正規形を目指すと非可逆になってしまうことがある
  • 無損失分解になるように注意する