0

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

所以问题是:关于如何存储它,我有几个选择。我可以:

  • 在 person 表中放置一个 int agegroup 字段,并在我为人定义模型时将值定义为 CONST 值(并且对于“未定义”可能有一个特殊值 - 对于成年人。然后我需要编写一些代码来翻译描述性标签的 const 值。
  • 如上在人员表中放置一个年龄组字段,但还要在数据库中添加另一个带有参考数据的表。对这个新表实施参照完整性。这引发了另一个问题 - 对于我不知道/不关心年龄组的情况,我应该在参考表中创建一个虚拟记录,还是应该在人员表的年龄组字段中允许空值?
  • 其他的?

我知道我可以使这些工作中的任何一个工作。但我欢迎就哪种方法更受欢迎以及为什么提供建议!

4

1 回答 1

0

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

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

于 2012-09-16T15:22:25.620 回答