Sql-Server
會計模式的多個 id 表
我正在嘗試製作一個小型會計數據庫,但我遇到了死胡同,我的搜尋沒有關於如何使這個想法發揮作用的結果。
在下圖中,您可以看到在這種情況下我試圖將多個錶鍊接到一個表
CreditDebit
,因此我可以使用表中 CreditDebit 的 ID (CD_ID)BondDetails
作為Creditor_CD_ID
和Debtor_CD_ID
我想要實現的是擁有正確的結構,這樣我就可以創建一個查詢,根據他們的 id 告訴我債權人或債務人屬於哪個表並顯示他們的名字 (
box_name
,emp_name
,customer_name
)注意:
CreditDebit
表將只有三個 id 之一(box_name
,emp_name
,customer_name
)
如果您擔心 中的多個空值
CreditDebit
,您可以考慮將表更改為以下create table CreditDebit (CD_ID int primary key, ref_id int, ref_entity varchar(20));
這裡可以根據列
ref_id
引用box_id
//emp_id
,可以有’box’、’employee’、‘customer’等值。這種設計的缺點是無法在 CreditDebit和其他三個表之間創建外鍵關係。但是,您可以在應用層實現數據完整性(如果您不想使用觸發器)。
customer_id``ref_entity`
你只需要讓交易有兩個不同的所有者:債權人和債務人。它還有其他用途。您可以查看任何債權人擁有的交易以找出誰欠他們的錢,並且您可以查看任何債務人的交易並找到其他所有者以揭示他們欠債的所有債權人。