设计MySQL数据库

时间:2014-03-07 14:41:18

标签: mysql sql database-design

我有三张桌子,

学生,学生班,班级

学生将sid作为主键,类将cid作为主键。

studentclass将学生和班级联系在一起,有两列,sid,cid(没有特殊键)。

是否可以摆脱studentclass表并仅使用student和class表,而不在学生或类表中创建重复的条目?

(班级可以有多个学生,学生可以参加多个班级)

感谢。

3 个答案:

答案 0 :(得分:1)

如果业务逻辑表明,一个学生可以参加多个班级,那么最好有一个链接表 StudentClass

您可以将此视为多对多关系,其中一个学生可以参加多个班级,一个班级可以有多个学生。

答案 1 :(得分:0)

学生班级表是必需的,假设学生参加多个班级。

如果他们不这样做,你只需在student表中添加一个classId字段,即可删除studentclass表。

答案 2 :(得分:0)

如果没有明确的专栏,并且之前已经在很多时候写过大学注册系统,这里有一些我已经实施的表格。

学生 - 明显,学生名单,主要信息等

ClassCategory - 通用类别......(ENG)英语,(MTH)数学,(SCI)科学等,不是特定的班级,而是类别

ClassCourse - 这些是教学大纲中可以找到的东西...... ENG-101,MTH-210等。这将有共同的信息描述课程的内容,而不是教学对象,学分,等等但所涵盖的材料,可能是任何先决条件,是某人审阅内容的基本教学大纲。

学期 - 学期列表,例如Winter-2013,Spring-2014等。

设施 - 将教授特定课程的设施位置列表 - 可以是建筑物,校园等

教师 - 教师名单,联系信息,无论他们可能教授的具体课程如何。

ClassOffering - 这里是所有课程的所在,提供时等,并且有自己的PK ID,还有ClassCourse,Semester提供,Facility,老师和特定的房间和时间。您可以通过不同的老师和时间段为日间和晚间课程提供相同的“ENG-101”课程,每天提供5次。

StudentClasses - 这就是你目前所处的位置。这将包括哪个学生以及他们注册的特定课程。此外,在此记录中您可以有一个删除,撤销状态等,以及其他可能具体的设置,例如尝试的学分,获得的学分,最终成绩,完成日期,等等......这张表将是为学生计算GPA的基础。

这些表中的每一个都有各自的“PKID”值,每个表应该都有自己的值。

虽然这不是一个明显的完整数据库,但它有望引导您更好地考虑您可能需要考虑的内容。