我正在研究預訂系統的會計部分(想想豪華轎車公司)。在匹配表中使用NULL NULL
在系統中有多個對象可以付款或提交付款。我在三個表中追蹤所有這些「交易」,這三個表稱爲:tx,tx_cc和tx_ch。
tx生成一個新的tx_id(用於事務ID)並保存有關金額,有效性等信息。Tx_cc和tx_ch分別保存關於使用信用卡或支票的信息,鏈接到其他表(credit_card和bank_account等等)。
這對我來說似乎相當規範,不是嗎?
現在,這裏是我的問題:
支付交易可能發生的原因有無數。無論是預訂付款,預訂預訂的旅行社正在付款,司機正在付款等。
這導致多個表,每個實體一個:agent_tx,driver_tx,reservation_tx,等
他們看起來像這樣:
CREATE TABLE IF NOT EXISTS `driver_tx` (
`tx_id` int(10) unsigned zerofill NOT NULL,
`driver_id` int(11) NOT NULL,
`reservation_id` int(11) default NULL,
`reservation_item_id` int(11) default NULL,
PRIMARY KEY (`tx_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
現在,這個交易是一個驅動程序,但可以適用於單個項目上保留或整個整個預訂。因此,我要求reservation_id或reservation_item_id爲null。將來可能會有其他的事情要付給司機,我也會在這張表中添加,默認爲空。
這是什麼規則?意見?
很明顯,我可以把它分解成很多三列表,但是所需的OUTER JOINing的數量看起來很離譜。
您的輸入將被讚賞。
和平, 湯姆