我是一名计算机科学专业的学生,正在尝试开发一个应用程序来存储我亲爱的同事的成绩。为此,我将使用SQLite来存储成绩。在我的数据库中,将有一个名为Student的表(我的每一位同事)、一个表Course(我们上过的课程)和一个表Enrollment(注册),该表存储每个人所选课程的信息。
我还想在Student表中包含两个派生属性average_grade和total_credits,正如您可能已经想到的,我必须从其他两个表中删除这些信息,我面临的问题是:我该怎么做呢?
我曾经考虑过使用视图,但我可能会一直使用它,我认为我的应用程序不会有很好的表现。然后我考虑了物化视图,但我发现SQLite不支持它,现在我考虑使用TRIGGERS,但我认为我可能会使这个问题复杂化。
在SQLite中有什么好的干净的方法来做这件事吗?预先计算这些值,作为缓存,并且只在我改变某些表时才改变它们?
**注:**我只是想冻结一下,我很少向这个数据库中插入数据(只在学期末或考试成绩出来后)。
1条答案
按热度按时间wribegjk1#
根据您的描述,您有一个如下所示的数据模型:
如果要在
enrollment
表中插入新行时更新student
表中的average_grade
和total_credits
,可以创建一个触发器来执行此操作:但是,您可能需要考虑
UPDATE
和DELETE
操作是否会发生在enrollment
表上,然后相应地创建类似的触发器。