FSTS 邏輯資料模型(新系統)
V1.0 呈核版。定義新一代複委託系統資料模型基線,作為資料庫設計、程式開發、介接欄位定義、資料移轉與稽核追蹤之共同依據。1
與既有 FSTS DB Schema 的區別:
- FSTS DB Schema(PDM_FSTS) — 現況:基於 COBOL FD 轉檔的 14 個 MSSQL 表(
FSIO、FHIO、CUST 等)
- 本頁 — 未來目標:新系統 8 大資料域、17 個主幹表的邏輯模型(
TRD_ORDER、TRD_EXECUTION、AST_POSITION 等)
兩者在資料移轉(資料移轉計畫)時對映,詳見 §九 資料移轉欄位要求。回到 Planning 總覽。
文件目的
1
本文件重點不在列舉所有最終欄位,而在先建立:
- 正確的資料主體
- 主外鍵關係
- 欄位命名規範
- 核心索引策略
- 稽核追蹤欄位標準
平台前提:MSSQL / .NET Core / UNIX(Linux)。編製單位:凌群電腦/專案規劃團隊。
五條設計原則
2
- 以「客戶-帳戶-商品-市場-委託-成交-交割-資產-會計」為主幹,不以舊系統畫面欄位直接決定資料結構
- 主檔與交易檔分離、即時資料與歷史資料分離、業務表與稽核/介接表分離
- 所有關鍵交易表均需具備不可變主鍵、業務版本號、稽核欄位與來源追蹤欄位
- 多市場、多幣別、多時區為預設,不可把 TW/US 單一市場規則硬寫進欄位
- 資料模型需支援平行測試、重跑、重算與切換回復,因此事件表與快照表要並存
8 大邏輯資料域
34
| 邏輯資料域 | 主要資料表 | 與其他資料域之關係 | 重要性 |
|---|
| Master | CUS_CUSTOMER/CUS_ACCOUNT/PRD_SECURITY/MKT_MARKET | 作為所有交易、交割、報表共用主體 | 最高 |
| Order Mgmt | TRD_ORDER/TRD_ORDER_EVENT | 承接前台、FIX、風控與稽核 | 最高 |
| Execution | TRD_EXECUTION/TRD_ALLOCATION | 承上啟下連到清算與費用 | 最高 |
| Position & Cash | AST_CASH_BALANCE/AST_POSITION/AST_BUYING_POWER | 下單前風控與客戶資產查詢 | 最高 |
| Settlement | STL_TRADE_SETTLEMENT/STL_CASH_FLOW/FEE_CHARGE | 形成應收應付與會計基礎 | 最高 |
| Corp Action | CA_EVENT/CA_ALLOCATION | 影響客戶權益與庫存 | 高 |
| Integration | INT_MESSAGE_LOG/INT_FIX_SESSION | 支撐多上手多介接治理 | 最高 |
| Audit & Compliance | SEC_AUDIT_LOG/SEC_APPROVAL_TASK | 法遵、遮罩、四眼原則 | 最高 |
17 個核心資料表
56
主資料(Master)
| 表名 | 中文名稱 | 主鍵 | 重要 FK | 優先級 | 備註 |
|---|
MKT_MARKET | 市場主檔 | market_id | — | P0 | 市場、時區、預設幣別、交易日 |
MKT_EXCHANGE | 交易所主檔 | — | — | P0 | 交易所與市場關聯(僅 12 列出;13 未展開) |
PRD_SECURITY | 商品主檔 | security_id | market_id | P0 | 股票/ETF/ADR/債券/基金 |
CUS_CUSTOMER | 客戶主檔 | customer_id | — | P0 | KYC/QI 法遵屬性 |
CUS_ACCOUNT | 客戶帳戶主檔 | account_id | customer_id | P0 | 一客多帳、交割屬性、通路權限 |
ORG_BRANCH | 分公司主檔 | — | — | P1 | 分公司/營業員歸屬(僅 12 列出) |
交易(Order / Execution)
| 表名 | 中文名稱 | 主鍵 | 重要 FK | 優先級 | 備註 |
|---|
TRD_ORDER | 委託主檔 | order_id | account_id、security_id | P0 | OMS 核心;新單/改單/刪單 |
TRD_ORDER_EVENT | 委託事件檔 | order_event_id | order_id | P0 | 狀態流轉與稽核留痕 |
TRD_EXECUTION | 成交檔 | exec_id | order_id | P0 | FIX/執行回報 |
TRD_ALLOCATION | 成交分配檔 | — | — | P1 | 母子單、客戶分配、均價分攤(僅 12 列出) |
風控資產
| 表名 | 中文名稱 | 主鍵 | 重要 FK | 優先級 | 備註 |
|---|
AST_CASH_BALANCE | 現金餘額 | cash_balance_id | account_id | P0 | 多幣別、圈存、未交割 |
AST_POSITION | 庫存檔 | position_id | account_id、security_id | P0 | 持股、可賣、成本 |
AST_BUYING_POWER | 可交易額度快照 | — | — | P0 | 下單前風控/授信試算(僅 12 列出) |
清算帳務
| 表名 | 中文名稱 | 主鍵 | 重要 FK | 優先級 | 備註 |
|---|
STL_TRADE_SETTLEMENT | 清算檔 | settlement_id | exec_id | P0 | 成交轉交割;應收應付 |
STL_CASH_FLOW | 現金流水 | — | — | P0 | 入出金、款、退款(僅 12 列出) |
FEE_CHARGE | 費用檔 | charge_id | exec_id | P0 | 手續費、上手費、稅費;費率引擎 |
企業行動
| 表名 | 中文名稱 | 主鍵 | 重要 FK | 優先級 | 備註 |
|---|
CA_EVENT | 公司行動主檔 | ca_event_id | security_id | P1 | 配息、拆股、合併、收購 |
CA_ALLOCATION | 公司行動分派 | ca_alloc_id | ca_event_id、account_id | P1 | 客戶權益分派與通知 |
介接 / 稽核 / 會計報表
| 表名 | 中文名稱 | 主鍵 | 重要 FK | 優先級 | 備註 |
|---|
INT_MESSAGE_LOG | 介接訊息日誌 | message_log_id | — | P0 | FIX/API/SFTP 收送追蹤 |
INT_FIX_SESSION | FIX Session 狀態 | fix_session_id | — | P0 | 序號、連線、健康狀態 |
SEC_AUDIT_LOG | 稽核紀錄 | audit_log_id | — | P0 | 誰在何時改了什麼;不可否認 |
SEC_APPROVAL_TASK | 覆核工作單 | — | — | P1 | 四眼原則與簽核軌跡(僅 12 列出) |
ACC_GL_ENTRY | 會計分錄檔 | gl_entry_id | source_txn_id | P1 | 來源交易轉分錄;總帳介接 |
RPT_STATEMENT_QUEUE | 報表製作佇列 | — | — | P2 | 月結單/通知派送(僅 12 列出) |
核心主外鍵關係定義
7
| 父鍵 | 子鍵 | 關係 | 說明 |
|---|
CUS_CUSTOMER.customer_id | CUS_ACCOUNT.customer_id | 1:N | 一位客戶可對應多個複委託帳戶 |
MKT_MARKET.market_id | PRD_SECURITY.market_id | 1:N | 市場與商品關聯 |
CUS_ACCOUNT.account_id | TRD_ORDER.account_id | 1:N | 帳戶提出多筆委託 |
TRD_ORDER.order_id | TRD_ORDER_EVENT.order_id | 1:N | 委託狀態事件流 |
TRD_ORDER.order_id | TRD_EXECUTION.order_id | 1:N | 委託對應多筆成交 |
TRD_EXECUTION.exec_id | FEE_CHARGE.exec_id | 1:N | 成交衍生費用與稅費 |
TRD_EXECUTION.exec_id | STL_TRADE_SETTLEMENT.exec_id | 1:1/N | 成交轉清算,可拆多腿 |
CUS_ACCOUNT.account_id | AST_CASH_BALANCE.account_id | 1:N | 帳戶別幣別餘額 |
CUS_ACCOUNT.account_id | AST_POSITION.account_id | 1:N | 帳戶持股明細 |
CA_EVENT.ca_event_id | CA_ALLOCATION.ca_event_id | 1:N | 公司行動對客戶分派 |
欄位命名規範與共通欄位
8
命名規則
- 主鍵一律使用
*_id,採不可變 Surrogate Key;對外業務編號另設 *_no
- 日期/時間:
*_dt(日期)、*_ts(時間戳);交易時間另保留來源時區
- 狀態碼:
*_status_cd;理由/原因:*_reason_cd;布林值:is_* 或 has_*
- 所有核心表均標準帶入稽核欄位:
create_ts、create_by、update_ts、update_by、source_system、batch_no、version_no、is_deleted
共通欄位型別
8
| 欄位 | 型別建議 | 適用範圍 | 用途 |
|---|
customer_id | BIGINT | 主/交易 | 客戶主鍵 |
account_id | BIGINT | 主/交易 | 帳戶主鍵 |
security_id | BIGINT | 主/交易 | 商品主鍵 |
market_id | VARCHAR(20) | 主 | 市場代碼 |
order_no | VARCHAR(40) | 交易 | 業務委託編號 |
exec_no | VARCHAR(40) | 交易 | 業務成交編號 |
biz_dt | DATE | 交易/報表 | 業務日 |
trade_ts | DATETIME2(3) | 交易 | 交易時間戳 |
ccy_cd | CHAR(3) | 主/帳務 | 幣別 ISO Code |
amount_amt | DECIMAL(19,6) | 帳務 | 金額欄位 |
qty | DECIMAL(19,6) | 交易/資產 | 數量欄位 |
price_amt | DECIMAL(19,8) | 交易 | 價格欄位 |
version_no | INT | 核心表 | 樂觀鎖/版本控管 |
核心資料表欄位範本
9
TRD_ORDER
| 欄位 | 型別 | 說明 |
|---|
order_id | BIGINT PK | 內部主鍵 |
order_no | VARCHAR(40) UQ | 業務委託編號 |
account_id | BIGINT FK | 客戶帳戶 |
security_id | BIGINT FK | 商品主檔 |
side_cd | CHAR(1) | 買/賣 |
order_type_cd | VARCHAR(20) | 委託型態 |
limit_price_amt | DECIMAL(19,8) | 委託價格 |
order_qty | DECIMAL(19,6) | 委託數量 |
order_status_cd | VARCHAR(20) | 委託狀態 |
source_channel_cd | VARCHAR(20) | 通路來源 |
route_broker_id | VARCHAR(30) | 上手/路由 |
orig_order_id | BIGINT | 改單原始主鍵 |
trade_ts | DATETIME2(3) | 委託時間 |
TRD_EXECUTION
| 欄位 | 型別 | 說明 |
|---|
exec_id | BIGINT PK | 成交主鍵 |
exec_no | VARCHAR(40) UQ | 成交編號 |
order_id | BIGINT FK | 來源委託 |
exec_qty | DECIMAL(19,6) | 成交數量 |
exec_price_amt | DECIMAL(19,8) | 成交價格 |
exec_ts | DATETIME2(3) | 成交時間 |
exec_status_cd | VARCHAR(20) | 成交狀態 |
counterparty_cd | VARCHAR(30) | 上手/執行來源 |
STL_TRADE_SETTLEMENT
| 欄位 | 型別 | 說明 |
|---|
settlement_id | BIGINT PK | 清算主鍵 |
exec_id | BIGINT FK | 來源成交 |
settle_dt | DATE | 交割日 |
gross_amt | DECIMAL(19,6) | 成交總額 |
fee_amt | DECIMAL(19,6) | 手續費 |
tax_amt | DECIMAL(19,6) | 稅費 |
net_amt | DECIMAL(19,6) | 淨額 |
settlement_status_cd | VARCHAR(20) | 交割狀態 |
必填核心欄位(來自 13 號工作簿)
10
| 表名 | 欄位 | 型別建議 | 必填 | 索引 | 用途 | 備註 |
|---|
TRD_ORDER | order_id | BIGINT | Y | PK | 內部主鍵 | 不可變 ID |
TRD_ORDER | order_no | VARCHAR(40) | Y | UQ | 業務委託編號 | 對外追蹤 |
TRD_ORDER | account_id | BIGINT | Y | IDX | 委託帳戶 | 客戶主體 |
TRD_ORDER | security_id | BIGINT | Y | IDX | 商品主體 | 商品關聯 |
TRD_ORDER | order_status_cd | VARCHAR(20) | Y | IDX | 委託狀態 | 狀態機 |
TRD_ORDER | trade_ts | DATETIME2(3) | Y | IDX | 委託時間 | 排序/查詢 |
TRD_EXECUTION | exec_id | BIGINT | Y | PK | 成交主鍵 | 不可變 ID |
TRD_EXECUTION | order_id | BIGINT | Y | IDX | 來源委託 | 關聯委託 |
TRD_EXECUTION | exec_qty | DECIMAL(19,6) | Y | — | 成交數量 | 可分筆 |
TRD_EXECUTION | exec_price_amt | DECIMAL(19,8) | Y | — | 成交價格 | 多市場精度 |
AST_CASH_BALANCE | ccy_cd | CHAR(3) | Y | IDX | 幣別 | ISO 4217 |
AST_CASH_BALANCE | available_amt | DECIMAL(19,6) | Y | — | 可用金額 | 圈存後餘額 |
AST_POSITION | holding_qty | DECIMAL(19,6) | Y | — | 持股數量 | 庫存主體 |
STL_TRADE_SETTLEMENT | settle_dt | DATE | Y | IDX | 交割日 | T+N |
SEC_AUDIT_LOG | source_system | VARCHAR(30) | Y | IDX | 來源系統 | 追溯 |
SEC_AUDIT_LOG | version_no | INT | Y | — | 版本號 | 樂觀鎖/重算 |
索引、分割與歷史資料策略
11
TRD_ORDER、TRD_EXECUTION、STL_TRADE_SETTLEMENT 建議以 biz_dt/trade_ts 為主要分割依據,支援高筆數查詢與封存
- 即時查詢索引優先配置:
account_id + biz_dt
order_no
exec_no
security_id + account_id
- 大表歷史資料採熱/溫/冷分層:
- 近 12 個月在線
- 13–36 個月近線
- 36 個月以上封存倉
INT_MESSAGE_LOG 與 SEC_AUDIT_LOG 不與核心交易表共用檔案群組,避免 IO 互相干擾
資料移轉與平行測試欄位要求
12
為支援舊系統轉換與雙軌平行,本專案建議所有核心表保留:
legacy_system_cd — 舊系統代號
legacy_key_1 / legacy_key_2 — 舊系統主鍵(複合主鍵可佔 2 欄)
migration_batch_no — 試轉批次號
recon_status_cd — 平行比對狀態
供試轉、差異比對與切換回復使用。
另建議設置專用追蹤表:
| 表名 | 用途 |
|---|
RECON_DIFF_LOG | 記錄平行差異 |
MIGRATION_LOAD_LOG | 記錄試轉結果與錯誤明細 |
與 資料移轉計畫 §試轉/平行測試 相呼應;與 驗收矩陣 §D01 資料移轉(三輪試轉)為同一控制點。
Review 結論
13
資料模型是本案成敗真正的護城河。
若資料模型做對,FIX/API/報表/移轉都能在同一套語意上穩定演進;若資料模型做錯,後續只會以大量介面特例與補丁維持運作。
本文件已將主體模型、命名規範、主外鍵關係、核心欄位與分層策略拉到可審查層級。建議下一步由 SA/DBA 團隊接續產出實體資料表 DDL 草案、索引單與容量估算。
相關頁面
補充資訊
2026-04-23 合併:無 prefix 版本 raw 同步
Source repo 新增無編號 prefix 的同主題 raw(資料字典 無 prefix 版,content_hash: sha256:1a899ef8b3a3),與 12 號資料字典內容等價、排版略異(資料表欄位 table 格式差別)。已加入本頁 sources;事實陳述仍以 12 號版 heading anchor 為主。
參考資料