Open3

読書メモ「なぜ?がわかるデータベース」

tykityki

Part1:データベースの基本

Chap1

データベースのシステムの構成

  • データベース
  • DBMS(データベースマネジメントシステム)
    • 受け取った命令を解釈し、データの操作を行う
    • データの操作はSQLを介して行われる
  • プログラム

データベースの種類

  • リレーショナルデータベース(RDB)

    • 特徴
      • 検索に強い
  • NoSQL(非RDB)

    • 特徴
      • 高速にアクセスできる
      • データの形式を細かく定義する必要がない
      • 柔軟な検索はできない
    • 種類
      • Key -Value型
      • ドキュメント型

データベースとDBMSが分かれていることのメリット

  • データベースだけのバックアップが取れる
  • 複数のプログラムから読み書きが可能
  • プログラムの不具合に左右されにくい

Chap 2 リレーショナルデータベースを知ろう

とは

  • 「表」形式のデータベース

利点

  • 関連性
  • 拡張性

メリット

  • 一元的にデータを扱える
  • 大量のデータを扱いやすい
  • 他のプログラムと組み合わせられる
  • データを正しく保ちやすい
  • 検索やフィルタに強い

キー🔑

  • 主キー(Primary Key)
    • NULLは許されず、一つのテーブルで、重複は許されない
  • 複合キー(Compound Key)
    • 複数の項目を組み合わせた主キー
  • 代替キー(Surrogate Key)
    • 主キーになりそうなカラムがない場合に、人工的に追加するカラム
    • Autonumberや連番で番号を振ることがある
  • 外部キー(Foregin Key)
    • 他のテーブルとの関連づけるためのもの

正規化

  • データの繰り返しと重複を避けることが重要視されている。
  • そのために、正規化を行い、重複しないように表を分ける。

第1正規化

  • 一つのレコードの中の繰り返しをなくし、DBで扱える状態にすること
tykityki

Chap3 : データベースの操作 ❶

新しく増やす(CREATE/INSERT)

消す(DROP/DELETE)

上書きする(UPDATE)

取り出す(SELECT)

複数のテーブルを組み合わせる

縦方向に組み合わせる:集合

  • 和集合(UNION)
    • テーブル同士で重複しているレコードは取り出す
  • 積集合(INTERSECT)
    • 重複したレコードを取り出す
  • 差集合(EXCEPT)
    • 重複するものを除いた、残りを取り出す

横方向に組み合わせる:結合

  • 内部結合(INNER JOIN)
    • 共通するレコードだけを対象として、カラムを増やす結合
  • 外部結合(OUTER JOIN)
    • 主となるテーブルのレコードを全て取り出して、それに副となるテーブルを結合させる
    • 服となるテーブルからは、共通したものしか取り出さない

Chap4 : データベースの操作 ❷

データを守る仕組み

  1. 不整合を起こすデータを入れさせない仕組み
  2. トランザクション:一人のユーザが行う動作について不整合を起こさせない仕組み
  3. ロック:複数のユーザーが同時に行う動作について不整合を起こさせない仕組み

不整合を起こすデータを入れさせない仕組み

  • データ型
  • データの長さ
  • 条件(制約)
    • 非NULL制約
    • 一意性制約
      • 同じカラム内に同じ値は入れない
    • 参照制約
      • 参照しているテーブルにない値は入れられない

トランザクション

  • ロールバック:途中で失敗した時は、囲んだ部分のSQLの実行は全てなかったことにされ、実行前に戻る。
  • ACID特性
    • 原始性(Atomicity)
    • 一貫性(Consistency)
    • 分離性(Isolation)
    • 永続性(Duration)

https://www.databricks.com/jp/glossary/acid-transactions#:~:text=ACID 特性:原子性、一貫,をとった略語です。

ロック

  • 共有ロック(読み込みロック)
    • 自分が読み込んでいる最中は、書き込まないで-というもの
  • 排他ロック(書き込みロック)
    • 自分か書き込んでいる最中は、書き込まないのはもちろんのこと、読み込みもしないで-というもの
  • デッドロック
    • お互いにロックが解除されるまで待ち続けて八方塞がりになること
    • 対策としては、ロックの範囲を狭めること

プログラムから扱いやすくなる仕組み

  1. インデックス:検索を早くする仕組み
  2. ビュー:仮想的なテーブル
  3. ストアドプロシージャ:命令をまとめて実行する仕組み
  4. トリガー:特定の動作に連動して処理をする仕組み
tykityki

Chap 5:データベース設計の流れ

  1. 計画
  • 要件定義
    - CPU、メモリのスペックを決めることをサイジングという
  • 基本設計/外部設計
    • 「3層スキーマ」
      • 外部、概念、内部の3層に分けて、スキーマを決めていく
        • 外部:プログラムと関係する部分(例:ビュー)
        • 概念(論理設計):データベースの論理部分の設計(例:テーブル、リレーション情報)
        • 内部(物理スキーマ):ハードウェアやRDBMSなどに関わる部分(例:データ型やデータベースファイル)
    • ER図
      • テーブルの項目とリレーションを書き出すために利用される
      • 各項目は、アトリビュートと呼ばれる
      • リレーションの関係の濃さは、カーディナリティと呼ばれる
      • 書き方(IE記述法)
        • テーブルの項目を書き出す
        • 主キー、外部キーをわかりやすくする
        • リレーションを線で結んで、濃度を書く
  • 詳細設計/内部設計
  1. 作る
  • プログラムを作る
  • テスト
  1. 使う
  • データを入力
  • 運用する
  • メンテナンスする

Chap 6 : データベースを作ってみよう

  • データベースを使用するシステムのほとんどは、クライアントサーバシステムの形態をとっている
    • サーバにシステムをおき、クライアントからサーバにアクセスして、使う仕組み

Chap 7 : データベースを運用してみよう

  • サーバ運用の基本は、24時間365日正常・安全に稼働し続けること
  • 正常な状態
    • データが壊れていない状態
      • 論理的に壊れている状態
        • データは入っているけれど、メチャクチャになっている
      • 物理的に壊れている状態
        • ストレージ(HDD, SDD)が壊れている状態
    • データにアクセスできること
  • 安全な状態
    • 脅威にさらされていない状態
      • 脅威
        • 物理的脅威
        • 人為的脅威
        • 技術的脅威
  • 維持するために必要なこと
    • 監視
    • 復旧
    • 維持