Neunomizuの日記

俺だけが俺だけじゃない

# CMU DB 1. Course Introduction and the Relational Model

tags: CMU DB

春休みなので中規模なソフトウェアを書いてみたいと思い, 割と評判が良いCMUのDBMSの授業を受けてみることにしました

ということで進捗を報告していきます. 間違ったことを書いていたり意味不明だとしたらごめんなさい. 動画を聞きながら書きなぐっているのでそういうことです

内容

この授業はCMUでは扱わなかったらしく, 教授が風呂場(?)で動画を取っていますw

ここではDBに関連する部分を書いていくので, この授業がOracleによって行われているなどは話しません

外観

Disk-Oriented DBMSの設計と実装に関する授業. 使い方に関しては扱わない

DBMSに関する様々なレイヤーを扱う

BusTubというDBMSを使うらしく, ソースコードGitHubにあるらしいです

構成は

  • Disk-Oriented Storage
  • Volcano-style Query Processing
  • Pluggable APIs
  • SQLはサポートしていない

DBMS

データベースはほとんどのアプリケーションの核である

例として音楽アプリはアーティストやアルバムの情報を扱うデータベースを使っている

CSV(comma-separated valu)ファイルも一種のデータベース

  • Data Integrity
  • Implementation
  • Durability

という問題がある

DMBSとはアプリケーションにデータベースに情報を入れて解析することを可能にするソフトウェア

汎用目的のDMBMSは定義, 作成, 問い合わせ, 更新とデータベースの管理を許可するように設計されている

初期のDBMSは難しかった(色々あって)

Relational Model

Ted Coddによって1970年に提案されたモデルで, DBの抽象化.

  • 単純なデータ構造でデータベースに入れて
  • 高水準言語でデータにアクセスをし
  • 物理的なストレージは実装に任せるというもの

データモデルとはデータベースのデータを記述する概念の集合

スキーマとは与えられたモデルを使って特定のデータ集合の記述するもの

DBMSにも色々なデータモデルがあるけど, この授業で扱うのはRelational

以下からRelational Modelは成り立つ

  • 構造
    • 内容の関係の定義
  • 完備性
    • データベースが制約を満たすことを保証
  • 操作
    • 内容のアクセスと変更方法

relationalはentities(実体)を表す属性の関係を保持する非整列な集合

タプルは関係の属性値の集合でdomainと呼ばれる

NULLは全てのdomainにある, 値は基本的にスカラーである

DBMSは自動で内部にprimary keyを作る. 定義をしなくても

foreign keysはあるrelationの属性から他のrelationのタプルを示すことができる

DML

Data Manipulation Languagesはデータベースから情報を入れ, 取得する方法

以下の2つの方法がある

  • 手続き的
    • クエリが期待する結果を見つけるためにDBMSの使うストラテジーを指定する
    • Relational algebra
  • 宣言的
    • クエリがどのデータが欲しいかを指定するだけで見つけ方は指定しない
    • Relational calculus

Relational Algebra

集合論に基づいて演算子を使って入力(relation)から出力(relation)を返す

  • SELECT
    • 条件を満たすタプルの部分集合を選ぶ
    • 複数の条件を組み合わせることが可能
    • $σ_{\text{predicate}}(R)$
  • PROJECTION
    • 指定された属性のみを持つタプルのrelationを生成する
    • $\Pi_{A_{1} , A_{2} , \dots , A_{n} } (R)$
  • UNION
    • 入力のrelationで少なくとも1つに現れるタプルを全て保持するrelationを生成する
    • $(R \cup S)$
  • INTERSECTION
    • UNIONではどちらかだったがこちらはどちらも
    • $(R \cap S)$
  • DIFFERENCE
    • 最初のrelationに出てくるが2つ目のrelationには出てこないタプルを持つrelationを生成する
    • $(R - S)$
  • PRODUCT
    • 全ての組み合わせを生成する
    • $R \times S)$
  • JOIN
    • 少なくとも1つ共通する性質を持つ入出力の2つのタプルの全ての組み合わせを持つrelationを生成
    • $(R \bowtie S)$

他にも色々ある

クエリはSQLデファクトスタンダードになっている

結論

データベースはどこでも使われている

Relational algebraがRDBのクエリの処理を基本処理を定義している

クエリの最適化・実行について話す時にまたRelational algebraを扱う