0

私は Yii フレームワークを使用するアプリケーションに取り組んでいるので、その MVC スタイルです。メンバーシップに関する情報を含むレコード タイプ「person」があります。メンバーは大人と子供の2種類。子供たちと一緒に、彼らの何人かは私たちが彼らの年齢を知っており、彼らは年齢グループに分けられています. 年齢グループには名前があります (例: 「8 歳以下」)。例として、John Smith と Jane Smith には 2 人の子供 Jimmy Smith と Janey Smith がいます。Janey はサッカー プログラムをやりたいと思っているので、彼女の年齢を知り、年齢グループに入れる必要があります。ジミーはアート&クラフトをやっているので、彼のプログラムは年齢で分けられていないので、彼の年齢を知る必要はありません. また、大人の年齢は尋ねません。

質問: これをどのように保管するかについて、いくつかの選択肢があります。私はできた:

  • person テーブルに int agegroup フィールドを配置し、人々のモデルを定義するときに、その値を CONST 値として定義します (そして、おそらく「未定義」の特別な値を持っています - 大人向けです。次に、翻訳するための小さなコードを書く必要があります。説明的なラベルへの const 値。
  • 上記のように person テーブルに agegroup フィールドを配置しますが、参照データを含むデータベースに別のテーブルも追加します。この新しいテーブルへの参照整合性を強制します。これは別の質問を提起します - 年齢層を知らない/気にしない場合のために、参照テーブルにダミー レコードを作成する必要がありますか、それとも people テーブルの agegroup フィールドに null 値を許可する必要がありますか?
  • 他?

これらのいずれかを機能させることができることを知っています。しかし、どのアプローチが好まれるのか、そしてその理由についてアドバイスをいただければ幸いです。

4

1 に答える 1

0

将来の拡張の可能性 (年齢グループの作成、削除、および変更が必要な場合があります) のために、開始年齢、上限年齢、および説明で構成される年齢グループ テーブルを用意することをお勧めします。開始年齢を null のままにして「n まで」/「n 以下」のグループを示すことも、その逆に上限を指定することもできます。主キーは、最初と上の年齢を合わせたもの (複合キー) で構成されます。

次に、「活動」テーブルで、年齢グループ テーブルへの参照を強制する必要があります (「null/null」または「すべての年齢」レコードへの参照であっても)。このようにして、年齢グループの活動を作成できます。 - 8 歳以下のサッカー、12 歳から 14 歳のサッカー、すべての年齢の工芸品、18 歳以上のアートなど。

于 2012-09-16T15:22:25.620 に答える