我需要将以下值V存储在数据库中。 V的实例与特定表中的某个记录链接。 V的问题在于它与union type有相似之处,可以指出三件事:
1和2很容易(使它成为一个NULLable整数列),但如何处理3?现在,我不习惯使用特殊数值来表示ANY状态,例如, -1和0是案例1的完全有效值。
到目前为止,我们想到的是
是否有任何"行业标准"这样做的方式? :)
作为参考,此联合类型在XSD表示中看起来像这样:
<complexType name="V">
<choice>
<element name="anyValue" type="xs:string" fixed="" />
<element name="numericValue" type="xs:int" />
</choice>
</complexType>
<complexType name="E">
<sequence>
<element ... />
<element ... />
<element name="configValue" type="V" minOccurs="0" />
</sequence>
</complexType>
答案 0 :(得分:0)
我会解决它。
Nullable foregn key。并且在foregn密钥表中会有一行表明它具有“任何状态”..例如,所有列都为null。
或添加一个int / boolean列来指示一个覆盖状态。
请不要使用varchar链接到其他表...
我已经看到很多这个问题的解决方案,所有这些都有严重的问题。这永远不会很漂亮。并尝试为将要消耗这个混乱的代码定制您的解决方案。尽可能简单。在那些情况下,可读性是王道。
但最好的建议是永远不要进入这些情况,但我知道并不总是与你的力量相关