【发布时间】:2014-04-17 19:29:24
【问题描述】:
我需要将以下值 V 存储在数据库中。 V 的一个实例与某个表中的某个记录相关联。 V 的问题在于它与union type 相似,并且可以指示三件事:
- V 有一个整数值,这意味着该值应该用于相关记录。
- V 不存在,即 NULL,这意味着全局设置优先于相关记录。
- V 的含义是“ANY”,这意味着不应为相关记录使用任何值。
1 和 2 很容易(使其成为 NULLable 整数列),但是如何处理 3 呢?现在我觉得用一个特殊的数值来表示 ANY 状态不舒服,因为例如-1 和 0 是案例 1 的完全有效值。
目前想到的是
- 将此联合类型放入一个单独的表中,该表具有两列,一列用于数值,一列用于 ANY 条件(布尔值),以及对其的可空外键引用。
- 将其存储为 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>
【问题讨论】:
标签: sql database-design