2016-07-14 89 views
0

我試圖用非常基本的表格來設計我的數據庫,我很困惑,正確地做到這一點。SQL表格設計佈局

我附上了主要信息的圖片,我不太確定如何鏈接它們。意思是什麼應該是外鍵,或者這些表中的某些應該包括其他表的列表。

layout

UPDATE對錶 updated tables

回答

2

按您的要求,你是對有關關聯表

  1. 客戶可以擁有多個賬戶及賬戶可以有多個客戶端
    以後,許多(客戶)到很多(帳戶)
    所以創建一個關聯表,首先打破多對多關係。然後加入它的方式
  2. 賬戶只能有一個經理
    這意味着一(經理)到很多(帳戶)
    所以,添加一個名爲經理ID屬性在帳戶
  3. 帳號可以有很多traedetail
    這意味着一個(客戶)到很多(TradeDetails)
    所以,在TradeDetails添加一個名爲帳戶ID屬性
+0

的提示。我放了一張更新表格的圖片。這看起來不錯嗎? – solarissf

+0

你是對的!這工作正常,但仍然,我覺得** [Mapping ClientAccount]。[Id] **沒有任何意義,我們可以刪除它,我們可以使ClientID和AccountID作爲主鍵以及外鍵[映射ClientAccount]。除此之外,一切看起來都很完美 –

+0

是的我同意[Mapping_ClientAccount]。[Id]是沒用的。我以爲你只能做出1列PK。如上所述,我將如何使ClientID和AccountID成爲PK? – solarissf

0

取決於你是否正在尋找有一個規範化的數據庫或一些其他類型的設計範例。我建議閱讀關於數據庫規範化和參照完整性的概念。

我會做的是讓表與賬戶/經理之間具有1對1的關係放到一張表中(除非你能想到一個真正的理由)。將Clientid添加爲帳戶的外鍵。將AccountID作爲外鍵添加到TradeDetail。你基本上將所有東西都設置爲1對多的關係,其中有1個記錄的表有一個字段作爲主鍵,而有許多的表將其作爲外鍵。

+1

帳戶也可以有多個客戶端,因此需要中間表來打破多對多的關係。 – Eric

+0

你說得對。我沒有仔細閱讀原文。中間表是必需的。 –

+0

我在上圖中添加了一箇中間表。是的,我GOOGLE了規範化的數據庫,這是我想要的。 – solarissf