Model view controller MVC应用程序-存储参考数据的位置

Model view controller MVC应用程序-存储参考数据的位置,model-view-controller,model,yii,referential-integrity,Model View Controller,Model,Yii,Referential Integrity,我正在使用Yii框架开发一个应用程序,因此它是MVC风格的。我有一个记录类型“person”,其中包含有关成员资格的信息。会员分为两类:成人和儿童。对于孩子们,我们知道他们中的一些人的年龄,并将他们分为不同的年龄组。各年龄组都有名字(例如“8岁及以下”),例如,John Smith和Jane Smith有两个孩子Jimmy Smith和Janey Smith。Janey想做一个足球项目,所以我们需要知道她的年龄,并将她分为一个年龄组。吉米在做工艺美术,所以我们不需要知道他的年龄,因为他的课程没有

我正在使用Yii框架开发一个应用程序,因此它是MVC风格的。我有一个记录类型“person”,其中包含有关成员资格的信息。会员分为两类:成人和儿童。对于孩子们,我们知道他们中的一些人的年龄,并将他们分为不同的年龄组。各年龄组都有名字(例如“8岁及以下”),例如,John Smith和Jane Smith有两个孩子Jimmy Smith和Janey Smith。Janey想做一个足球项目,所以我们需要知道她的年龄,并将她分为一个年龄组。吉米在做工艺美术,所以我们不需要知道他的年龄,因为他的课程没有按年龄划分。我们也不询问成年人的年龄

所以问题是:关于如何存储,我有一些选择。我可以:

  • 在person表中放置一个int-agegroup字段,并在我为person定义模型时将这些值定义为CONST值(对于成年人,可能有一个特殊的“undefined”值)。然后我需要编写一些代码将CONST值转换为描述性标签
  • 如上所述,在person表中放置一个agegroup字段,但同时在数据库中添加另一个包含引用数据的表。强制此新表的引用完整性。这引发了另一个问题-我是否应该在引用表中创建一个虚拟记录,用于我不知道/关心该年龄组的情况,还是应该在e人员表年龄组字段
  • 其他人

我知道这两种方法我都能做到。但我希望得到建议,说明哪种方法更可取,为什么!

了解未来扩展的可能性(您可能希望创建、删除和修改年龄组)我建议使用一个包含起始年龄、上限年龄和描述的年龄组表。您可以将起始年龄保留为null,以表示“最多n”/“n和下限”组,反之亦然,表示上限。主键将包括起始年龄和上限年龄(复合键)

然后,在“活动”表中,您需要强制引用年龄组表(即使只引用“null/null”或“所有年龄”记录)。这样,您就可以为年龄组创建活动——8岁及以下的足球、12至14岁的足球、所有年龄段的工艺品、18岁及以上的艺术品等等