Database design 为我的学生设计一个数据库

Database design 为我的学生设计一个数据库,database-design,checkbox,Database Design,Checkbox,我在管理数据库方面相当新手,但我有一个想法,我想为我的教学需要完成什么 我打算在一些学生中存储有关英语技能水平的信息。我计划让每个学生登录数据库。一旦到了那里,他们应该能够通过勾选与特定问题相关的方框来评估自己的技能 我有7个不同的类别,都包含一些问题。除此之外,每个类别分为6个不同的级别。例如,听力理解水平为A1、A2、B1、B2、C1、C2。每个级别代表不同的英语技能水平。这些类别都有一组不同的问题。比如,“如果有人说得慢,语言清晰,我就能理解。” 每个类别中的每个问题也有三个复选框。一个是

我在管理数据库方面相当新手,但我有一个想法,我想为我的教学需要完成什么

我打算在一些学生中存储有关英语技能水平的信息。我计划让每个学生登录数据库。一旦到了那里,他们应该能够通过勾选与特定问题相关的方框来评估自己的技能

我有7个不同的类别,都包含一些问题。除此之外,每个类别分为6个不同的级别。例如,听力理解水平为A1、A2、B1、B2、C1、C2。每个级别代表不同的英语技能水平。这些类别都有一组不同的问题。比如,“如果有人说得慢,语言清晰,我就能理解。”

每个类别中的每个问题也有三个复选框。一个是学生可以检查他们是否可以对特定问题回答是,一个是我(老师)在我确认他们可以时检查,一个是学生填写的复选框,如果问题是他们想要达到的目标

到目前为止,我已经为学生创建了一个表,一个表列出了所有7个类别,每个类别一个表包含了一些问题。我还有一个与student表和category列表相关的“中间人”表,因为我假设直接链接它们是一种多对多关系

这是设计这样一个数据库的合理方法吗

我现在面临的最大问题是如何在混合中添加复选框。它们应该作为单独的表格添加,还是我应该将它们与类别表格中的问题放在一起?显然,它们应该与每个学生以及每个问题联系起来

我还没有开始使用不同的级别,因为我认为应该先使用一个级别,然后添加所有其他级别


感谢您的耐心阅读。我希望我已经足够清楚了,这样才有可能帮助我。

也许我会违背我更好的判断,将此作为一个答案

我创建了一个简单的数据库结构,并根据您的要求插入了一些数据。您可以在此处查看:

这种结构非常僵硬,添加简单的功能非常困难(建议从头开始)

例如,如果不大幅修改模式,您就无法获得“您学习英语多少年了”问题的正确答案,您无法重新评估学生,学生无法澄清任何答案,等等

记住——每当你开始添加专栏以适应新功能时,你的脑海中都会有一声无声的喊叫,告诉你(可能)你做错了。阅读关于规范化的文章

此外,我不知道复选框是否会导致许多客户机/服务器组合出现问题,但在带有SQL server后端的MS Access中,需要添加一个
时间戳
列,以便Access可以在提交更新之前确定记录是否已更改

更新

添加了在SQL FIDLE链接上创建的表的可视化表示


这是一个看似复杂的话题。简而言之,您的设计存在一些问题。每个类别及其问题的表格都是设计噩梦。当您添加类别时,您将添加表格……但与其阅读对您的设计的评论,不如将您的时间花在尝试熟悉其他人提出的解决方案上:参见Michael Durrant的答案好的,谢谢您的评论。把所有问题放在同一张表中,并给每个问题一个唯一的类别id,这对我来说是否更好?当我添加更多级别时,我会添加一个带有ID的级别列表的表格,我会将这些ID链接到更大表格中的每个问题。这有意义吗?好吧,我可能完全错了,我不知道。你说我的设计是一场噩梦,所以我不得不假设我的设计很糟糕。我当然不介意批评,因为我认为这是一个学习的机会。我想做到的是,每个学生可以用两种方式检查每个问题。他们要么勾选“我能做这个”框,要么勾选“我想学这个”框。一、 作为教师,我希望能够勾选“我确认学生知道这个”框。目的是能够看到每个学生的语言水平以及他们想要提高什么,以便我能够针对每个学生创建有意义的作业。你会怎么做呢?你有机会看看我贴的链接吗?我刚刚添加了模式的可视化表示。如果我理解正确,这是满足您需求的最简单方法之一。如果您确信您的需求不会改变,那么这个设计可能会很好地工作。你可能永远都无法摆脱它。但如果您这样做了,我建议您重新讨论这个主题,而不是通过修改此设计来添加功能。首先,试着理解为什么添加没有严格“是/否”答案的问题会很困难。出于好奇,您打算用什么来构建此数据库/应用程序?谢谢您的回答。上面的图片正是我理解这个概念所需要的。