首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

資料庫邏輯結構設計:E-R 圖轉關係模型、範式優化與視圖設計全流程

     編輯:DB2 教學

資料庫邏輯結構設計: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, 供應量) — 聯系「供應」

三、關係模型優化(以範式理論為指導)

  1. 確定數據依賴:寫出每關係內部 FD、關係間 FD。
  2. 消除冗餘聯系:極小化 FD 集。
  3. 確定所屬範式:檢查部分 FD、傳遞 FD、多值依賴。
  4. 按應用需求合併/分解:並非範式越高越好,3NF 通常足夠;若高頻查詢需冗餘列(如平均分),可保留違反 3NF 的列換取效能。
  5. 分解方法:
    • 水平分解:按元組子集(滿足 80/20 原則、熱點隔離)。
    • 垂直分解:按屬性子集(減少行寬、隔離冷熱欄位)。

四、用戶子模式 (View) 設計

三大目標:

  1. 別名符合用戶習慣。
  2. **權限控制**:不同角色定義不同 View(如顧客只見產品號/名/價,銷售再見車間/負責人,領導全見)。
  3. 簡化操作:隱藏 Join、聚合複雜性。

五、邏輯設計小結清單

  • [ ] E-R 實體/屬性/碼/聯系 → 關係模式
  • [ ] 1:1/1:N/M:N/多元聯系正確轉換
  • [ ] 同碼合併、外鍵定義
  • [ ] FD 分析 → 範式判定 → 應用驅動合併/分解
  • [ ] View 定義:別名、權限、簡化
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved