我已经说过一个用户可以“创造”动物的应用程序。动物可以有不同的属性:它们的颜色,重量,是否是野性等。当我在DB中定义属性可以具有的值时,我有一个问题:
Table: attributes
+-------------+
| id | name |
+-------------+
| 1 | color |
| 2 | weight |
| 3 | wild |
+-------------+
Table: values
+--------------------------------+
| att_id (fkey) | name (varchar) |
+--------------------------------+
| 1 | brown | ok
| 1 | grey | ok
| 1 | white | ok
| 2 | 300 | <-- not good to put this in a varchar field
| 3 | yes | <-- not good to put this in a varchar field
+--------------------------------+
如何解决这个问题?我应该为int和boolean值创建另外两个表,并为attributes
表中的每个属性设置values
表中应该查找给定属性的值吗?或者什么是合适的设计?
答案 0 :(得分:0)
以下是三种Postgres方法:
type
,value_date
,...)提供value_string
列和单独的列。通常,出现此问题是因为您希望列中包含“不同”信息。例如,现在我正在开发一个数据项目,将数据从不同来源汇集在一起。我想在每一行中表示源级信息,但这与源不同。我的解决方案我将数据表示为具有source_system_info
列的常规行。该列包含我想要包含在源系统中的JSON表示。