我有一个接受string
值、 abool
或 a的对象属性float
。
当用户调用重载方法来设置属性的值时,我选择将其实现为字符串值以及系统自动设置的类型setValue(float)
,setValue(bool)
或者setValue(String)
。
在数据库中,我只有一列代表该值。我也保存类型。
您会推荐什么替代解决方案?我不想创建 *boolean_value*、*float_value*、*string_value* 属性来适应我可能面临的不同情况。
我有一个接受string
值、 abool
或 a的对象属性float
。
当用户调用重载方法来设置属性的值时,我选择将其实现为字符串值以及系统自动设置的类型setValue(float)
,setValue(bool)
或者setValue(String)
。
在数据库中,我只有一列代表该值。我也保存类型。
您会推荐什么替代解决方案?我不想创建 *boolean_value*、*float_value*、*string_value* 属性来适应我可能面临的不同情况。
我认为这三个值在概念上是不同的。
如果我遇到问题,我将在数据库级别拥有三个不同的字段。
关于1NF ( each attribute contains only atomic values, and the value of each attribute contains only a single value from that domain
.)迟早
您将需要计算浮点值或比较布尔值,将它们分开会有很大帮助,数据模块将是说明性的。
应该只有一个真值;使用最小公分母将此值存储在数据库中,但仍满足所有可能的值(例如,如果该值是“真”与“假”,则使用布尔值)。在应用层执行类型杂耍。了解单一真相理论可能有助于您的设计决策。
如果您出于缓存目的将其存储在数据库中,那么存储所有 3 种类型更有意义 - 如果性能为王,则浪费循环转换毫无意义。