テーブル
データベースのデータは「テーブル」という入れ物に入っています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
=w=)
最終更新:2010年07月19日 01:33