2010-11-08 38 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