关于带有步骤和选项的配置器的数据库架构

Database architecture regarding configurator with steps and options

我有一个产品配置器的数据库架构问题。

用户必须回答一些连续的问题(步骤)。 每个步骤都有几个选项。 一个步骤的选项取决于上一步的选择。 每一步只能选择一个选项。

因此,例如:

  1. 你今天想穿什么? 一)鞋子 b) 拖鞋

  2. (a) 鞋子应该有鞋带吗? 一)是的 b) 否

  3. (b) 拖鞋应该是什么颜色? 一)红色 b) 透明

我目前拥有的是:

###
# Table structure for table 'filterstep'
###
CREATE TABLE filterstep (
    id int(11) NOT NULL auto_increment,
    title varchar(255) DEFAULT '' NOT NULL,
    parent_step varchar(255) DEFAULT '' NOT NULL,
    options int(11) DEFAULT '0' NOT NULL,
    PRIMARY KEY (uid)
);

###
# Table structure for table 'filteroption'
###
CREATE TABLE filteroption (
    id int(11) NOT NULL auto_increment,
    title varchar(255) DEFAULT '' NOT NULL,
    seo_alias varchar(255) DEFAULT '' NOT NULL,
    icon int(11) unsigned NOT NULL default '0',
    image int(11) unsigned NOT NULL default '0',
    description text NOT NULL,
    step int(11) unsigned NOT NULL default '0',
    PRIMARY KEY (uid)
);

这让我可以为每个步骤设置选项并定义步骤顺序,但我无法确定将选项连接到先前选择的选项的最佳方式。

欢迎任何想法。 谢谢。

您可以有一个 table 专门用于保留所有问题和直接从属的问题,同时在另一个 table 中保留每个问题的所有选项和与该选择相关的目标问题,如下图所示:

因此,选项 table 与步骤 table 有两个关系:从属本身的 Step 字段(即用户在任何时候选择的选项 he/she 试图回答问题)和 Target 字段来决定接下来应该提出什么问题。

这样你可以添加这样的记录:

要强制执行选项目标一致性,您应该创建管理 UI 以仅允许选择与父步骤本身关联的步骤,或者允许完成用户输入的 NULL 值。