数据库设计步骤

时间:2014-11-16 09:08:32

标签: c# sql database-design

我想设计一个跟踪产品开发周期的数据库。

它有4个步骤

  
      队列中的
  1.   
  2. 加工
  3.   
  4. 在途中
  5.   
  6. 递送
  7.   

在队列中意味着它到达了仓库。 Porcessed意味着它被包装在花式包装材料中并检查是否有任何缺陷 在Transit意味着它目前在面包车去客户端 交付意味着交付给客户。

我知道我会有一个otiopn

tblProducts
==========
idProduct
Description
IdStatus 

Status
======
Id
Status

但是我想知道是否有更好的选择,也许是一种类似于此类空值的级联样式

Products
========
IdProduct
Description


Step1
=====
Id
IdProduct
Step2 - nullable

Step2
=====
Id
Step3 - nullable


Step3
=======
Id
Step4 - nullable

例如,如果step1完成,它将有一个step1,如果step2完成,那么它将有一个step2。

我想知道哪个更正确,第一个我可以导致各种数据库不一致错误..

我无法添加标签,因为自动完成功能对我不起作用。请有人添加sql数据库设计。

经过一番研究后,我发现以下链接对解决我的问题非常有帮助。 似乎我的问题通常被称为图形算法

http://hansolav.net/sql/graphs.html

2 个答案:

答案 0 :(得分:1)

很大程度上取决于实际使用情况。

例如,您可能想要创建一个名为Transition的额外实体。对于步骤之间允许的每个转换,此表可以包含一行。这将允许您添加更多步骤,将产品从一个流程迁移到另一个流程并删除步骤。

产品将引用其当前步骤并转到下一步,过程可以在Transition表中查询允许的后续步骤并将产品更新到下一步。

该程序还可以根据当前步骤和产品状态来确认转换。

答案 1 :(得分:0)

事实上,有两张桌子就足够了。一个具有步骤类型,例如1 =排队,2 =在运输等。

这使设计简单但稳定。它减少了数据重复。

在products表上添加名为StepId的列。 stepid等于你步骤表中的值(如上所述)。

这也允许您快速添加多个步骤 - 只需添加一行而不是表格。

您还可以快速对数据进行分组,以显示每个步骤。

如果不清楚,请告诉我,我会为您举一个简短的例子。