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

OSS-DBPostgreSQL勉強メモ

出典: 

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

  • データを一元管理

    • 安全性・一貫性の確保

      • 整合性
      • 権限
    • 生産性の向上

      • アプリケーションごとにデータ管理を実装しなくていい
    • データ操作の標準的な手段

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

  • 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の規格

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ではない
  • ボイスコッド正規形を目指すと非可逆になってしまうことがある
  • 無損失分解になるように注意する