我遇到一个挑战,我要合并记录,其中“结果”值可以是不同的数据类型,具体取决于结果类型。我正在尝试尽可能地简化这一点,以便用户不必编写函数、自定义联接或标准来获得他们需要的东西。
考虑这个例子 -
Results
表:
记录ID | 结果类型 | 结果值ID |
---|---|---|
1 | 十进制(10,2) | 5 |
2 | int | 8 |
结果值表:
结果ID | 结果值 |
---|---|
5 | 114.25 |
8 | 3 |
有没有一种方法,当用户查询特定结果值记录时,使用
result_type
的值自动返回适当格式的结果值?我考虑过创建 result_value_int
、result_value_decimal
、result_value_float
等表,然后以适当的格式返回结果值表,但我讨厌在组合中引入一个函数,除非必须这样做。
以下伪代码将无法得到我所需要的:
SELECT CONVERT([Result Type], [Result Value]) AS result
FROM [Result Values Table] rv
INNER JOIN [Results Table] rt ON rv.[Result ID] = rt.[Record ID]
我正在尝试构建架构并确定是否需要函数或其他类型的联接来以适当的格式返回结果。我无法在结果表中使用单个结果值字段,因为我必须选择类似 float 之类的可以容纳所有可能数值的字段。
如果您只需要存储数值,通用数据类型(FLOAT)选项是最简单的,但它可能会丢失类型精度。每种类型使用单独的表可确保数据完整性,但需要更复杂的查询。如果您使用支持它的数据库(例如 PostgreSQL),JSON/JSONB 提供最大的灵活性。最后,引入 SQL 函数或视图可以通过隐藏类型转换的复杂性来简化用户的流程。