我们的组织为我们的客户提供各种服务(例如网络托管、技术支持、定制编程等)。我们网站上有一个页面列出了所有可用的服务及其相应的价格。这是静态数据,但我的老板希望它全部从数据库中提取。
列出了大约 100 项服务。然而,其中只有两个具有非数值的“价格”(具体来说,字符串“ISA”和“成本+ 8%” - 我真的不知道它们应该是什么意思,所以不要问我)。
我不想仅仅因为这两个列表而将“价格”列设为 varchar。我目前的方法是创建一个特殊的“price_display”字段,该字段为空白或包含要显示的文本以代替价格。虽然这个解决方案感觉太像一个肮脏的 hack(它会不必要地使查询复杂化),那么有更好的解决方案吗?
最佳答案
假设此列是向客户显示的价格,可以包含任何内容。
如果您尝试将其设为数字列,您会感到很伤心。您已经在与两个不一致的值(value)观作斗争,明天您的老板可能想要更多...
- 申请价格!
- 为今天的特别节目调用我们!!
你明白了。
如果您确实需要一个数字列,则将其命名为internalPrice 或其他名称,并将您的数字约束放在该列上。
关于database - 数据库建模时如何处理 "special-case"数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/345021/