MySQL数据库表设计-Sutdent与Score表详解

需积分: 10 0 下载量 60 浏览量 更新于2024-09-03 收藏 131KB DOCX 举报
"数据库day1.docx - 包含Student和Score表的定义及MySQL查询结果" 在数据库设计中,表的结构是至关重要的,因为它决定了数据如何存储和管理。在这个文档中,我们关注了两个数据库表:Student和Score,它们在教育或学校管理系统的上下文中经常出现。 首先,让我们详细了解`Student`表。这个表用于存储学生的相关信息。其字段包括: 1. **Id** - 学号,类型为INT(10),非空,作为主键,意味着每个学生都有一个唯一的学号,且自动递增。在MySQL中,主键用于唯一标识表中的每一行,并且通常用于关联其他表。 2. **Name** - 姓名,类型为VARCHAR(20),非空,表示学生的名字最多可以有20个字符。非空约束确保每个记录都必须有姓名。 3. **Sex** - 性别,类型为VARCHAR(4),允许为空,表明性别可以是四个字符的字符串,但也可以留空。这可能是因为某些情况下,性别信息未提供或者不适用。 4. **Birth** - 出生年份,类型为YEAR(4),允许为空,用于存储学生的出生年份,可能是四位数字的年份。允许为空意味着不是所有学生都必须提供出生日期。 5. **Department** - 院系,类型为VARCHAR(20),非空,表示学生所在的院系名称最多可以有20个字符。非空约束确保每个学生都要有所属的院系。 6. **Address** - 家庭住址,类型为VARCHAR(50),允许为空,用于存储学生的家庭地址,最多可以有50个字符。允许为空意味着地址信息可以不填。 接下来,我们看看`Score`表,它用于记录学生的成绩。其字段包括: 1. **Id** - 编号,类型为INT(10),非空,作为主键,同样自动递增,用于唯一标识每个成绩记录。 2. **Stu_id** - 学号,类型为INT(10),非空,但不是主键,而是外键,它引用了`Student`表的主键`Id`,表示这个成绩是哪个学生得的。外键约束确保成绩只能关联到存在的学生。 3. **C_name** - 课程名,类型为VARCHAR(20),非空,表示课程名称最多20个字符,确保每个成绩都有对应的课程。 4. **Grade** - 分数,类型为INT(10),非空,用于记录学生的具体分数,范围在0到100之间。非空约束保证每个成绩都有具体的分数值。 这两个表的定义展示了如何在关系数据库中存储和组织学生信息和他们的成绩。通过这种方式,我们可以进行复杂的查询,比如找出某个学生的所有成绩,或者统计每个课程的平均分。这种设计遵循了关系数据库的规范,易于维护和扩展,同时也支持高效的数据检索和操作。