【RDB】関係スキーマとキー - 関係スキーマの表記ルールとキーの種類
関係スキーマとキーはデータベース設計に関わる重要な項目です。
ここでは関係スキーマとキーについて解説します。
関係スキーマ
関係スキーマは“関係名とその属性を示したモノ”です。
イメージとしては、表形式のデータ構造をテキストによって示したモノになります。
関係スキーマの表記ルールは次の形式です。
関係名(属性1,属性2 ...)
例えば、商品価格(店名,住所,商品名,価格)
のように表記します。
表形式のデータ構造に照らし合わせると、関係名は表名、属性は列名に一致し、次のような表の構造となります。
店名 | 住所 | 商品名 | 価格 |
---|---|---|---|
ABC店 | 東京都〇〇区●● | りんご | ¥150 |
ABC店 | 東京都〇〇区●● | みかん | ¥80 |
XYZ店 | 神奈川県〇〇市●● | メロン | ¥2,500 |
XYZ店 | 神奈川県〇〇市●● | みかん | ¥100 |
キー
キーは“意味を持つ属性の集合”です。
表記方法は次のように属性を波括弧で括り、属性が複数ある場合はカンマ(,)で区切ります。
{属性1,属性2 ...}
キーには『スーパーキー』や『候補キー』、『主キー』、『外部キー』などの種類があり、次のように表記します。
スーパーキー
スーパーキーは“データ(1行)を一意に識別するキー(複数可)”です。
多数の属性の組み合わせで表現でき、上記の商品価格でのスーパーキーの例は次のようになります。
{店名,住所,商品名,価格}
{店名,住所,商品名}
{店名,商品名}
{住所,商品名}
- ...
候補キー
候補キーは“データ(1行)を一意に識別する属性数が最小のキー(複数可)”です。
属性数が最小のスーパーキーと同じになり、次のようになります。
{店名,商品名}
{住所,商品名}
主キー
主キーは“データ(1行)を一意に識別するキー”です。
候補キーから最も適したキーを選び決定します。
例えば、{店名,商品名}
です。
ただし、一般的にはデータを識別するためにIDを割り振り、IDを主キーとする方法が用いられます。
主キーは『PK』(Primary Key)と略称表記されることがあり、属性名の下に実線を引いて表現します。
商品価格( ID , 店名 , 住所 , 商品名 , 価格 )
外部キー
外部キーは“別属性を参照するキー”です。
例えば、商品価格を店舗と商品の2つに分けます。
店舗(ID,店名,住所)
商品(店舗ID,名前,価格)
ID | 店名 | 住所 |
---|---|---|
0001 | ABC店 | 東京都〇〇区●● |
0002 | XYZ店 | 神奈川県〇〇市●● |
店舗ID | 名前 | 価格 |
---|---|---|
0001 | りんご | ¥150 |
0001 | みかん | ¥80 |
0002 | メロン | ¥2,500 |
0002 | みかん | ¥100 |
商品の店舗ID属性は店舗のID属性を参照する外部キーとすることができます。
外部キーは参照先の属性値のみを持てることを想定し、このようにすることで、IDに基づいて、店舗情報と商品情報を識別することが可能です。
また、外部キーは『FK』(Foreign Key)と略称表記されることがあり、属性の下に破線を引いて表現します。
店舗( ID , 店名 , 住所 )
商品( 店舗ID , 名前 , 価格 )