正規化はデータをダブらないようにすること
今度はちょっと難関の正規化の話をしましょう。
テーブルの正規化は、RDBMS に重要な作業で、テーブルの設計をするときに使われる方法です。
基本は、
データを更新するときに、1か所だけ更新しましょう
ということで間違いないです。
ええと、英語で云えば、Normalize ですね。
# 「標準化」のほうがイメージが付きやすいのですが、数学用語の関係から「正規化」になっています。
さて、
一番基本の第一正規化の解説をしましょう。
まずは、これ、名前と年齢、趣味を書いた表です。
よく手帳のメモ欄に相手の趣味とかを書きますよね。そういう感じで、趣味を書き連ねます。
当たり前ですが、ひとりに「年齢」はひとつです。
逆に、趣味は、いくつあってもいいですよね。
このテーブルが最初の状態。正規化される前なので、
非正規形 と言います。
これを正規化する訳ですが、まず、趣味の欄をそれぞれの行にばらします。
そして、行を揃えます。
これが第一正規形です。
趣味の列が簡単になりましたよね。
Googleを支える巨大データベース
データベースと言えば、RDBMS が主流ですが、
最近は、key-value というデータベースも出てきています。
一番有名なのは、Google のデータベースですね。
Amazon.co.jp: Googleを支える技術 ‾巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ): 西田 圭介: 本
http://www.amazon.co.jp/dp/4774134325
key-value が何を示すかというと、
いわゆる、
ひとつのテーブルに主キーが付いている
と思えばよいです。
RDBMS の R は Relational の略なので、R の部分がないのですね。
この key-value のデータベース、どのような利点があるかと言うと、
分散データベースが作りやすいのです。
イメージ的にはこんな感じ。
おおもとの検索用サーバーにアクセスすると、小さなデータベースにアクセスして、検索結果を集めてきて、ユーザーに結果を返しますね。
リレーショナルは、交わり、内部結合で
さて、情報処理では、積結合(共通結合)、和結合という難しい用語を使いますが、
データベース業界では、
積結合 = 内部結合
という言い方をします。
対して
和結合 ≒ 外部結合
と考えてもいいですね。
# 「≒」となっているのは、ちょっとニュアンスが異なるので(苦笑)
内部結合は、
SELECT * FROM A, B
WHERE A.ID = B.ID
な感じで、AとBの両方ある場合。
もうちょっと正確に書くと
SELECT * FROM A, B
INNER JOIN A.ID = B.ID
という書き方になりますね。
外部結合は後日。