For Want Of A Better Word

正規化メモ

      2015/04/19

本当に、いまさらながら復習。メモ。
※第三正規刑まで。

[参考]:達人に学ぶDB設計

正規化とは

「データベースで保持するデータの冗長性を排除し、一貫性と効率性を保持するためのデータ形式」

  • 冗長性 = 一つの情報が複数のテーブルに散乱してしまっている。
  • 非一貫性 = 更新処理のタイムラグによって、データの不整合が発生したり、そもそもデータを登録することが出来ないようなテーブルを作ってしまう。
第一正規形
一つのセル(カラム)の中には、ひとつの値しか含まない。
  • 正規化時は、列では無く行でデータを分割することを推奨。
    • 行持ちは欠点が少ない。列持ちは分かりやすいけど、無用なNullや列の増減の対応が難しいというデメリットがある。
    • 双方の変換はSQL一発で出来るので、基本は拡張性の高い「行持ち」にして、性能問題などがあったら「列持ち」にすることを推奨、。
第二正規形
主キーの関数従属性を排除し完全関数従属の形式を作る。
  • 部分関数従属 = 主キーの一部の列に対して従属する列がある場合。
  • 完全関数従属 = 主キーを構成する全ての列に従属性がある場合 =これが出来れば第二正規化OK
  • メリット
    • 同じ値が複数行に登場しないようにすることで、データの一貫性を保つ。

※第二正規形を戻すのが結合(Inner Join)。

第三正規形
推移的関数従属を排除する。
  • 推移的関数従属 = テーブル内部に存在する段階的な従属関係のこと。

第二正規形で主キーに対して行ったことを、他の列にも適用させるってことだな。

 - db

  関連記事

mysql-logo
php5.1 apache2 連携用のdllファイル(php5apache2_2.dll)の取得

windowsでphp5.1をapache2で動かしたかったり、その逆の時とか、 …

mysql-logo
mysqlのログの種類と内容

[bashだけど参考。。] http://blog.livedoor.jp/my …

mysql-logo
xamppの旧バージョンダウンロード

案件ごとにいろんなphp apacheのバージョンを組み合わせるのが面倒臭い。 …

mysql-logo
mysqlnd

PHP5および6用のMySQLのネイティブドライバです。 mysqliで利用して …

mysql-logo
コマンドでmysqldump実行時にエラーが発生した場合もログに残す!

エラー出力は2なので、これもdumpに出すようにしてしまえばよい。 [crayo …