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

Oracle 9i 建表實戰範例:ERP 系統核心表結構設計與 SQL 手寫最佳實務

     編輯:Oracle 資料庫基礎

開發環境與工具選擇

  • Command Window 直寫 SQL:建議初學者多手寫,深入掌握語法與錯誤訊息
  • SQL Window/圖形工具:適合複雜 DDL 生成、版本控管、團隊協作
  • PowerDesigner 等建模工具:邏輯/物理模型設計、自動生成腳本、逆向工程

CREATE TABLE 語法完整骨架


CREATE TABLE [schema.]table_name (
  column_name datatype [DEFAULT expr] [inline_constraint] ...
  [, table_constraint] ...
)
[segment_attributes_clause]
[table_properties] ... ;

核心子句詳細說明

子句用途範例
column_definition定義欄位名、資料型態、預設值、行內約束empno NUMBER(4) PRIMARY KEY
DEFAULT指定插入時預設值hiredate DEFAULT SYSDATE
IDENTITY (12c+)自動遞增欄位id NUMBER GENERATED ALWAYS AS IDENTITY
ROWGUIDCOL標識全域唯一識別欄配合 SYS_GUID()
table_constraint表級約束(PK、FK、UK、CHECK)CONSTRAINT fk_dept FOREIGN KEY (deptno) REFERENCES dept(deptno)
ON {filegroup|DEFAULT}指定儲存檔案群組(SQL Server 語法,Oracle 用 TABLESPACE)Oracle 對應 TABLESPACE users
TEXTIMAGE_ONLOB 資料儲存位置(SQL Server)Oracle 用 LOB (col) STORE AS (TABLESPACE lob_ts)

ERP 核心表設計範例:採購訂單主檔


CREATE TABLE po_headers_all (
  po_header_id      NUMBER(15)    NOT NULL,
  segment1          VARCHAR2(20)  NOT NULL,  -- 訂單號
  vendor_id         NUMBER(15)    NOT NULL,
  org_id            NUMBER(15)    NOT NULL,
  creation_date     DATE          DEFAULT SYSDATE NOT NULL,
  created_by        NUMBER(15)    NOT NULL,
  last_update_date  DATE          DEFAULT SYSDATE NOT NULL,
  last_updated_by   NUMBER(15)    NOT NULL,
  approval_status   VARCHAR2(25)  DEFAULT 'INCOMPLETE',
  CONSTRAINT po_headers_pk PRIMARY KEY (po_header_id) USING INDEX TABLESPACE po_idx,
  CONSTRAINT po_headers_u1 UNIQUE (segment1, org_id) USING INDEX TABLESPACE po_idx,
  CONSTRAINT po_headers_fk_vendor FOREIGN KEY (vendor_id) REFERENCES ap_suppliers(vendor_id),
  CONSTRAINT po_headers_fk_org FOREIGN KEY (org_id) REFERENCES hr_operating_units(organization_id)
)
TABLESPACE po_data
PCTFREE 10
PCTUSED 40
INITRANS 2
MAXTRANS 255
STORAGE (INITIAL 64K NEXT 1M MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0)
LOB (notes) STORE AS (TABLESPACE po_lob CHUNK 8K CACHE);

設計原則檢查清單

  1. 命名規範:表 _ALL/_TL/_B 後綴、欄位 _ID/_DATE/_FLAG 後綴
  2. 主鍵策略:代理鍵 + 業務唯一鍵雙重保障
  3. 審計欄位:CREATED_BY/CREATION_DATE/LAST_UPDATED_BY/LAST_UPDATE_DATE 四大金剛
  4. 外鍵索引:所有 FK 欄位**必須**建立索引
  5. 分區策略:大表按日期/機構範圍分區
  6. LOB 獨立表空間:隔離大物件 I/O 影響
  7. 壓縮/加密:歷史分區啟用 COMPRESS FOR QUERY HIGH、敏感欄 ENCRYPT

手寫 SQL 的三大收穫

  1. 精準掌握每個關鍵字語義與副作用
  2. 除錯時能直接閱讀/修改腳本,不依賴工具生成代碼
  3. Code Review 時可發現工具生成的隱性問題(如缺少索引、錯誤表空間)

建表是資料庫物件生命週期的起點,嚴謹的 DDL 設計能為後續效能、維護、擴展節省十倍成本。請從今天開始,手寫您的每一個 CREATE TABLE。

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