2016-05-29 49 views
0

我正在寻找允许用户打开或关闭字段的模式。如果我有一个CAR表,我会有一个名为CAR_OPTION的多对多链接表,它将选项(CD播放器,真皮座椅等)链接到汽车。数据库设计:用户打开或关闭字段

我希望用户能够选择他们想要的汽车中的哪些潜在选项,然后存储该数据,以便用户可以看到他们打开/关闭哪些潜在选项。我在脑海中经历了一堆,我所有的解决方案都觉得他们正在重新发明轮子。我有唯一的一半体面的解决方案涉及创建另一个多对多表,也有一个id字段绑定回该用户ORDER,类似CAR_OPTION_ORDER,然后我会覆盖在CAR_OPTION在UI代码

这是最佳选择,还是有一些其他常见做法或模式的这种情况?我的解决方案就像是存储多次相同/相似的数据。

回答

0

在我看来,您有最佳选择。它被称为关联实体。我很久以前读过添加身份主键/聚集索引,而不是使用这两个外键作为主键。这是我的SOP,加盟表现非常好。

在报告/历史分析方面,如果负荷很重,我可能会使用不同的设计。

+0

那好吧。感谢您的任期,对我来说这通常是一场艰苦的战斗。 –

+1

我同意这是最好的设计 - 用户,汽车和选项之间的三路交叉表。但是,我不同意创建一个单独的身份密钥。它根本没有目的。您可以查询知道用​​户和/或汽车和/或感兴趣的选项的数据库。即:对于用户U和Car C,是否启用Option O?对于用户U和Car C,哪些选项已启用?或分析:哪种车型最适合Car C选择? 在任何时候您都不会使用密钥的值查询数据库。它充其量是多余的。 – TommCatt