database - 数据库建模时如何处理 "special-case"数据?

标签 database data-modeling

我们的组织为我们的客户提供各种服务(例如网络托管、技术支持、定制编程等)。我们网站上有一个页面列出了所有可用的服务及其相应的价格。这是静态数据,但我的老板希望它全部从数据库中提取。

列出了大约 100 项服务。然而,其中只有两个具有非数值的“价格”(具体来说,字符串“ISA”和“成本+ 8%” - 我真的不知道它们应该是什么意思,所以不要问我)。

我不想仅仅因为这两个列表而将“价格”列设为 varchar。我目前的方法是创建一个特殊的“price_display”字段,该字段为空白或包含要显示的文本以代替价格。虽然这个解决方案感觉太像一个肮脏的 hack(它会不必要地使查询复杂化),那么有更好的解决方案吗?

最佳答案

假设此列是向客户显示的价格,可以包含任何内容。

如果您尝试将其设为数字​​列,您会感到很伤心。您已经在与两个不一致的值(value)观作斗争,明天您的老板可能想要更多...

  • 申请价格!
  • 为今天的特别节目调用我们!!

你明白了。

如果您确实需要一个数字列,则将其命名为internalPrice 或其他名称,并将您的数字约束放在该列上。

关于database - 数据库建模时如何处理 "special-case"数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/345021/

相关文章:

sql - 唯一标识符与身份

objective-c - 组织数据模型 objective-c

nosql - Cassandra 的样本数据模型?

php - 最好运行 2 个 sql 查询或 1 个并处理重复的结果集?

sql - 在 sql/json 中构造嵌套 JSON 值(Oracle 数据库)

php - 将 obj std 转换为模型 laravel DB::query

mysql - 通过外键查找 Max() 值

oracle - 日期维度的代理键?

database - Firebase 的喜欢/不喜欢功能

mysql - Delphi XE5 FireDAC 错误 : Cannot load vendor library [libmysql. dll 或 libmysqld.dll]