アットウィキロゴ

3.リレーショナルデータベース

テーブル

データベースのデータは「テーブル」という入れ物に入っていますw
テーブルは表みたいなものですw

Amazonのようなショッピングサイトであれば、以下のように顧客の情報は顧客テーブルにデータを入れ、商品の情報は商品テーブルに入れ、顧客が注文した商品の情報は注文テーブルにデータを入れますw

顧客テーブル
ユーザID 名前 住所
tarou 太郎 東京都1丁目
zirou 次郎 北海道2丁目
hanako 花子 福岡県3丁目

商品テーブル
商品番号 商品名 価格
0001 薬草 10円
0002 聖水 30円
0003 銅の剣 100円

注文テーブル
注文番号 ユーザID 商品番号
1 tarou 0001
2 tarou 0003
3 hanako 0002
4 zirou 0001

上記を見ると分かりますが、ユーザIDや商品番号でテーブル間が関連を持っていますwこの関係をリレーションシップと呼びますw
図にすると、以下のような感じですwこういう実態(データ:Entity)と関連(Relationship)の図をER図(EntityRelation図)と呼びますw

主キー(PrimaryKey)

テーブルの中でデータを一意に特定できる列を主キーと呼びますw
顧客テーブルであれば、ユーザIDですw
商品テーブルであれば、商品番号ですw
例えば、とある顧客のユーザIDが「tarou」と分かれば、その顧客の氏名も住所も分かりますw

外部キー

主キーではないが、外部のテーブルと関連を持つキーとなる列を外部キーと呼びますw
注文テーブルでのユーザIDと商品番号が外部キーとなりますw

正規化

上記の3つのテーブルは実はわざわざ3に分けなくても、実は1つのテーブルで実現可能であることはお気づきでしょうか?

注文顧客テーブル
注文者名 注文者住所 注文商品名 価格
太郎 東京都1丁目 薬草 10円
太郎 東京都1丁目 銅の剣 100円
花子 福岡県3丁目 聖水 30円
次郎 北海道2丁目 薬草 10円

上のようなテーブルを一つ作れば、表現できますw
しかし、このようなテーブルだと、顧客の住所が変更になった場合、2箇所を書き換えなければなりませんw
同じデータを二重も持つので、データ量も増えますw
また、顧客情報を別のテーブルでも使用している可能性もありますw

このような理由から1つに出来るテーブルでもシステムの都合の良い形にテーブルを分割していきますw
分割しておけば、データの更新は一箇所で良く、データを読むときだけ、注文顧客テーブルの形にして取得しますw
どこまで分割するかはシステムの挙動に応じて、考える必要がありますw
ですので、画面設計や機能設計など、システムの動きを考えるレベルの設計と同時にテーブルを設計していきますw

リレーショナルデータベース(関係データベース)

このようにデータを詰め込むテーブルとその関係性でデータを管理するデータベースをリレーショナルデータベースと呼びますw

4.リレーショナルデータベース@その2」へ
(最終更新日:2010年7月6日)












=w=)
最終更新:2010年07月19日 01:33
添付ファイル