1
我需要将以下值V存储在数据库中。 V的一个实例与特定表中的特定记录相链接。采用V的问题是,它有一个相似的union type并能指出三两件事:数据库设计中的联合数据类型
- V有一个整数值,这意味着该值应该用于有问题的记录。
- V不存在,即NULL,这意味着全局设置优先于所讨论的记录。
- V的含义是“ANY”,意思是没有值应该用于记录中。
1和2很容易(使其成为一个NULLable整数列),但如何处理3?现在我不愿意使用一个特殊的数值来表示ANY状态,例如, -1和0是1的情况下
了什么浮现在脑海中至今完全有效的值是
- 把这个联盟类型到具有两列,一个数值和一个单独的表对于任何条件(布尔值)和一个可翻译的外键引用。
- 将其存储为VARCHAR列,并对任何状态使用某些特殊字符(例如“*”)。
有没有这样做的“行业标准”方式? :)
以供参考,该联合类型看起来像这样在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>
因此很明显,没有银弹这一个...我结束了主办这次设立一个单独的表值,以避免具有隐藏逻辑的一些神奇的varchar列。接受这个答案作为确认我的假设的奖励:) –