簡體   English   中英

MySQL:“付款”表綁定到多個可能的“服務”表

[英]MySQL: “Payments” table tied to multiple possible “Service” tables

我會盡量簡短明了。

我想要一個稱為“付款”的表,該表綁定到多個表,這些表代表公司提供的多種服務。 將“ Payment”外鍵添加到每個服務表中並將它們鏈接到“ Payments”中的主鍵是相當簡單的,但是問題是一個實際的問題:

我想創建一個(Libre Office Base)表單來添加付款。 但這不僅需要將INSERT插入多個表(信息的“ Payments”和外鍵的給定“ Service”表),而且還需要在表單本身創建該主鍵之前將主鍵添加到外表中。 。 所以這個選項似乎出來了。

我嘗試以另一種方式進行此操作-將外鍵“服務”放入“付款”表中,並從其他表中插入ID(主鍵),但是所述主鍵是簡單的整數,並加上ServiceA的ID = 1會使數據庫認為所有其他表的ID = 1對象也被“支付”。 我知道我可以通過使它們成為varchar而不是整數來區分這些表之間的ID,但是我認為沒有辦法使它們自動填充,對嗎?

最后,我認為也許“類別”選項會有所幫助-從服務類型中選擇(例如“手術”,“葯品銷售”,“考試”),然后鍵入其中一個ID。 這可以讓我選擇在查詢中分隔相同的ID號。 但是,這無法解決以下問題:嘗試從“ Surgeries”中插入ID = 40,而其他任何表都沒有此類ID的情況下,會拋出一個明顯的錯誤,即違反關系,因為數據庫會認為該條目無處可去。

我真的很難從這個混亂中找到一個簡單的解決方案。 我認為最適合我的選擇是以某種方式使自動填充主鍵在表之間有所不同,但是在這一點上我會提出任何建議。 Libre Office Base中是否有可能完全創建適合我想要的表單?

嘗試使用觸發器,在插入主觸發器后,將調用觸發器,並將其他信息添加到其他表中。

我想我已經找到了一種完全可以滿足我需求的方法。

首先,我創建了一個僅包含一個字段的表“ For”,即一個auto_incrementing BIGINT ID。 然后,我在此表和“服務”表的ID(顯然現在也為BIGINT)之間創建了關系。 這樣,它們現在都具有自動遞增的ID(“ For”中的外鍵),但是在它們之間不再重復一個。 我的數據庫不會混淆ID屬於哪個表的風險。

接下來,我創建了一個名為“ PS”的表(對於“ Payments&Services”),用作多對多關系中的“中間”表。 我希望人們願意的話,可以用一種付款方式來支付許多服務的費用,但也要讓他們用一種較小的付款方式來支付一項服務的費用。 因此,表“ For”具有一個字段,用於來自“付款”(ID)的外鍵和來自“ For”(即服務的ID)的外鍵。

聽起來好像很爛,但是我認為這是最好的解決方案。

現在,我正在嘗試制作“添加付款”表格時遇到了其他麻煩,所以...我想再見一個問題;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM