資料庫邏輯結構設計:E-R 圖轉關係模型、範式優化與視圖設計全流程
邏輯設計任務:將概念設計的 E-R 圖轉換為目標 DBMS 支持的邏輯模型(關係/網狀/層次),並經優化、視圖設計得到最終 Schema。
一、E-R 圖向關係模型轉換規則
| 聯系類型 | 轉換方式 | 主鍵確定 |
| 1:1 | 獨立關係 或與任一端合併 | 任一端主鍵均為候選鍵 |
| 1:N | 獨立關係 或與 N 端合併 | N 端主鍵為關係主鍵 |
| M:N | **必須**轉為獨立關係 | 雙方主鍵組合為主鍵 |
| 多元 (>=3) | 轉為獨立關係 | 所有參與實體主鍵組合 |
合併原則:同碼關係可合併,減少關係數;但需權衡查詢 Join 成本(如常查班級-班主任,宜合併「管理」與「教師」)。
二、實例:部門-職工-產品-供應商 E-R 轉換
- 部門(部門號PK, 部門名, 經理工號FK→職工)
- 職工(職工號PK, 部門號FK, 姓名, 職務)
- 產品(產品號PK, 產品名, 組長工號FK→職工)
- 供應商(供應商號PK, 姓名)
- 零件(零件號PK, 零件名)
- 職工工作(職工號FK, 產品號FK, 工作天數) — 聯系「參加」
- 供應(產品號FK, 供應商號FK, 零件號FK, 供應量) — 聯系「供應」
三、關係模型優化(以範式理論為指導)
- 確定數據依賴:寫出每關係內部 FD、關係間 FD。
- 消除冗餘聯系:極小化 FD 集。
- 確定所屬範式:檢查部分 FD、傳遞 FD、多值依賴。
- 按應用需求合併/分解:並非範式越高越好,3NF 通常足夠;若高頻查詢需冗餘列(如平均分),可保留違反 3NF 的列換取效能。
- 分解方法:
- 水平分解:按元組子集(滿足 80/20 原則、熱點隔離)。
- 垂直分解:按屬性子集(減少行寬、隔離冷熱欄位)。
四、用戶子模式 (View) 設計
三大目標:
- 別名符合用戶習慣。
- **權限控制**:不同角色定義不同 View(如顧客只見產品號/名/價,銷售再見車間/負責人,領導全見)。
- 簡化操作:隱藏 Join、聚合複雜性。
五、邏輯設計小結清單
- [ ] E-R 實體/屬性/碼/聯系 → 關係模式
- [ ] 1:1/1:N/M:N/多元聯系正確轉換
- [ ] 同碼合併、外鍵定義
- [ ] FD 分析 → 範式判定 → 應用驅動合併/分解
- [ ] View 定義:別名、權限、簡化