mysql最適化-データベース設計の基本原則
1842 ワード
mysql最適化-データベース設計の基本原則
一、データベース設計の三パターン
第1のパターン:フィールドに原子性原子性があるとは、データベースのすべてのフィールドが再分割できないことを意味します.次の表は原子性を満たしていません.開始フィールドと終了フィールドは、開始フィールドと終了フィールドの2つのフィールドに分割できます.
id
始点-終点
1
北京-上海
2
北京-広州
第2のパターン:プライマリ・キーに対する部分的な依存を解消することは、データベース・テーブルにおいて、フィールドAによってフィールドBを決定することができ、これをB対A依存と呼ぶ.部分依存とは、データベース・テーブル内のプライマリ・キーが複合プライマリ・キー(A,C)であり、BがA依存のみである場合を部分依存と呼ぶ.正しい方法は、ビジネス・ロジックに関係のない
第3のパターン:プライマリ・キーに対する伝達依存を解消する:BフィールドがAフィールドに依存し、CフィールドがBフィールドに依存する場合、CフィールドがAフィールドに伝達依存を構成する.
id
列車番号
席次
開始点
しゅうてん
1
D705
11車04号
北京
上海
2
K507
15車77号
北京
重慶
上の図に示すように、列車の始点と終点はいずれもメインキー
列車番号
開始点
しゅうてん
D705
北京
上海
K507
北京
重慶
(列が不適切で気にしないでください)
ここで注意すべきは、三パターンのうち、第二パターンを満たすものは必ず第一パターンを満たし、第三パターンを満たすものは必ず第一パターンと第二パターンを満たすことである.
二、データベースフィールドの設計原則
1.できるだけ整数を用いて文字列を表す整数数を用いて文字列を表すには、2つの利点がある.-->1.整数数が占める記憶空間は、一般的に文字列より小さい-->2.整数数の演算速度は速い.浮動小数点数を定点数で表す浮動小数点数はコンピュータに保存して演算すると歪みやすく、銀行金額のような精度が要求されるデータに対しては、定点数decimalを選択して記憶することができ、定義decimal(P,D)は整数位で最大P位、小数位で最大D位の定点数を作成することができる.3.できるだけ小さいデータ型4を使用する.空でないフィールド1の使用はできるだけ避ける.nullフィールドは
三、関連表の適用
mysqlの2つのテーブルの間には、3つの特殊な関係
一、データベース設計の三パターン
第1のパターン:フィールドに原子性原子性があるとは、データベースのすべてのフィールドが再分割できないことを意味します.次の表は原子性を満たしていません.開始フィールドと終了フィールドは、開始フィールドと終了フィールドの2つのフィールドに分割できます.
id
始点-終点
1
北京-上海
2
北京-広州
第2のパターン:プライマリ・キーに対する部分的な依存を解消することは、データベース・テーブルにおいて、フィールドAによってフィールドBを決定することができ、これをB対A依存と呼ぶ.部分依存とは、データベース・テーブル内のプライマリ・キーが複合プライマリ・キー(A,C)であり、BがA依存のみである場合を部分依存と呼ぶ.正しい方法は、ビジネス・ロジックに関係のない
id
プライマリ・キーを作成することであり、他のフィールドはプライマリ・キーに対して唯一の依存、すなわち第2のパターンの要件を満たすことである.第3のパターン:プライマリ・キーに対する伝達依存を解消する:BフィールドがAフィールドに依存し、CフィールドがBフィールドに依存する場合、CフィールドがAフィールドに伝達依存を構成する.
id
列車番号
席次
開始点
しゅうてん
1
D705
11車04号
北京
上海
2
K507
15車77号
北京
重慶
上の図に示すように、列車の始点と終点はいずれもメインキー
id
に部分的に依存する(始点、終点-->列車番号-->id)解決方法:分表し、伝達依存部分を単独で表を作成する.列車番号
開始点
しゅうてん
D705
北京
上海
K507
北京
重慶
(列が不適切で気にしないでください)
ここで注意すべきは、三パターンのうち、第二パターンを満たすものは必ず第一パターンを満たし、第三パターンを満たすものは必ず第一パターンと第二パターンを満たすことである.
二、データベースフィールドの設計原則
1.できるだけ整数を用いて文字列を表す整数数を用いて文字列を表すには、2つの利点がある.-->1.整数数が占める記憶空間は、一般的に文字列より小さい-->2.整数数の演算速度は速い.浮動小数点数を定点数で表す浮動小数点数はコンピュータに保存して演算すると歪みやすく、銀行金額のような精度が要求されるデータに対しては、定点数decimalを選択して記憶することができ、定義decimal(P,D)は整数位で最大P位、小数位で最大D位の定点数を作成することができる.3.できるだけ小さいデータ型4を使用する.空でないフィールド1の使用はできるだけ避ける.nullフィールドは
null
とis not null
以外の演算に参加できません.nullの記憶には追加の空間5が必要である.フィールドの注釈は完全で、フィールド名は論理的な意味を持つ6.単表フィールドは多すぎるべきではない.予約フィールドの使用三、関連表の適用
mysqlの2つのテーブルの間には、3つの特殊な関係
,
,
,対応する3対の同名関連テーブルが存在することができる.1.一対の複数の関連テーブル------通常、関連外部キーは複数の側に設定.複数対の複数の関連テーブル------中間テーブルを作成することにより、2つのテーブルのプライマリ・キー間の対応関係を格納する.中間表と2枚の実体表はそれぞれ2つの一対多の関係を形成する.3.一対一の関連表------一対一の関連関係は、直接一枚の表で記憶することができる.しかし、表中のフィールド数が多すぎる場合や一部のフィールドが一般的でない場合は、2つの表が同じプライマリ・キーを共有することを考慮することができる.