数据库设计
数据库设计
项目:学生导师互选系统
ps:由于本项目有安卓端和web端,所以数据库的设计是由两个小组的成员共同讨论,一起完成设计的。
主要内容:
-
表的设计
经过本次讨论,一共设计八张表,为:学生表(tc_student)、教师表(tc_teacher)、系负责人表(tc_departmentHead)、院负责人表(tc_teachingOffice)、志愿表(tc_voluntary)、志愿信息设置表(tc_voluntaryInfoSetting)、选题信息表(tc_issue)、选题结果表(tc_result)。
-
表的结构
-
表的关系
- 每个学生都有属于自己的志愿信息,所以志愿表中sid为外键,参考学生表中sid。
- 结果表中,采取以学生来映射对应导师的关系,处理起来比较方便,所以结果表中的sid为外键,参考学生表中sid
-
ER图
-
总结与感想
不得不说这次数据库设计的讨论收获还是不错的,在这次讨论的过程中大家都很积极地提出了自己的想法,都想把这个项目给做好。特别要感谢的是齐民把讨论的结果给总结出来,在这里献上100个赞。
在讨论的过程中也出现的许多问题,我觉得问题最大的就是对上一届学生的数据表的整合问题。在上届学长的表中,我们没有看到设置自动增长的主键,然后给我们后面要设计表的关联设置很多障碍。同时我们去查了下去年的数据库,发现表中字段的类型都是varchar,看到这个真的好想哭,毕竟这会加大后期数据的处理难度。而且在表中的信息也不完整,比如教师所在系别这一块,有的老师填的是数计学院,有的老师填的是数学与计算机学院,这就让我们更懵逼了。因为在之后我们会在接下来导师互选中要用到教师所在的系的信息,这就给我们带来了难题。原先我们的想法是通过存数字的方式来定位所在系别和方向,比如系别(0、计算机系 1、数学系 2...),这样后台对数据的可操作性就会比较灵活。表的结构中,数据都采用存字符串的形式,个人觉得没什么必要,如性别这个字段,只需要用0或1来表示男女。而且在在处理表的关系上,有个自增的主键id会带来许多方便。
总之,在大家共同的努力下,我们还是把数据库给设计出来了。也许这之中还存在着许多我们没有考虑到的问题,如索引、安全性这方面我们就没有进行详细设计等等。但我相信在大家的努力下,什么问题都不是问题。不得不感慨,团队合作真的很棒。