[数据库设计]关于学校相关项目的班级-课程数据库的设计的问题

KimiKudo 2019-03-07 10:31:32
项目背景:
一款与学校对接的在线上课系统,从学校获取学生名单导入项目,学生可以登录系统查看班级老师所发布的课程,购买课程,在线上课.

由于是与学校对接的,所以班级信息也需要建立一个数据库进行保存.
学生在登录系统之后,会显示自己学校的授课老师已发布的课程(一般为9门课程),学生可以直接购买观看,为了获取到这些信息,所以需要一个 班级-课程关联表,根据登录系统的学生的班级信息获取到相关的课程信息.

目前的设计方案如下(无关字段已略去):
1.班级表
ID
org_id 学校ID
grade_id 年级ID
class_id 班级ID
header_id 班主任ID

2.学生表班级相关
id 学生ID
org_id 学校ID
grade_id 年级ID
class_id 班级ID

3.班级-课程表
ID
org_id 学校ID
grade_id 年级ID
class_id 班级ID
course_id 课程ID
creator_id 授课老师ID

关联查询时,是根据学校年级班级三个字段进行关联的.

问题:
由于是学校相关的项目,存在一个学生升年级,分班的问题;
优点:学生信息修改便捷
学生信息在每年可以通过excel文件批量导入和修改,所以这样设计的话,批量修改的问题不大;
缺点:班级信息修改困难
这种设计存在问题是,当年级班级变更时,
原班级-课程表中的相关记录需要删除掉,否则升学的学生会因为班号获取到前一个年级学生已上的课程.
班级表中的相关记录也需删掉重新添加,因为班号班主任等信息会有大的变化,修改困难.

导致该数据库每年都需要大量的删除和修改,不利于维护.但目前没有想到什么更加合适的方案.
想看一下论坛上有没有愿意讨论的朋友QAQ
不知道问题有没有描述清楚,哪里不清楚欢迎随时提问!
...全文
292 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_41327902 2019-03-07
  • 打赏
  • 举报
回复
能在班级-课程对应表中加入一个年份的栏位不?
如果不能加的话,可以修改ID栏位成年份,加入年份后,年份+年级+班级 可以唯一指定课程,如果数据太多了,也可以根据年份来删除,也很方便
纳尼刘君 2019-03-07
  • 打赏
  • 举报
回复
嗯,我以为像学校那种课程是的。那这样不能年级和课程联系一块了。 可以加一个 班级老师-视频表 ID class_id 班级-老师表主键ID video 视频信息 ... .. 这样可以锁定班级和老师了
hgwyl 2019-03-07
  • 打赏
  • 举报
回复
某个学生3年的班级标识
今年:2019年,03年级,03班,KimiKudo
明年:2020年,04年级,03班,KimiKudo
后年:2021年,05年级,03班,KimiKudo

今年同一个年级的不同班级标识
2019年,03年级,01班
2019年,03年级,02班
2019年,03年级,03班

好像乱不了~挺工整地~索引也挺好设置的~
KimiKudo 2019-03-07
  • 打赏
  • 举报
回复
引用 3 楼 纳尼刘君 的回复:
我的思路是这样的,不知道对不对,作参考: 第1点:课程和年级关联。因为一个年级上这些课就说明了这个年级里所有班都上这些,不会出现1班上a课但2班不上的情况。 第2点:班级和老师关联。因为一个班级里会变动的,也就老师和学生(学生表有班级属性了),然后在这个表里标识一下班主任。 那在你的表的基础上的改动如下: 1.年级-课程表 ID org_id 学校ID grade_id 年级ID course_id 课程ID 2.学生表,不变 3.班级-老师表 ID org_id 学校ID grade_id 年级ID class_id 班级ID creator_id 授课老师ID status 班主任标识 总结:学生升学,除了导入学生表,如果有班级老师的excel也可以直接导入班级-老师表 。这个表如果要保留历史数据,可以像楼上说的加个年份标识;如果不保留,清空然后添加。
1.关于课程,因为是在线课程的项目嘛,这个课程指的是一个或多个视频(多个视频参考B站分P的那种,所以也可认为是一个),视频可能是由该班的任课老师发布的,所以必须与班级对应,任课老师一般是教二个班左右. 2.确实目前对于班主任的这个属性考虑放在教师表中或者关联表中区分,之前考虑过一些难办的特殊情况今天被否定掉了! 3.年份的属性确实是之前没想到的! 先感谢两位!
纳尼刘君 2019-03-07
  • 打赏
  • 举报
回复
我的思路是这样的,不知道对不对,作参考: 第1点:课程和年级关联。因为一个年级上这些课就说明了这个年级里所有班都上这些,不会出现1班上a课但2班不上的情况。 第2点:班级和老师关联。因为一个班级里会变动的,也就老师和学生(学生表有班级属性了),然后在这个表里标识一下班主任。 那在你的表的基础上的改动如下: 1.年级-课程表 ID org_id 学校ID grade_id 年级ID course_id 课程ID 2.学生表,不变 3.班级-老师表 ID org_id 学校ID grade_id 年级ID class_id 班级ID creator_id 授课老师ID status 班主任标识 总结:学生升学,除了导入学生表,如果有班级老师的excel也可以直接导入班级-老师表 。这个表如果要保留历史数据,可以像楼上说的加个年份标识;如果不保留,清空然后添加。
KimiKudo 2019-03-07
  • 打赏
  • 举报
回复
引用 1 楼 qq_41327902 的回复:
能在班级-课程对应表中加入一个年份的栏位不? 如果不能加的话,可以修改ID栏位成年份,加入年份后,年份+年级+班级 可以唯一指定课程,如果数据太多了,也可以根据年份来删除,也很方便
听起来确实是一个不错的思路!!! 我加一下理一下思路试试看!
数据库原理及技术》课程设计 一、课程设计的目的和要求 (1)培养学生理解与《数据库原理》课程相关的理论知识,学会分析实际问题的能力。 (2)培养学生运用《数据库原理》相关知识设计系统应用的思想和方法。 (3)培养学生查阅技术文献、资料、手册以及编写技术文献的能力。 (4)掌握主流数据库开发及系统设计技术,具体要求如下: 关系数据库采用Oracle、 SqlServer、MySQL等; 开发语言采用JSP+Java或.Net等; 系统构架采用SSH、SSM等MV C多层结构; 运行模式为B/S模式,要求至少能在Google、360、QQ、ie等一种主流浏览 器中运行; 中间件采用Tomcat、IIS等; 一人一题,不得私自换题,否则按零分计。 二、课程设计报告提纲 (1) 课程设计的题目、系统的总体功能描述 (2) 需求分析(概括描述、DFD、DD) (3) 数据库概念结构设计(局部E-R图、基本E-R图) (4) 数据库逻辑结构设计(关系模式—列表形式、存储过程、触发器、视图、索引) (5) 应用系统功能结构图(模块结构图) (6) 各功能模块程序流程图及其说明 (7) 程序源代码及其说明 (8) 总结(课程设计中遇到的主要问题和解决方法;创新和得意之处;课程设计中存在的不足 ,需进一步改进的设想;课程设计的感想和心得体会。) (9) 参考文献 三、评分规则 1、按照要求完成全部功能设计50分; 2、文档撰写文档30分; 3、上机检查答辩20分。 4、总评成绩折算成优、良、中、及格、不及格 四、课程设计作业提交 每人将设计的全部文档整理到一个word文件中。文件命名方式为:学号+姓名。统一交给 班长或学习文员,然后打包发送给任课老师。 课程设计题目 (1)学校图书借阅管理系统 功能要求: 实现图书信息、类别、出版社等信息的管理; 实现读者信息、借阅证信息的管理; 实现图书的借阅、续借、归还管理; 实现超期罚款管理、收款管理; 创建触发器,分别实现借书和还书时自动更新图书信息的在册数量; 创建视图查询各种图书的书号、书名、总数和在册数; 创建存储过程查询指定读者借阅图书的情况; 建立数据库相关表之间的参照完整性约束。 (2)高校学籍管理系统 功能要求: 实现学生信息、班级、院系、专业等的管理; 实现课程、学生成绩信息管理; 实现学生的奖惩信息管理; 创建规则用于限制性别项只能输入"男"或"女"; 创建视图查询各个学生的学号、姓名、班级、专业、院系; 创建存储过程查询指定学生的成绩单; 创建触发器当增加、删除学生和修改学生班级信息时自动修改相应班级学生人数; 建立数据库相关表之间的参照完整性约束。 (3)学校人力资源管理系统 实现学校部门信息、职务、职称和教职工信息管理; 实现教师的学籍经历管理; 实现教师的家庭关系管理; 实现教师的奖惩信息管理; 创建存储过程查询学校各部门各种职称的教职工数量; 创建触发器当增加、删除教职工和修改教职工部门信息时自动修改相应部门的职工 人数; 创建规则用于保证教职工的E-Mail的输入格式正确; 建立数据库相关表之间的参照完整性约束。 (4)某书店图书进货、销售管理系统 实现图书类别、出版社、图书、仓库信息的管理; 实现进货、入库管理; 实现销售、出库管理; 创建存储过程查询某段时间内各种图书的进货和销售情况; 创建视图查询各类图书的库存总数; 创建触发器当图书入库时自动修改相应图书的总量和存放仓库中该图书的数量; 要求一单可以处理多种图书(比如销售设置销售单及其明细两个表); 建立数据库相关表之间的参照完整性约束。 (5)某医院信息管理系统(药品库存、收费、医生病人等) 实现药品类型及药品信息的管理; 实现药品的入库、出库管理; 实现科室、医生、病人的管理; 实现处方的登记管理; 实现收费管理; 创建触发器,当药品入库、出库时自动修改库存; 创建存储过程统计某段时间内,各科室的就诊人数和输入情况; 创建视图查询各种药品的库存总数; 建立数据库相关表之间的参照完整性约束。 (6)某期刊的在线投稿审稿管理系统 实现作者、审稿人的信息管理; 实现稿件类型、稿件信息的管理; 实现稿件的审阅过程管理; 实现稿费、审稿费和版面费的管理; 创建存储过程,统计指定作者的稿件信息; 创建触发器,当收到审稿费时自动修改审稿费收到标记为"是"; 创建规则,使得作者的E-Mail必须满足电子邮件的基本格式; 建立数据库相关表之间的参照完整性约束。 (7)学校的工资管理系统 实现部门、职务、职称等基本信息的管理; 实现教职工信息的管理; 实现工资项目的管理,工资项目设有启用标志和加扣标志; 实现教职工工资项目及其工资的管理; 创建触发器当往教职工工资项目表中插入记录或删除记录时,自动修改该职工的应 发工资数和实发工资

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧