我有一个对象属性,可以接受string
值,bool
或float
。
当用户调用重载方法来设置属性setValue(float)
,setValue(bool)
或{{1}的值时,我选择将其作为字符串值以及系统自动设置的类型实现}}
在数据库中,我只有一列代表该值。我也保存了类型。
您会推荐哪种替代解决方案?我不想创建* boolean_value *,* float_value *,* string_value *属性来适应我可能面临的不同场景。
答案 0 :(得分:3)
我认为3个值在概念上是不同的。
如果我遇到问题,我会在数据库级别上有三个不同的字段
关于1NF(each 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种类型更有意义 - 如果性能为王,则浪费周期转换没有意义。