冗余与灵活性

时间:2015-07-07 06:53:42

标签: mysql database

我是MySQL数据库的新手,我正与我的前CSCI老师合作,​​建立一个学生数据库,保存他的学生成绩历史。我最初的想法是有一个学生表(studentID,名字,姓氏,中间名,性别),课程表(courseID,course_description),一个成绩表(studentID,courseID,年,final_grade),然后是AssignmentScores,TestScores的表,QuizScores和ExerciseScores。这些表中的每一个当然都有学生ID,课程ID,年份和部分(学校用来定义学期和学期的代码)字段,以及学生获得的分数。

这种方法的问题在于,在一个完美的世界中,所有课程都将具有相同数量的作业,练习,测试和测验,并且它们都具有相同的分值,但是,众所周知,这一点不是一个完美的世界。例如,有几个课程的作业标记为1a,而1b则分别为5分,而不是正常的10分,分别为10个作业(标记为1到10)。这也是他开始跟踪练习的第一年,所有课程都没有相同数量的练习,也不总是值得相同的分值。

为了保证灵活性,我们决定制作一个包含一般课程信息的表格,其中包括课程ID,年份,部分,类型(指定测验,作业,考试或练习),编号(1a,1b或1) ,2,3等...)和一个maxpoints字段(保持每个项目的最大点值)。然后我们还会有一个单独的分数表,这些分数基本上具有相同的字段,但是不是最大分数,而是一个获得点字段(用于保持学生在特定项目上的分数)。然后,他当然必须每年输入每个课程的详细信息,无论它是否与前一年不同。

对于他目前正在教授的两门课程,每桌有90行,其中大部分数据看似多余。

这样做似乎有很多冗余信息,但我没有看到任何其他方式允许过去,现在或未来的灵活性。我正在做这个项目的原因之一是希望用它来展示未来的雇主,我认为关系数据库的重点是尽量减少冗余信息,我不希望未来的雇主看到这个并说,“真是个傻瓜。”

所以我对stackoverflow社区的问题是,“还有更好的方法吗?”

0 个答案:

没有答案