データベースモデル
データベース化の構造を抽象化したもの。
データベースモデルには、概念データモデル、論理データモデル、物理データモデルがある。
「概念データモデル」→「論理データモデル」→「物理データモデル」の順により詳細な、具体的な設計になっていく。
↓↓こんなイメージ。
概念データモデル
DBMSに依存しないデータモデル。E-Rモデルが代表的。
ERモデル
Entity-Relationship Model(実体関連モデル)のこと。
データベース化する対象の世界を抽象化して、エンティティ(Entity: 実体)とリレーションシップ(Relationship: 関連)を分析する方法。
ERモデルを図にしたものが、ER図(ERダイアグラム)。
ER図の書き方にはいくつか種類があるが、細かく覚えてなくても理解できると思う。
↓のサイトが良くまとまっていた。
論理データモデル
DBMSに依存するデータモデル。
論理データモデルには、次の3つがある。
- 階層モデル
- 1対多の親子関係のデータ構造(木構造)を表現する
- ネットワークモデル(網モデル)
- 多対多の親子関係を表現する
- リレーショナルモデル(関係モデル)
- 行と列の2次元の表で表現する
物理データモデル
論理データモデルをパファーマンスやセキュリティなどを考慮してより詳細に、具体的に設計したもの。
データの正規化
正規化とはデータの冗長性を排除し、関連性の強い項目(属性)をまとめること。
データの冗長性を排除することで、データの追加・更新・削除時のデータ不整合を防ぐことができる。
メモ
例えば、注文テーブルに「注文ID」、「顧客番号」、「顧客名」、「商品名」...などのカラムがあるとする。
顧客名は顧客番号を使って、顧客テーブルから取得できるから冗長だとねー、排除できるねってこと。
もし注文テーブルに顧客名があったら、顧客の名前が変わったとき(企業買収・合併とか)に、注文テーブルの顧客名を変えなかったら、データ不整合が起きてしまう。
候補キー、主キー、外部キー
候補キーとは、行を一意に識別するための必要最低限の組み合わせ。
主キーは、候補キーのうちテーブルのレコードを特定するためのキー。複数ある場合は主に使用するものを主キーにする。
外部キーは、他のテーブルの主キーを参照するキー。
関数従属
ある属性が決まれば、別の属性を特定できることを関数従属という。社員番号がわかれば社員名がわかるといったもの。
「Aが決まれば、Bが決まる」といった関係の場合、「BはAに関数従属する」と言える。