2011-08-04 161 views
0

我正在設計一個數據庫,它將持有合同和保證。保修可以鏈接到合同,但不取決於合同的存在。我如何定義2之間的關係?數據庫設計幫助

+0

我想不保證能夠存在合同? – Jacob

+0

保修是否可以鏈接到多個合同?合同多重擔保? –

+0

@Damien_The_Unbeliever是合同可以鏈接到多個保證,但保修可以在沒有合同的情況下存在。並非所有的合同都會有保證 –

回答

1

假設一個合同必須鏈接到恰好一個保修期,我有2個表:

Contract 
    ContractId (Primary key) 
    WarrantyId (foreign key to Warranty'Warranty_Id 
    ... 
    ... 

Warranty 
    Warranty_Id (Primary key) 
    ... 
    ... 

如果,另一方面,合同可以鏈接沒有,或超過1保修,那麼我會有一個接線表,而不是:

Contract 
    ContractId (Primary key) 
    ... 
    ... 

Warranty 
    Warranty_Id (Primary key) 
    ... 
    ... 

ContractWarranty 
    ContractId (Primary key) (Foreign key to Contract table) 
    Warranty_Id (Primary key) (Foreign key to Warranty table) 
+0

林不知道我怎麼看第一個解決方案的工作。合同可能沒有附加保證。不會打破兩個表之間的關係。道歉,如果我沒有足夠清楚 –

+0

這就是爲什麼我與它合格:'假設一個合同必須鏈接到一個保證'...和第二個解決方案:'另一方面,如果合同可以鏈接到沒有.. ..' – StevieG

+0

很酷,這是我需要的精確。謝謝 –

1

這聽起來像一個地方有一個合同和保證之間的關係表。

表:Contract_Warrantee_Rel

int RelationshipID 
int ContractID 
int WarranteeID 
+0

好的,如果保修有關聯合同,那麼在這張表中會有一個鏈接鏈接2.如果不是,那麼就不會有條目。似乎很簡單 –

+0

是的。你說對了。 – Narnian

0
contract 
-------- 
contract_id Number NOT NULL/Unique 
other_stuff 

warranty 
--------- 
warranty_id Number NOT NULL/Unique 
contract_id 
more_stuff 

除非保修可以屬於多個合同,不知爲什麼...那麼你需要一個關聯類是這樣的:

warranty_contract 
----------------- 
warranty_id 
contract_id 
effective_dt 
other info.. 
+0

這是不行的是嗎?如果我有沒有合同的保修,那麼關係不會工作 –

+0

這與你選擇的答案是一樣的:)祝你好運。 – Randy