Abstract#
システムを設計する際にエンティティ分析した結果得られたクラス図などは、まだ概念的なもので、実際にRDBに落とし込む時にそのままではできないことが多い。Many to Manyの関係など特にそうである。その際、このDBの正規化という作業が必要になる。ここでは、その手順について、簡単に記録したい。Topic#
それぞれの詳しい説明は、WEB上に転がっているので[2]、ココは自分の理解だけを書きます。この情報があれば、より正規化が理解しやすくなるかも。- 第1
一つのマスに複数の値が入っているなら、それを別のレコードにする。そして、プライマリーキー(複数になることが多そう)を定義する([Hoffer et al 2007], 215)。まあ、ココは直感的。 |
- 第2
第2と第3の区別は自分には、なかなか難しく、まだうまく理解できていません。どうも、部分関数従属を取り除く。らしいです([Hoffer et al 2007], 217)。さて、このPartial functional dependencyですが、DBのPrimary Key、主キーから関数的に従属している関係のようです([Hoffer et al 2007], 217)。ということは、主キーが一つしかないテーブルは、この第二正規化では、あまり変わらないんじゃないかと理解しています。主キーが2つ以上のAttributeで構成される場合に、その二つの主キーそれぞれに部分関数従属な属性が同一テーブル内にまだあれば、たぶん3つのデータベースに分解されます。この主キーが2つあるテーブルは、実際にDBを作ってみるとよく出てきます。 |
- 第3
どうも、推移的関数従属を取り除くらしいです([Hoffer et al 2007], 218)。このTransitive functional dependencyですが、主キーでないAttribute、から、関数的に従属していることを言います([Hoffer et al 2007], 218)。当然、主キーが一つのDBでもこれによるテーブルの分解は起こりえます。 |
Reference#
- [#1]Hoffer, Jeffrey A., Mary B. Prescott, and Fred R. McFadden. 2007. Modern database management. 8th ed. Upper Saddle River, N.J.: Pearson/ Prentice Hall.
- [#2]Wikipedia contributors, "リレーションの正規化," Wikipedia, , http:ja.wikipedia.org_w_index.php?title=%E3%83%AA%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E6%AD%A3%E8%A6%8F%E5%8C%96&oldid=24463496 (accessed 4月 13, 2009].