Oracle 功能強大,若使用不當將無法發揮效能優勢。本文整理實務開發中累積的資料表欄位設計經驗,涵蓋 WHO 欄位、狀態/有效期、邏輯刪除三大核心類別,供開發人員參考。
大型系統普遍採用 WHO 欄位進行審計追蹤,標準定義如下:
| 欄位名稱 | 型別 | 說明 |
|---|---|---|
| LAST_UPDATE_DATE | DATE | 最後修改日期 |
| LAST_UPDATED_BY | NUMBER(15) | 最後修改人 ID |
| CREATION_DATE | DATE | 建立日期 |
| CREATED_BY | NUMBER(15) | 建立人 ID |
| 欄位名稱 | 型別 | 說明 |
|---|---|---|
| STATUS | NUMBER | 狀態:0=失效,1=有效 |
| START_DATE | DATE | 生效起始日期(可為 NULL,表示不限制) |
| END_DATE | DATE | 生效結束日期(可為 NULL,表示不限制) |
WHERE status = 1
AND (start_date IS NULL OR start_date <= SYSDATE)
AND (end_date IS NULL OR end_date >= SYSDATE)
對比物理刪除,邏輯刪除透過標記欄位保留資料,優點在於可追蹤、可恢復、不破壞參考完整性。
| 欄位名稱 | 型別 | 說明 |
|---|---|---|
| DELETED | NUMBER | 刪除標記:0=正常,1=已刪除 |
| DELETE_DATE | DATE | 刪除時間(SYSDATE) |
| DELETED_BY | NUMBER | 刪除人 ID |
DELETED = 0 條件,否則會導致資料外洩嚴重錯誤。標準化的欄位設計不僅利於團隊協作,更能從架構層面降低維護成本。建議將上述規範納入專案開發規範文件,並於 Code Review 階段強制檢查。