使用 Rails,我可以使用单个表来存储简单的值(性别、头发颜色、眼睛颜色)



假设我有一个 Person 表,用于存储有关该人的信息(很奇怪吧?我为性别、头发颜色和眼睛颜色等选择了框。与其为每个表创建一个单独的表,每个表都有一个描述字段,有没有使用单个表的好方法?也许是带有"名称"和"描述"字段的资源表?就这么简单吗?

Resources
=========
ID    Name       Description
--------------------
1     Gender     Male
2     Gender     Female
3     Eye Color  Blue
4     Eye Color  Green
5     Eye Color  Brown
6     Hair Color Black
7     Hair Color Brunette
8     Hair Color Blonde
9     Hair Color Red
Person
=========
ID  Name  Gender  Eye_Color  Hair_Color
-----------------------------------------------
1   Ryan  1       3          8

这是推荐的方法还是有更好的方法?

是的,就是这么简单,IMO 你的方法是正确的。但请注意,如果您选择 Ex:一个人的多种头发颜色,您的方法将不起作用。

但我相信保持代码简单,直到您需要更改它,请在有时间时阅读 YAGNI :)

你可以这样做,这将是一个多态的关联。

如果您不需要查询此信息,但只是能够访问它,则可以使用 serialize 并将所有值存储在一列中。所以一个人的记录会有一列,我们称之为属性,它会有"eye_color:蓝色,性别:男性",等等......

我会在 Person 和 Physical_attributes 之间创建一个Physical_attributes单独的表,personal_physical_attributes,在那里我将存储人员的 ID、Physical_attribute的 ID 和该Physical_attribute的描述。

最新更新