Database-Design
如何設計銀行金融交易數據庫架構?
我正在編寫一個簡單的銀行數據庫模式。這是為了學習目的,而不是真正的銀行。現在我被困在設計金融交易上。
交易可以有不同的類型:
- 銀行內部賬戶之間的資金轉移。這種類型的交易有發送方和接收方賬戶。
- 取款。這種類型的交易只有一個可以提取資金的賬戶。
- 存款。這種類型的交易只有一個存入資金的賬戶。
- 為服務付費。這種類型的交易有一個已付費的帳戶和服務類型。
此外,所有交易類型都有創建的金額和日期。如何更好地設計具有多種事務類型的數據庫模式?獲得一個賬戶所有交易的清單也應該很容易。設計它的最簡單方法是為每種事務類型創建一個單獨的表。範例架構:
但是這種設計存在一些問題。
- 沒有唯一的交易 ID。
- 獲取所有事務的列表並不容易(唯一的方法是聯合所有表中的所有事務)。
- 如果出現新的交易類型,則需要更新獲取交易列表的邏輯。
另一個想法是創建一個表
transaction
,其中包含所有交易的唯一 ID、交易類型、金額和創建日期。Schema: 這個Schema解決了第一個問題,事務ID的唯一性。但是還有另外兩個問題。你知道它在真實的銀行系統中是如何設計的嗎?我很高興有任何建議!提前致謝!
@zenno2 - 如果您在最頂部描述的是交易類型的範圍,您可能會想太多。這本質上是與 Account 的基本關係(主要或核心)
Share(s) - 例如,賬戶 01 可能有一個儲蓄賬戶、一個支票賬戶和一個汽車貸款,因此 Savings(1)、Savings(2) 和 Loan(1) 交易就是這裡的一切;存款、付款、轉賬 - 都在同一張表中。只是程式碼表明每行的用途:D 代表存款,W 代表提款,T 代表轉賬。(“付款”就是取款)
如果你想變得花哨,你可以為儲蓄和貸款有單獨的交易表——這將允許在更小的設計中更細化的數據。然後請記住上面@bbaird 發布的內容-如果您能解決這個問題,那麼您就到了一半。