2017-10-07 49 views
0

我對SQL很陌生,我試圖做幾個關係並且遇到下面的問題。SQL中的多對多關係?

我有3個表 - 人 - PHONENUMBERS - PhoneNumberCategories

人還有聯繫電話是自我解釋我想和PhoneNumberCategories我用它來表示PHONENUMBER是用於辦公,家庭,手機,傳真等。

現在我創建了第4個表來創建這種多對多關係。這個表有4列:

  • ID
  • 是PersonID
  • PhoneNumberID
  • PhoneNumberCategoryID

而且我在這裏有建立3的關係。除ID列以外的所有列都有一個。它似乎工作,但它只是給了我一種奇怪的感覺。有人可以告訴我,如果我在賴特賽道上,或者如果我對此有所錯誤。

我想要這個的原因如下。當然,我需要將一個人鏈接到一個電話號碼。但是,我可能有一個電話號碼,即普通辦公室(這將是'OfficeGeneral'行)號碼,因此與我聯繫,因爲我在那裏工作。我也有一個直屬辦公室(這將是'OfficeDirect'行)號碼。這當然也與我聯繫在一起。但是,總數與Office Office中的所有人員都是「OfficeGeneral」相關聯的。除了接待員,在這裏它將被鏈接爲'OfficeDirect'。這就是我提出這種多對多關係的原因。我在網上找不到太多內容。這就足以懷疑這是否是正確的方法。無論如何,這只是一個例子。我想確保我很靈活,並且可以儘可能多地捕捉異常情況。我相信,一旦數據庫被使用,人們會遇到我沒有預料到的情況。人們擅長我多年來的學習。

澄清響應下面的評論:

  • 人可以有超過1 ******中國。
  • PhoneNumber可以有多個人。
  • 具有PhoneNumber的人可以具有多於一個的PhoneNumberCategory(即用於電話和傳真的私人電話)。
  • 幾個人可以通過不同的PhoneNumberCategories鏈接到相同的PhoneNumber。 (即OfficeMain對我來說是OfficDirect的接待員。)

期待聽到大家的意見。

回答

1

您的模型看起來不錯。你的描述可能不是。

PersonPhoneNumber有多對多的關係。反過來,這種關係與PhoneNumberCategory一一對應 - 除非給定的電話號碼可能在多個類別中。

我預計Person/PhoneNumber將在此表中聲明爲唯一的,因此一個人只能使用一次特定的電話號碼。但是,這可能不是你如何看待結構。

+0

感謝您的快速響應。同意我不清楚。相應地更新帖子。 –