0

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

我正在尝试为此设计 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 的组合。

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

4

2 回答 2

0

好的所以你有这些表:

Categories 
 - ID
 - Description

并且每个类别都有多个参数:

Parameters
 - ID
 - Parent Category ID
 - Description

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

Combinations
 - ID
 - USER_ID
 - CATEGORY_ID
 - PAREMETER_ID
于 2013-08-07T16:39:02.177 回答
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 可以是自动生成的)

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

那么如果你想添加另一个可能的组合,比如 15、16、23 和 42:

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

(同样,ID 可以是自动生成的)

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

于 2013-08-07T16:45:00.290 回答