我正在建立一种学校管理系统。
我想管理的数据库记录,如评估,学期/季节,学年。每个信息必须属于一个特定的学年,所以在任何时候,管理员可以查询与特定年份有关的信息。评估也不仅可以属于一个学年,还可以属于学期、班级、科目、学生。
我一直在研究如何为此开发一个可伸缩的数据库模式。我曾想过,每年都有不同的数据库,或者把它们合并在一个非常不同的表格上。但是,如何正确地将每一份评估报告引用到特定的学生、科目、班级、学期和年份,仍然是我对整个问题的困惑。
发布于 2016-08-01 09:04:29
让我们尝试把这些信息放在一起,并尝试一些解决方案。
首先:每个表都有一个ID列,可以从其他表中引用。我将假设该列名为ID,引用列为tablename_id。
因此,根据您的描述,我假设下面的表(和引用):
ACADEMIC_YEARS
术语(academic_year_id)
学科
类(subject_id,term_id)
学生
入学人数(student_id、class_id)
评估(enrollment_id)
因此,入学人数决定了学生所选的课程。课程指的是主题和术语。这意味着必须为每个术语新建相同的类,因此假设类是临时的。如果类总是相同的话,您可以将term_id从类移到注册,尽管这似乎不太可能。
评估与入学有关。因此,它“知道”哪个班级(因此,主题和学期)和哪个学生是由推荐人评估。
根据你的描述,我不确定这种形式的评估是否足够,或者是否还会有更高级别的其他评估。因此,请澄清这一点。
发布于 2016-07-31 19:13:33
任何事情都有发生的日期和时间。在它发生的时候,它属于不同的类别。一个学年,一个季节,一个学期,什么都行。
由于您正在执行关系数据库,一种方法是通过外键。一个学年可能会有许多评估表明它们发生在那一年。然而,这将是愚蠢的,除非这一年的记录有一些有用的信息,你正试图链接到的那一年。否则,最好只在评估记录中列出年份。
查一下正常的表格。他们会教你如何建立这些关系。请注意,您创建的结构越复杂,针对它编写查询就越困难。还要注意,如果您只创建一个庞大的表,那么您最好将所有内容都写到文本文件中。诀窍是在外来者之间找到平衡。
https://softwareengineering.stackexchange.com/questions/326238
复制相似问题