代码之家  ›  专栏  ›  技术社区  ›  Peter Bailey

数据建模-如何处理两个依赖的“状态”列?

  •  1
  • Peter Bailey  · 技术社区  · 16 年前

    我遇到了一些困扰我的事情,以至于我想来这里向你们寻求一种“最佳实践”类型的建议(et gals)

    我的模型里有一张桌子,我们就叫它 prospect . 两个独立的外部系统可以为该表中的行提供更新,但只能作为这些各自系统中该记录的“状态”提供更新。

    我需要在本地存储这些状态。当然,最初的想法只是生成两个可以为空的外键。像这样。

    +-----------------+--------------+------+-----+---------+----------------+
    | Field           | Type         | Null | Key | Default | Extra          |
    +-----------------+--------------+------+-----+---------+----------------+
    | prospect_id     | int(11)      | NO   | PRI | NULL    | auto_increment |
    | ext_status_1_id | int(11)      | YES  |     | NULL    |                |
    | ext_status_2_id | int(11)      | YES  |     | NULL    |                |
    +-----------------+--------------+------+-----+---------+----------------+
    

    在这个例子中,当然会有两个表保存状态的ID/值对。

    这是要点- ext_status_2_id 总是 除非NULL为空 ext_status_1_id 1 (这就是业务规则的工作原理)。

    我的模型正确吗?我只是在脑后有个喋喋不休的声音告诉我,“并不是每一行前景都需要 EXTXSTATIOS.22ID 所以这可能是不对的。

    如果重要的话,这是mysql 5.0.45,我正在使用innodb

    3 回复  |  直到 12 年前
        1
  •  4
  •   Keith Adler    16 年前

    既然状态1对状态2有一个内置的依赖关系,为什么不在prospect表上只有一个status字段,并在status1表上创建status2作为属性呢?当然,它以这种方式进行了大量的规范化,但是这样的数据结构说明了状态2对状态1的依赖性。

        2
  •  1
  •   Evert    16 年前

    这可能很好。但是,由于始终只使用2中的1个,因此可以将其建模为:

    实际ID的ext_status_type(1或2)和ext_status。

    我可能会和你做的一样,因为围绕这个构建索引可能更容易,而且两个数字的含义似乎完全不同。

    如果有更多的状态(3,4,5,6),我会在我的答案中考虑第一种方法。

        3
  •  0
  •   Shai    12 年前

    有什么可能 ext__status__1 ?威尔 ext__status__2 只有当 status__1=1 ?是什么 status__1=2 ?我部分同意日产的风扇。然而,在 status__1 Status__2 ?窗体是否存在函数依赖项 status__1 -> Status__2 ?
    如果没有这种依赖,那么保持 StutsSux1 StutsSux2 在单独的表格中不能解决您的问题。