0

假设我有一个 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

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

4

3 回答 3

1

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

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

于 2012-07-06T03:31:55.547 回答
1

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

但我相信保持代码简单,直到你需要改变它,当你有时间的时候阅读YAGNI :)

于 2012-07-06T04:29:28.180 回答
0

我将创建一个名为 Physical_attributes 的单独表,并在 Person 和 Physical_attributes 之间创建一个关联表,personal_physical_attributes,我将在其中存储人员的 id、Physical_attribute 的 id 和该 Physical_attribute 的描述。

于 2012-07-06T06:42:29.290 回答