数据库表创建 - 分解年龄组

时间:2014-05-30 15:15:44

标签: mysql sql database database-design

我有一个辅导网站,教师列出他们对潜在学生年龄的偏好。

到目前为止,我已将这些年龄分为以下几类: 0-4,5-9,10-14,15-19,成人。我认为,这些类别代表了学生年龄段的体面断点。但无论如何 - 真正的问题是创建表格。

我将使用teacher_id的外键和另一个年龄列创建辅助表teachers_ages。我应该把这个专栏作为一个枚举,用以下可接受的选择'0-4''5-9','10 -14','15 -19','成人'?这在某种程度上是不好的做法(用单词组合数字?)是否违反了任何数据库创建规范?有没有更好的方法来打破与CRUD一起使用的年龄组?

更新:教师可以根据需要选择多个年龄组

2 个答案:

答案 0 :(得分:1)

通常,您将创建一个查找表,列出标识符和关联值。例如

查找表(AgeRange)

ID     Min_Age   Max_Age   Description
1      0         4         "Less than 4"
2      5         9         "5 to 9"
3      10        14        "10 to 14"
4      15        19        "15 to 19"
5      20        1000      "Adults"

现在,您可以添加另一个包含教师ID和年龄范围ID的表格。 (此表中可以有多个条目,允许教师拥有任意数量的偏好。)

验证您是否加入此表并查看Min_Age和Max_Age。报告时使用“说明”字段。

答案 1 :(得分:0)

如果每位教师只能选择一个年龄组,则无需添加第二张表。将年龄组字段放在教师表中。将数据类型设置为varchar,并使用检查约束作为五个选项。

您的方法是将群体分解为人口统计数据的有效方式,例如年龄,收入,人口等。