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

Oracle 開發實務:核心資料表欄位設計規範與最佳實踐

     編輯:Oracle 資料庫基礎

前言

Oracle 功能強大,若使用不當將無法發揮效能優勢。本文整理實務開發中累積的資料表欄位設計經驗,涵蓋 WHO 欄位、狀態/有效期、邏輯刪除三大核心類別,供開發人員參考。

一、WHO 欄位:完整記錄資料異動軌跡

大型系統普遍採用 WHO 欄位進行審計追蹤,標準定義如下:

欄位名稱型別說明
LAST_UPDATE_DATEDATE最後修改日期
LAST_UPDATED_BYNUMBER(15)最後修改人 ID
CREATION_DATEDATE建立日期
CREATED_BYNUMBER(15)建立人 ID

設計重點

  • 建立人/時間:登入後將使用者 ID 寫入 CREATED_BY,系統時間(SYSDATE)寫入 CREATION_DATE,務必取自資料庫伺服器時間,避免客戶端時間不一致。
  • 最後修改人/時間:每次 UPDATE 同步更新 LAST_UPDATED_BY 與 LAST_UPDATE_DATE。
  • 限制:僅保留「最後一次」修改資訊,若需完整修改歷程,請另建稽核日誌表或啟用 Flashback Data Archive。

二、狀態與有效期欄位:靈活控管資料可見性

欄位名稱型別說明
STATUSNUMBER狀態:0=失效,1=有效
START_DATEDATE生效起始日期(可為 NULL,表示不限制)
END_DATEDATE生效結束日期(可為 NULL,表示不限制)

應用邏輯

  • STATUS:軟刪除/下架機制,0 表失效但資料保留,可透過管理功能恢復為 1。
  • START_DATE / END_DATE:時間區間控管,NULL 代表跳過該條件檢查,實現彈性上下架。
  • 查詢條件範例:
    WHERE status = 1
      AND (start_date IS NULL OR start_date <= SYSDATE)
      AND (end_date IS NULL OR end_date >= SYSDATE)

三、邏輯刪除:保留資料滿足合規與審計需求

對比物理刪除,邏輯刪除透過標記欄位保留資料,優點在於可追蹤、可恢復、不破壞參考完整性。

欄位名稱型別說明
DELETEDNUMBER刪除標記:0=正常,1=已刪除
DELETE_DATEDATE刪除時間(SYSDATE)
DELETED_BYNUMBER刪除人 ID

關鍵實作原則

  • 所有查詢必須加入 DELETED = 0 條件,否則會導致資料外洩嚴重錯誤。
  • 刪除操作實為 UPDATE,寫入三個欄位值。
  • 區別於「狀態欄位」:刪除標記意義為「對整個應用系統而言,此筆資料不存在」,不提供前台恢復入口,僅供後台審計查詢。

結語

標準化的欄位設計不僅利於團隊協作,更能從架構層面降低維護成本。建議將上述規範納入專案開發規範文件,並於 Code Review 階段強制檢查。

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