データベース設計のプロセス
データ分析 -> データモデリング -> リレーショナルデータベーススキーマ -> リレーショナルデータベース管理
ユーザー要件→概念モデル(E/Rモデルl)→論理モデル(3層構造)
現実世界 -> 情報世界 -> 機械世界
コンセプト設計ツール ER図
ER 図の構成要素:エンティティ、属性、接続(関係ではなく)
概念設計段階でよく使われるモデル:エンティティ関係モデル(ERモデル - 概念モデルに属する)
ER図におけるコンポーネントの表現
コンテンツ | グラフィックス | 単語の属性 |
属性 | 楕円形のフレーム | 名詞 |
実在物 | 長方形のボックス | 名詞 |
接続 | ダイヤモンドボックス | 動詞 |
エンティティ識別子 (主キー)、属性には下線が付けられます
外部キーはチルダとして識別されます
連絡先の分類
一方向接続、双方向接続、三方向接続
ERモデル設計の手順
1.最初にローカル ER モデルを設計します
2. 各ローカル ER モデルをグローバル ER モデルに合成します。
3. グローバル ER モデルを最適化して、最終的な ER モデル (概念モデル)を取得します。
詳細を計画する
属性: 分割不可
エンティティと属性間の関係は1:nのみです
異なるエンティティ タイプのプロパティ間に直接の関係があってはなりません
すべてのエンティティには少なくとも1 つのエンティティ識別子が 必要です
ER 図をリレーショナル スキーマ セットに変換
ステップ 1 (エンティティ変換)、各エンティティをリレーショナル スキーマに変換します (属性はリレーショナル スキーマの属性に対応し、エンティティ識別子はリレーショナル スキーマのキーです)。
ステップ2(変換連絡先)
1:1 接続:別のエンティティのコードと接続タイプ属性を任意のエンティティに追加します (任意に追加)
1:n 接続: 1 端エンティティのキーと接続属性をn セグメント エンティティの関係モードに追加します (マルチパーティ追加)
n:m 接続: 接続をリレーショナル モードに変換し、その属性は両端のエンティティのキー + 接続の種類になります (キーは両端のエンティティ キーの組み合わせです)。
例1
ERモデルを用いた論理設計の手順
1. リレーショナル スキーマの初期セットをエクスポートする
2. 標準化された処理
リレーショナル スキーマを 1 つずつ調べます
仕様要件 を満たしているかどうかの判断
3. モデルの評価
4. 修正
5. サブパターンの設計
論理設計ツール
論理設計のツール - 正規化理論
データ依存性
リレーショナルスキーマの形式化
R(U,D,DOM,F)
R: リレーション名 U: 属性名のコレクション D: DOM のすべてのドメイン: 画像のコレクション
F: 依存関係のコレクション
常用: R(U) R(U,F)
データ依存関係: 属性値間の相互関係を定義します (主に値の同等性に反映されます)
過度な依存により、データの冗長性が高すぎる、更新例外、挿入例外、削除例外が発生します。
解決策:リレーショナル スキーマを分解して、不適切なデータの依存関係を排除します。
依存関係の表現: Sno -> Sdept: Sno が Sdept を決定します。
(Sno,Cname) ->グレード: Sno と Cname が共同でグレードを決定します
F={Sno->Sdept,Sdept->Mname,(Sno,Cname)->Grade}
機能的な依存関係
X->Y: X 関数は Y を決定し、Y 関数は X に依存し、X は決定属性のセットです
逆は必ずしも真ではない
自明な関数の依存関係: X->Y、および Y は X (Sno,Cno)->Sno に属します
重要な関数の依存関係: X->Y、および Y は X (Sno,Cno)->Grade に属さない
完全な関数依存関係: X->Y、ただし X のサブセットは Y の1 対 1 対応を決定できません。
部分的な関数依存関係: X->Y ですが、Y は X に完全には依存せず、 複数の属性セットが共同で決定されます。
伝達関数の依存関係: X->Y、Y->Z、および Y は X に属さず、Y は X を決定できません
コード
候補キー: R(U,F) に属性 K があり、K がU を完全に決定する場合、K は R の候補キーです。
候補キーはタプルを一意に識別できる
主コード: 候補コードが複数ある場合は、そのうちの 1 つを主コードとして選択します
主キーと外部キーを組み合わせて、リレーショナル接続を表す手段を提供します
パラダイム
特定のレベルに準拠したリレーショナル スキーマのコレクション
正規形の種類: 1NF、2NF、3NF、BCNF、4NF、5NF
1NF
リレーショナル スキーマの属性は分離できなくなりました
1NF はリレーショナル モデルの最も基本的な要件です
2NF
プライマリ以外の 各属性はコードに完全に依存します
3NF
コード上の非プライマリ属性の推移的な依存関係 はありません。
射影分解
BCNF
BCNFは3NFを修飾したものです
X->Y で、Y が X に属さない場合、X には候補コードが含まれている必要があります (左側には候補コードが含まれます) 。
特徴: 1.非メイン属性は候補コードに完全に依存します。
2. main 属性は、それを含まない候補キーに完全に依存します。
3. NAND コードの属性セットに完全に依存する属性はない
R が 3NF に属し、R の候補コードが 1 つだけの場合、R は BCNF に属している必要があります。
R が BCNF に属する場合、関数の依存関係のカテゴリにおいて、スキーマの完全な分解が実現され、最高の仕様の標準化が達成されます。
関係の分解
分解された関係が自然結合を通じて元の関係を回復できる場合、データの損失はありません。
ロスレス接続: 分解された結果は、自然な接続による元の結果と等しくなります。情報の損失がないことを保証できるのは、ロスレス接続による分解のみです。
ロスレス接続では、分解されると元の関係の 機能依存関係が失われるため、挿入例外、削除例外、変更例外、データ冗長性などの問題を解決できない場合があります。
機能の依存関係を維持するスキーマ分解
リレーショナル スキーマの分解の判断: 1. 損失のない接続がある -> 情報の損失はない
2. 機能の依存関係を維持する -> 例外を軽減/解決する