数据库列混合内容类型

时间:2013-09-20 22:39:48

标签: database oop database-design

我有一个对象属性,可以接受string值,boolfloat

当用户调用重载方法来设置属性setValue(float)setValue(bool)或{{1}的值时,我选择将其作为字符串值以及系统自动设置的类型实现}}

在数据库中,我只有一列代表该值。我也保存了类型。

您会推荐哪种替代解决方案?我不想创建* boolean_value *,* float_value *,* string_value *属性来适应我可能面临的不同场景。

2 个答案:

答案 0 :(得分:3)

我认为3个值在概念上是不同的。
如果我遇到问题,我会在数据库级别上有三个不同的字段 关于1NFeach attribute contains only atomic values, and the value of each attribute contains only a single value from that domain。)
很快或者晚你需要计算浮点值或bool值的比较,将它们分开将有很大帮助,数据模块将是说明性的。

答案 1 :(得分:2)

应该只有一个真正的价值;使用最小公分母将此值存储在数据库中,但仍满足所有可能的值(例如,如果值为“true”vs“false”,则使用布尔值)。在应用程序层执行类型杂耍。理解Single Source of Truth理论可能有助于您的设计决策。

如果你将它存储在数据库中用于缓存目的,那么存储所有3种类型更有意义 - 如果性能为王,则浪费周期转换没有意义。