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

はい、それはとても単純です、IMOあなたのアプローチは正しいです。ただし、例:1人に複数の髪の色を選択した場合、アプローチは機能しないことに注意してください。

しかし、私はあなたがそれを変更する要件を得るまでコードを単純に保つと信じています、あなたがしばらく時間があればYAGNIについて読んでください:)

于 2012-07-06T04:29:28.180 に答える
1

あなたはそれをそのように行うことができ、それはポリモーフィックな関連になるでしょう。

この情報を照会する必要はないが、アクセスできる場合は、シリアル化を使用して、すべての値を1つの列に格納できます。したがって、人物レコードには、「eye_color:青、性別:男性」などの列があり、属性と呼びます。

于 2012-07-06T03:31:55.547 に答える
0

Physical_attributesと呼ばれる別のテーブルと、PersonとPhysical_attributes、personal_physical_attributesの間に関連付けられたテーブルを作成します。ここに、個人のID、Physical_attributeのID、およびそのPhysical_attributeの説明を格納します。

于 2012-07-06T06:42:29.290 に答える