【发布时间】:2012-02-11 06:15:02
【问题描述】:
我需要存储不同类型的相同值。该值可以表示 DATE、INT、BOOLEAN、DOUBLE 和任何其他类型。我想知道是否有可能不使用多个表 - 每个表都用于不同的类型(我想这会使存储值的使用变得非常复杂(主要是搜索、过滤))。在一行中存储多个以NULL值为主的列表时,是否会导致存储和性能大幅下降?
我正在考虑包含此类示例列的表格,其中只会填充一个值列:
id valueVarchar valueDate valueBoolean valueInt valueDouble
如果这种方法显然是错误的,请赐教。
我正在使用 MySQL (InnoDB)(数据库不是大问题,如果需要可以更改)和 JPA 创建 JSF 应用程序。
编辑:
就目前而言,我有一个带有一个文本值字段的表格。我正在服务器端将值转换为/从数据库转换。因为该项目刚刚开始,现在改变模型将比未来更痛苦,我正在考虑是否存在更好的方法。
【问题讨论】:
-
为什么您需要将相同的值存储为多个不同类型 - 您希望通过这样做实现什么?为什么一个特定的值可能有多种不同的类型?
-
有点混乱;如果您因为这个值的类型不同而尝试这样做,那么我建议使用 VarChar;因为存在将其转换为其他数据类型的转换函数。
-
@MarkBannister:突然想到:一个企业可能有应用程序/上下文使用不同的 pi 值,例如作为浮点数和固定小数。也可能是不同的舍入算法,例如在 3 d.p. 处截断,银行家四舍五入到 3 d.p.等
-
@MarkBannister:我正在创建注释系统,在其中我将一些具有许多属性的对象链接起来——这些属性可以是任何类型。属性有一个有意义的字段——值。我正在考虑不同的方法,但我不是数据库人员,所以我正在寻找建议;]
-
@MattDonnan 这就是我现在所拥有的,但我担心将来不会给我带来麻烦。
标签: mysql sql database jpa types