存储允许的设置组合

时间:2013-08-07 16:29:20

标签: mysql database-design

我正在创建一个用户可以定义设置的界面。设置按类别分隔,用户只能从每个类别中选择一个参数。问题是,只允许某些参数组合,我必须阻止用户选择不兼容的参数。

我正在尝试为此设计mysql数据库结构,但我没有找到满足我的解决方案。

我想到的是:

Categories 
 - ID
 - Description

Parameters
 - ID
 - Parent Category ID
 - Description

Combinations
 -ID
 - a string that is the concatenation of parameters IDs ordered by category

例如。 :102596将是类别1的参数10,类别2的25和类别3的96的组合。

问题是:如果有一天我需要超过一百个参数怎么办?

2 个答案:

答案 0 :(得分:0)

好的,你有这些表:

Categories 
 - ID
 - Description

每个类别都有多个参数:

Parameters
 - ID
 - Parent Category ID
 - Description

现在您要存储用户选择的参数。为什么不处理允许在数据库设计范围之外的每个类别中仅选择一个参数的操作?如果你能做到这一点,那么组合表就很简单了:

Combinations
 - ID
 - USER_ID
 - CATEGORY_ID
 - PAREMETER_ID

答案 1 :(得分:0)

您应该使用表格进行分组,例如:

Combinations
- ID
- Group_ID
- Parameter_ID

例如,让我们使用允许的组合10,25和96的示例,您将在“组合”表中有这3个条目:

(ID, Group_ID, Parameter_ID) = (1, 1, 10), (2, 1, 25), (3, 1, 96)

(ID可以是自动生成的)

这意味着您拥有3个允许参数(10,25,96)的该组(1)。

然后如果你想添加另一种可能的组合,比如15,16,23和42:

(ID, Group_ID, Parameter_ID) = (4, 2, 15), (5, 2, 16), (6, 2, 23), (7, 2, 42)

(ID也可以自动生成)

这意味着您拥有4个允许参数的组(2)(15,16,23,42)。