2016-08-20 50 views
0

假設我有一個表格患者和一個表格測試。患者可以接受許多測試,並且對許多患者進行測試。所以這是一個多對多的關係。我在它們之間創建了一個聯結表。我也想存儲病人想要參加測試的日期,所以我在分界表中做了這個。另外,假設患者在一天內接受1次以上的測試,並且希望針對該日期的所有測試創建特定的結算帳戶。聯接表屬性可以用作另一個表中的外鍵嗎?

我創建了一個自動生成的帳單號。我也將它添加到交接表中。

到目前爲止,我的接口表記錄了病人在日期和計費號上可能採用的測試。

現在我創建一個表billingaccounts。在這張表中,我想存儲所有的賬單信息,比如totalamount,付款金額等等。我還希望在此處包含帳單號,因爲它將幫助我識別病人並測試結算帳戶字段所指的帳戶。

我試圖在此結算帳戶表中將結算號作爲以前結算表中的結算號的外鍵。

但我不能這樣做,因爲結合表中的結算號不能保持唯一,因爲它是m:n結表。

我能做些什麼來完成這項工作或其他選擇?

+0

您可能希望將其移至http://dba.stackexchange.com/ – mathguy

+0

我刪除了不兼容的數據庫標記。 –

回答

0

只需將主鍵列添加到「聯結」表中即可。你的聯結表比單純匹配兩個表更豐富。因爲你想要一個外鍵關係,所以它值得擁有自己的主鍵。例如(使用MySQL的語法):

create table PatientTests (
    PatientTestId int primary key auto_increment, 
    PatientId int not null, 
    TestId int not null, 
    TestDate date, 
    BillingAccount int, 
    . . . 
    constraint fk_patienttests_patientid references Patients(PatientId), 
    . . . 
); 

創建表

0

請在接線表中billing no一個外鍵billingaccounts表的主鍵。因此,您首先會在billingacounts中創建一個新行,包括自動生成的ID /結算號,然後在交接表中使用該號碼。

相關問題