【OSS-DB Silver黒本】1章つまづいたところまとめ。

正直初めて見る単語が多くてつらい。

PostgreSQLライセンス

PostgreSQLBSDやMITに似たライセンス。 著作権表示とすべてのライセンス条文の表示があれば、使用、複製、改変、再配布は自由。

リレーショナルモデル

リレーショナルデータベースが基づく集合モデル。 モデルを構成する要素として、リレーション、タプル、属性がある。

f:id:KazmaArakaki:20170724202354j:plain

候補キー

タプルを一意に特定できる属性。

主キー

候補キーの中から主に使用するものを明示的に選択したもの。主キーには以下の制約がある。

  • UNIQUEである
  • NULL値を許容しない

正規化

1事実1箇所の原則に従って同じデータを集約することにより、更新漏れや更新箇所の増加を抑え、データ操作を効率化すること。

  • 正規化前

f:id:KazmaArakaki:20170724220705j:plain

  • 第一正規形

SQLで扱いやすいデータ構造に変更する。

f:id:KazmaArakaki:20170724220806j:plain

  • 第二正規形

キー属性に関数従属している列を別テーブルに分離する。

f:id:KazmaArakaki:20170724221111j:plain

f:id:KazmaArakaki:20170724221159j:plain

  • 第三正規形

非キー属性に関数従属している列を別テーブルに分離する。

f:id:KazmaArakaki:20170724221111j:plain

f:id:KazmaArakaki:20170724221317j:plain

関数従属

ある列の値によって別の列の値が一意に決まるような列間の関係

完全関数従属

(1) { A, B } -> C
(2) A -> C
(3) B -> C

(1)が成り立ち、かつ、次の(2)、(3)が成り立たないとき、
Cは{ A, B }に完全関数従属している
と言う

候補キーの全ての値が埋まってはじめて他の列の値が一意に決まる。

下の例では、学年、組、番号の全ての値が埋まったときに氏名が一意に定まる。 学年だけ、もしくは組や番号だけでは氏名は特定できない。

f:id:KazmaArakaki:20170724222118j:plain

部分関数従属

(1) { A, B } -> C
(2) A -> C
(3) B -> C

(1)が成り立ち、かつ、次の(2)、(3)のどちらかが成り立つとき、
Cは{ A, B }に部分関数従属している
と言う

候補キーの一部の値が埋まると他の列の値が一意に決まる。

下の例では、学年と組の値が埋まれば学級担任が一意に特定できる。 番号は学級担任の特定に関係がない。

f:id:KazmaArakaki:20170724222810j:plain

推移関数従属

(1) A -> B
(2) B -> C
(3) B -> A

(1)、(2)が成り立ち、かつ、(3)が成り立たないとき、
CはAに推移関数従属している
と言う

候補キーによって他の列の値が一意に定まり、その定まった値からさらに別の列の値を一意に定められる。

下の例では、ISBNが分かれば著者が特定でき、著者が分かれば国籍が特定できる。 さらに著者からはISBNを一意に特定することができない。

f:id:KazmaArakaki:20170724225112j:plain

DBMSの主な機能

機能 説明
データベース管理 データベースの定義と操作
トランザクション管理 データベースの操作の一貫性を保障
同時実行制御 複数のユーザーからのアクセスを制御
機密保護管理 不正アクセスからデータベースを保護
障害回復管理 障害発生時の復旧

SQL

大きく3つに分類できる。

  • DDL (Data Definition language)
    テーブル操作のコマンド
  • DML (Data Manipulation Language)
    データの検索、追加、更新、削除のコマンド
  • DCL (Data Control Language)
    DDLDML以外のコマンド

リレーショナル代数の演算

※演算イメージはWikipedia)より。

f:id:KazmaArakaki:20170724231602j:plain

f:id:KazmaArakaki:20170724231726j:plain

交差

f:id:KazmaArakaki:20170724231757j:plain

直積

f:id:KazmaArakaki:20170724231830j:plain

結合

f:id:KazmaArakaki:20170724231909j:plain

選択

f:id:KazmaArakaki:20170724231944j:plain

射影

f:id:KazmaArakaki:20170724232014j:plain

データベース設計の流れ

  1. 概念設計
    モデル化、ER図、クラス図の作成
  2. 論理設計
    テーブル定義、正規化
  3. 物理設計
    DBMSの選定、設定、マシン構成やディスク構成の設計

参考URL