关于配置器的数据库架构,包括步骤和选项

时间:2016-01-05 16:06:50

标签: database architecture option

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

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

所以,例如:

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

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

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

  4. 到目前为止我所拥有的是:

    ###
    # 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)
    );
    

    这允许我为每个步骤提供选项并定义步骤顺序,但我无法确定将选项连接到先前选择的选项的最佳方法。

    欢迎任何想法。 谢谢。

1 个答案:

答案 0 :(得分:1)

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

Proposed able relationship

因此,选项表与步骤表有两个关系:从属关系本身的Step字段(即用户在尝试回答问题时要选择的选项)和Target字段用于规定接下来应提出的问题。

这样你可以添加如下记录:

enter image description here

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