2010-11-08 37 views
2

說我有如下表:憋屈數據庫設計問題

  • GearType:單板滑雪/安全帽/鞋/不管

  • GearModel:它描述了製造商,大小和GearType

  • 齒輪:表示齒輪的物理實例,屬於GearModel並描述其條形碼,其已被磨損的次數...

  • 會員:具有雙重PK成員Id/GearTypeId所以會員可以指定每geartype 0..1齒輪,也有FK GearId

  • :誰可能被分配一個齒輪爲每個現有geartype

  • GearAssignation人

我的問題是: 由於齒輪不能分配超過1個會員一次, 如何彌補,以0..1齒輪和基數1 GearAssignation之間的關係?

最好我設法使用Gear.Id和GearAssignation.GearId之間的關係,在GearId上用一個唯一的鍵(記住它不能是因爲雙PK成員Id/GearTypeId而導致的PK)。 但我很想擺脫那個英國,因爲我的軟件開發工具無法識別它。

作爲建議,這裏是從SSMS圖: all irrelevant columns have been deleted

帶來沉重改變目前的模式是沒有問題的,在一切對我來說大氣壓。 建議?

PS:不知道,如果有幫助,我使用的是微軟的SQL Server 2008中

+0

你可以從SSMS內部打印你的SQL圖表並上傳它 - 可能有助於提供一個視覺幫助 – RobS 2010-11-08 16:16:44

+0

我建議你編輯你的標題以詢問具體問題。 – 2010-11-08 16:18:00

回答

7

我想通過具有誰是當前分配給member_id在齒輪場做到這一點。

+0

+1:完全丟棄GearAssignment表。這樣的表格的目的只是爲了允許多對多的關係。 – NotMe 2010-11-08 17:09:33

+0

@ user348019 - 我會認爲GearTypeId是Gear的屬性,而不是分配。現在你的模型的設置方式是將一個成員關聯到一個GearType,而不是Gear,這正是我正在閱讀的內容,你需要這樣做。 Jaydee做了精明的觀察。 – 2010-11-08 17:12:32

+0

我要跟着這個。 1 Gear/GearType/Member的約束將由應用程序本身執行,因爲我被告知概念數據模型不適合它。感謝您的幫助 – 2010-11-08 23:04:32