 
        【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 , 名前 , 価格 )
 
         
        ![【コマンドライン】ユーザーのグループ確認 [ groups ]](https://it-hack.net/storage/app/media/document/development/os/command/groups/thumbnail_0001.png) 
        ![【コマンドライン】ユーザー・グループの確認 [ getent ]](https://it-hack.net/storage/app/media/document/development/os/command/getent/thumbnail_0001.png) 
         
         
         
         
         
         
         
        