非正規テーブルを段階的に正規化する解法
非正規テーブルを段階的に正規化する問題。関数従属を見抜き、どの列がどの列を決定するかを分析する能力が問われる。
| 受注ID | 商品ID | 商品名 | 単価 | 顧客ID | 顧客名 | 数量 |
|---|---|---|---|---|---|---|
| 001 | P01 | ノートPC | 80000 | C01 | 山田 | 2 |
| 001 | P02 | マウス | 2000 | C01 | 山田 | 3 |
| 従属関係 | 種類 |
|---|---|
| {受注ID, 商品ID} → 数量 | 完全関数従属(主キーに依存)✅ |
| 商品ID → 商品名, 単価 | 部分関数従属(商品IDだけで決まる)❌ |
| 受注ID → 顧客ID | 部分関数従属(受注IDだけで決まる)❌ |
| 顧客ID → 顧客名 | 推移関数従属(非キー列が決定)❌ |
| テーブル | 列 |
|---|---|
| 受注明細 | 受注ID, 商品ID, 数量 |
| 商品 | 商品ID, 商品名, 単価 |
| 受注 | 受注ID, 顧客ID |
| 顧客 | 顧客ID, 顧客名 |
読了ボタンを押すとトップページの進捗に反映されます