首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 資料庫設計 14 大實戰技巧:從 ER 圖到效能優化的完整指南

     編輯:Java 相關知識

前言

本文彙整大量實務專案經驗,提煉 14 項資料庫分析與設計核心技巧。讀者須消化理解、靈活運用,切勿生搬硬套,做到「在應用中發展,在發展中應用」。

技巧詳細解析

1. 原始單據與實體對應關係

通常為一對一;特殊情況為一對多或多對一。明確對應關係有助於設計錄入介面。
例: 員工履歷單對應三張基本表(基本資料、社會關係、工作簡歷)。

2. 主鍵與外鍵設計哲學

葉子實體可無主鍵但必有外鍵。專家名言:「鍵,到處都是鍵,除了鍵之外,什麼也沒有。」主鍵是實體高度抽象,主外鍵配對代表實體連接。

3. 基本表四大特性

  • 原子性:欄位不可再分解
  • 原始性:記錄基礎原始資料
  • 演繹性:配合代碼表可推導所有輸出資料
  • 穩定性:結構相對穩定,資料長期保存

掌握特性才能區分基本表、中間表、暫存表。

4. 范式標準與效能權衡

基本表盡量滿足 3NF,但為效率常需降低範式、適當增加冗余(以空間換時間)。
例: 商品表保留「金額」冗余欄位(單價×數量),Rose 2002 稱之為「計算欄位」。

5. 三大範式通俗理解

  • 1NF:屬性原子性,不可再分
  • 2NF:記錄唯一性,實體唯一標識
  • 3NF:欄位無冗余,不可由其他欄位推導

策略:概念模型遵循 3NF,物理模型階段再降低範式、保留冗余。

6. 識別與處理多對多關係

引入第三個實體轉為兩個一對多。
例: 「圖書」與「讀者」間引入「借還書」實體,含借還時間、標誌、兩個外鍵。

7. 主鍵取值策略

推薦無物理意義的自動遞增數字串;組合主鍵欄位數越少越好(索引空間小、速度快)。

8. 正確認知資料冗余

  • 主外鍵重複 ≠ 冗密
  • 非鍵欄位重複 = 低級冗余(重複性),易導致不一致
  • 欄位推導產生 = 高級冗余(演繹性),為提速刻意保留,提倡高級、反對低級

9. ER 圖無標準答案

覆蓋業務範圍與功能即可行。好 ER 圖標準:結構清晰、關聯簡潔、實體適中、屬性分配合理、無低級冗余。

10. 視圖技術的戰略價值

虛表,依賴實表。用途:程式員存取窗口、資料綜合形式、處理方法、資料保密手段。定義深度 ≤ 3 層;機密系統採「視圖隔離」策略:程式員僅操作視圖,DBA 持「安全鑰匙」操作基本表。

11. 中間表、報表、暫存表定位

中間表:統計/資料倉庫/報表輸出,DBA 維護。暫存表:程式員個人用,程式自動維護。

12. 完整性約束三維度

  • 域完整性:CHECK 限制欄位取值範圍
  • 參照完整性:PK/FK/表級觸發器
  • 使用者定義完整性:業務規則,用預存程序/觸發器實現

13. 「三少原則」防補丁式設計

  • 表數越少越好 → ER 圖少而精,資料集成度高
  • 組合主鍵欄位越少越好 → 節省索引空間與查詢時間
  • 表欄位數越少越好 → 避免資料重複,督促「列變行」建立子表

「三少」是整體觀,非絕對。資料集成層次:檔案系統→應用資料庫→主題資料庫→全域綜合資料庫。防止資料庫變「垃圾堆」或「大雜院」導致系統癱瘓。

14. 提升資料庫執行效率五大層面

  1. 物理設計降範式、增冗余、少觸發器、多預存程序
  2. 超大量複雜運算(如千萬筆)先在資料庫外用 C++ 處理完再入庫(電信計費經驗)
  3. 水平分割(記錄超千萬按主鍵切分)、垂直分割(欄位超 80 切分)
  4. DBMS 系統參數優化(緩衝區等)
  5. SQL 程式設計採優化演算法

總結:須從系統級、設計級、實作級三層次同步優化。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved