Mysql DB表创建--按年龄组细分
我有一个家教网站,老师们根据他们潜在学生的年龄列出他们的偏好 到目前为止,我已将这些年龄分为以下几类: 0-4,5-9,10-14,15-19,成年人。我认为,这些类别代表了不同年龄段学生的良好突破点。但不管怎样,真正的问题是表的创建 我将制作一个二级表,teachers\u ages,外键表示teacher\u id,另一列表示age。我是否应该使用以下可接受的选项“0-4”、“5-9”、“10-14”、“15-19”、“成人”将此列作为枚举?。这是一种不好的做法(用单词分组数字?)吗?它是否违反了任何数据库创建规范?有没有更好的方法来打破年龄组使用CRUDMysql DB表创建--按年龄组细分,mysql,sql,database,database-design,Mysql,Sql,Database,Database Design,我有一个家教网站,老师们根据他们潜在学生的年龄列出他们的偏好 到目前为止,我已将这些年龄分为以下几类: 0-4,5-9,10-14,15-19,成年人。我认为,这些类别代表了不同年龄段学生的良好突破点。但不管怎样,真正的问题是表的创建 我将制作一个二级表,teachers\u ages,外键表示teacher\u id,另一列表示age。我是否应该使用以下可接受的选项“0-4”、“5-9”、“10-14”、“15-19”、“成人”将此列作为枚举?。这是一种不好的做法(用单词分组数字?)吗?它是否
更新:教师可以选择任意多个年龄组如果每位教师只能选择一个年龄组,则无需添加第二个表。将“年龄组”字段放入教师表中。将数据类型设置为varchar,并对五个选项使用检查约束
您的方法是一种有效的方法,可以将组分解为人口统计数据,如年龄、收入、人口等。通常,您会创建一个查找表,其中列出标识符和相关值。比如说 查找表(AGrange) 现在,您可以添加另一个具有教师id和年龄范围id的表。(此表中可以有多个条目,允许教师具有任意数量的首选项。)
验证时,请加入此表并查看最小年龄和最大年龄。报告时,请使用描述字段。0?是的,我猜在教育方面没有什么意义。你有两个选择,第一个是(正如你所提到的)在定义每个年龄组时使用枚举字段,这很好,即使使用“成人”选项也是如此。但我可能会做的是创建一个age_groups表,每个组都在一个单独的行中,可以通过teacher表中的外键进行引用。这样做的好处是,您可以始终开发一个用于添加、删除和编辑年龄组的简单界面,以便管理员具有灵活性。另外,我不会将“15-19”归为数字,因为它有一个破折号,与“成人”没有区别。MySQL确实接受该语法,但从未强制执行该约束。(至于MySQL为什么接受这种语法,可能是为了提高与从另一个数据库导入的DDL的兼容性,也可能是为了文档。可以定义触发器来模拟检查约束。
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"