链接数据透视表,太多多对多?数据库设计

时间:2015-06-05 18:50:57

标签: database-design many-to-many laravel-5 pivot-table has-many-through

构建功能,以便管理员可以构建产品的工作流程。

  1. 流程驱动程序是customer-sku组合。每个都需要一个工作流程。

  2. 工作流程由产品必须经过的仓库部门组成。部门的例子是:“运输”,“接收”

  3. 每个部门包含多个阶段,时间要求和队列占位符(用于保持部门的正确顺序)。阶段的例子是:“QC”,“清洁”,“盒子”

  4. 每个阶段包含多个步骤,时间要求和队列占位符(用于保持阶段的正确顺序)。步骤的示例是:“开始”,“停止”,“保持”

  5. 这是一个糟糕的设计吗?

    image of tables

1 个答案:

答案 0 :(得分:3)

关系答案

如果你想要一个关系数据库,它具有关系完整性(与参照完整性不同),关系能力(在你的问题层面,这意味着加入权力)和关系速度,记录归档系统(典型的)通过记录ID作为每个文件中的“主键”)没有。这就是我提供的一切。

  1. 当您的起始位置是您所想的电子表格时,您无法对任何内容进行建模,并在每个电子表格上印上ID字段。

  2. 除了这个问题,ID字段还会创建许多其他字段。请阅读从顶部到{strong>假教师的this Answer

  3. 是的,n :: m表太多了。从某种意义上说它是一个红色标志,表明数据没有完全标准化。当然,必须在完成任何其他事情之前完成。

  4. 试试这个,这是我认为你需要的,考虑到备用要求(随意更具体)。

    Workflow Data Model

    数据模型

    • 这是一个IDEF1X数据模型。 IDEF1X是关系数据库建模的标准。请注意每一个小嘀嗒声;缺口;并标记;乌鸦脚;实线与虚线;广场与圆角;意味着非常具体和重要的东西。请参阅IDEF1X Notation。如果您不理解符号,您将无法理解或工作该模型。

    • IDEF1X数据模型具有丰富的定义,UML和其他图表甚至无法接近。有关阅读数据模型的帮助,请参阅Data Model Anatomy,这是对符号文档的不同视角。

    解决方案

    • 在考虑历史模型之前,请先查看仅限当前步骤模型,然后了解它。

    • 复合键是关系数据库中的标准票价。实际上,这是获得关系完整性的唯一方法(与参照完整性不同),并且您需要在此场景中可以获得的所有完整性。

    • 查看您是否可以从模型中进行编码,并获取所需的所有报告和查询,每个只需一个SELECT。如果您需要帮助,请询问。

    请随时发表评论或提问。