表示值可以是任何类型的键/值对(在关系数据库中)

时间:2009-03-30 17:26:10

标签: database database-design

我正在设计的数据库中一个小而重要的角落将用于存储任意计算的结果。这些结果可以是任何类型。如何表示可以是关系数据库中任何类型的Value字段?

我唯一能想到的是根据数据类型创建单独的表,这些表都将外键返回到通用表。这对我来说似乎不对,因为为了获得价值,我必须加入一堆不同的表格。必须有更好的方法。

5 个答案:

答案 0 :(得分:1)

您可以将结果序列化为某种二进制格式吗?在这种情况下,'image'将保存您的数据,您也可以将类型本身存储为字段。

答案 1 :(得分:0)

只要您的抽象层能够序列化所有类型,就将它们存储为二进制数据并序列化,反序列化。可能使用指示数据类型的列。如果除了CASTable数据类型之外什么都没有,那么你的设置就更多了。

答案 2 :(得分:0)

我之前使用的一种方法是存储序列化值,并使用单独的字符串字段来标识其类型。因此,例如,如果您使用的是.NET,则可以存储“System.Decimal”和序列化的十进制值。这适用于二进制或XML序列化,分别带有BLOB或长字符串字段。

答案 3 :(得分:0)

您可以将所有值存储为VARCHAR。当您从数据库中获取值时,可以尝试将其与不同的正则表达式匹配。为每种数据类型都有一个正则表达式。无论它使用哪种,您都有自己的数据类型。

答案 4 :(得分:0)

您最好的选择可能是序列化数据并使用其他人建议的字符串或xml。

如果您使用MS SQL Server,则另一个选项是SQL_VARIANT类型,它可以存储除LOB之外的任何内容。我不推荐这个选项而不是序列化,但序列化工作在任何平台上都更容易理解和优化。