我在管理数据库方面相当新鲜,但我对我想要达到的教学需求有所了解。
我打算在一些学生中存储有关英语技能水平的信息。我打算让每个学生登录数据库。在那里,他们应该能够通过选中与特定问题相关的方框来评估自己的技能。
我有7个不同的类别,都包含许多问题。最重要的是,每个类别分为6个不同的级别。例如,听力理解具有级别A1,A2,B1,B2,C1,C2。每个级别代表不同级别的英语技能。这些类别都有一系列不同的问题。就像,“我能理解,如果有人说话慢,并使用清晰的语言。”
每个类别中的每个问题也有三个复选框。一个学生可以检查他们是否可以对特定问题回答是,一个给我(老师)检查我什么时候可以确认,一个复选框让学生填写如果问题是他们的目标喜欢到达。
到目前为止,我已经为学生创建了一个表格,一个表格列出了所有7个类别,每个类别都有一个表格,其中包含许多问题。我还有一个与学生表和类别列表相关的“go between”表,因为直接链接它们将是我认为的多对多关系。
这是设计这样一个数据库的明智方法吗?
我现在面临的最大问题是如何添加复选框。它们应该作为单独的表添加还是应该将它们与类别表中的问题放在一起?显然,他们应该与每个学生以及每个问题联系起来。
我还没有开始在不同的级别,因为我认为我应该首先使用一个级别,然后添加所有其他级别。
感谢您耐心阅读。我希望我已经足够清楚,以便有可能帮助我。
答案 0 :(得分:1)
也许违背我更好的判断,我会将此作为答案发布......
我创建了一个简单的数据库结构,并根据您的要求插入了一些数据。您可以在此处查看:http://www.sqlfiddle.com/#!3/54a2d/3
这种结构非常严格,以至于添加简单的功能非常困难(建议从头开始)。
例如,在没有明显修改架构的情况下,您无法得到“您已经学习了多少年英语”这一问题的正确答案。,您无法重新评估学生,学生无法澄清任何答案等等。
请记住 - 每当你开始添加列以容纳新功能时,你的脑海中应该有一个无声的喊叫,告诉你你(可能)做错了。了解规范化。
另外,我不知道复选框是否会导致许多客户端/服务器组合出现问题,但在带有SQL Server后端的MS Access中,您需要添加TIMESTAMP
列,以便Access可以确定是否在提交更新之前记录已经改变。
<强>更新强>
添加了在SQL Fiddle链接上创建的表的可视化表示