我们正在开发mysql中的数据库模式,以满足不断变化的需求。
它从一个简单的设计开始: fact
表格:
|id|featureid|featurevalue|
|----|----|----|
|1|1000|42|
``` `dimension` 表格:
featureid | featurename |
---|---|
1000 | awesome_feature |
直到今天,当需要一个新的需求来存储一个字符串时,一切都正常 `featurevalue` 到数据库。
我了解表模式的基本知识,并且 `featurevalue` 列不能同时为 `bigint(20)` 以及 `varchar(255)` .
所以我想添加一个名为 `featurevalue_string` 到 `fact` table。不过,我不太相信这个解决方案,因为只有1到2个具有字符串值的特性,其余的应该仍然是int。
这里的问题是,在我们的数据库设计中,如何适应需求的这种变化?
1条答案
按热度按时间2nbm6dog1#
您可以将其拆分为两列:
第一个描述数据,第二个包含数据。
将它们填充为
然后,当您选择数据时,可以对featuredatatype中指定的数据类型进行转换。
请注意,这实际上将成为一个维护和报告问题,您可能应该重新处理您的模式和/或重新定义您的问题,而不是这样做。