【发布时间】:2011-06-01 12:22:30
【问题描述】:
我的客户已指定,当满足内部逻辑中的某些条件时,他需要执行不同的操作。每种操作类型(到目前为止Command 和WriteVariable)都有一组单独的特定信息,因此需要存储在单独的表中。用户必须能够定义执行操作的顺序。
我有以下数据库设置:
LogicTable
* OutputID
* Description
OutputTable <== a pure relational table
* OutputID
* LogicID
* ActionID <== this references one of the action tables (Command/WriteVariable)
* ActionTypeID
* Sequence
ActionTypeTable
* ActionTypeID
* Description
CommandTable
* CommandID <== corresponds to ActionID in OutputTable
three columns with further command-specific information
WriteVariableTable
* WriteVariableID <== corresponds to ActionID in OutputTable
four columns with further write-variable-specific information
我的问题是我不能有多个关系表,因为我不能保证跨多个表的操作顺序。对于输出表中的每个单独操作,我不能有多个带有外键的列(客户要求)。使用上述设置,我无法具有引用完整性,由于外键条目没有对应的主键条目,因此在我的应用程序中可能会导致 ConfigurationException。
是否有一种设计可以实现引用完整性并设法保证引用操作的顺序?
【问题讨论】:
-
您能否扩展(客户需求)部分——具体来说,该领域的需求是什么?是不是没有对 OutputTable 定义进行任何更改?或者不存储或“冗余”数据,或者必须始终设置 ActionID,还是什么?
-
@Damien_The_Unbeliever:客户要求指定我不能在键列中有空值。这意味着我不能指定多个列,每个操作类型一个,并使用它来引用基础操作。
标签: c# sql database-design foreign-keys