如何设计学生成绩表?
请教大佬们,中小学学生成绩表的设计
方案一:
学生成绩表
这样设计的话,学生2000人5门课20次考试就20万条数据了,感觉数据量太大了点:
方案二:
学生成绩表
请问有经验的大佬还有其它设计方式么?利弊如何选择好
-- 学生信息表:CREATE TABLE StudentInfo ( StudentID INT PRIMARY KEY, Name VARCHAR(100), -- 其它学生基本信息);-- 课程信息表CREATE TABLE CourseInfo ( CourseID INT PRIMARY KEY, CourseName VARCHAR(100));-- 考试信息表CREATE TABLE ExamInfo ( ExamID INT PRIMARY KEY, ExamName VARCHAR(100), ExamDate DATE);-- 学生成绩表CREATE TABLE StudentScores ( StudentID INT, ExamID INT, Scores JSON, PRIMARY KEY (StudentID, ExamID), FOREIGN KEY (StudentID) REFERENCES StudentInfo(StudentID), FOREIGN KEY (ExamID) REFERENCES ExamInfo(ExamID));
在设计学生成绩表时,确实需要考虑数据存储优化和程序编写复杂度之间的平衡。以下是对您提出的两种方案的评估,以及一个可能的优化方案:
优点:
缺点:
优点:
缺点:
考虑到上述两种方案的优缺点,可以考虑以下优化方案:
使用三个表进行关联:
这种设计结合了方案一和方案二的优点,既保持了较高的灵活性(可以方便地添加新课程和学生),又减少了数据冗余(每个学生每门课程的成绩只存储一次)。同时,通过合理地建立索引和优化查询语句,可以降低查询复杂度。
在选择最佳方案时,需要综合考虑以下因素:
根据具体情况,可以选择合适的方案或结合多种方案进行优化。在实际应用中,还可以根据具体需求进行进一步的优化和调整。
1、数据库设计最起码要占用这个项目开发的40%以上的时间 2、数据库设计不仅仅停留在页面demo的表面 页面内容所需字段,在数据库设计中只是一部分,还有系统运转、模块交互、中转数据、表之间的联系等等所需要的字段,因此数据库设计绝对不是简单的基本数据存储,还有逻辑数据存储。 3、数据库设计完成后,项目80%的设计开发都要存在你的脑海中 每个字段的设计都要有他存在的意义,要清楚的知道程序中如何去运用这
一个Java springboot程序,需要用户根据角色登录,用户角色有管理员、学生、教师三种 目前数据库表有如下两种构建方式: 直接整一个用户表然后加一个权限字段 除用户表外,对于角色分成老师学生管理员三个表,将其与用户表进行关联 从程序的健壮性及后期维护成本来说,请问哪种方案好一点
我正在创建一个应用程序,对jOOQ的当前状态有点困惑。这是我第一次使用jOOQ处理所有东西,包括CRUD,所以我可能会遗漏一些东西。 我知道DAO和POJO可能会被弃用,但是,我不知道如何在数据库优先的设计中处理这个问题。 我能做的最简单的事情就是创建我自己的Pojos,但是我们又回到了通常的JPA实体文件,如果数据库发生了变化,这些文件将无法正确地与记录映射。 1)弃用生成pojos是否意味着我
问题内容: 我正在尝试构建一种表单生成器,该表单生成器将允许我以灵活的方式定义,显示和存储“测试”。即,允许用户通过网络界面创建一种新型的测试/表单(“分组”)并定义一组将在表单上显示的字段(任何类型的字段,包括日期,文本,广播,复选框等)。我还需要一个结果表,该表将存储保存在每个表单/测试中的值。 作为一个不足的示例,到目前为止,我有以下3个表: 上面的问题-如果没有其他问题-我不确定如何动态显
目前我正在从事基于Spring数据Neo4j的项目。在大多数节点中,可以有多种类型的不同关系,如下面的示例所示。 虽然在加载具有给定深度的给定用户时,此存储库工作正常,但主要问题是此查询将加载具有给定深度的所有现有关系。在这里,我只对某些/或一种特定类型的关系感兴趣,那么如何使用Spring命名的查询方法实现这一点呢?在使用命名查询方法加载时,是否可以为每个关系指定深度?或者我必须使用@query