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

时间:2012-09-16 13:45:08

标签: model-view-controller model yii referential-integrity

我正在使用Yii框架处理应用程序,因此它的MVC风格。我有一个记录类型“人”,其中包含有关成员资格的信息。会员有两种类型:成人和孩子们。与孩子们一起,我们知道他们的年龄,他们分为年龄组。年龄组具有名称(例如“8& Under”)。例如,John Smith&简史密斯有两个孩子吉米史密斯和简妮史密斯。 Janey想要做一个足球项目,所以我们需要知道她的年龄并把她放在一个年龄段。吉米正在做艺术与娱乐工艺品所以我们不需要知道他的年龄因为他的计划没有按年龄划分。我们不要求成年人的年龄。

所以问题是:我对如何存储它有一些选择。我可以:

  • 在person表中放入一个int agegroup字段,并在为人们定义模型时将值定义为CONST值(并且可能对于“undefined”具有特殊值 - 对于成年人。然后我需要写一点用于将const值转换为描述性标签的代码。
  • 如上所述在age表中放置agegroup字段,但也在数据库中添加另一个带有参考数据的表。对此新表强制引用完整性。这提出了另一个问题 - 如果我不知道/关心年龄组的情况,我应该在参考表中创建一个虚拟记录,还是应该在人员表年龄组字段中允许空值?
  • 他人?

我知道我可以做其中任何一项工作。但我欢迎有关哪种方法更受欢迎以及原因的建议!

1 个答案:

答案 0 :(得分:0)

对于未来扩展的可能性(您可能想要创建,删除和修改年龄组),我建议您使用包含开始年龄,上限年龄和描述的年龄组表。您可以将开始年龄保留为空以表示“最多n”/“n”和“较低”组,反之亦然。主键由起始年龄和上年龄组成(复合键。)

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