2012-08-31 54 views
0

我在管理数据库方面颇为陌生,但我对自己想要完成的教学需求有了一个想法。为我的学生设计数据库

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

我有7个不同的类别,都包含一些问题。最重要的是,每个类别分为6个不同的级别。例如,听力理解具有A1,A2,B1,B2,C1,C2等级。每个级别代表不同的英语水平。这些类别都有一系列不同的问题。比如说,“我可以理解,如果有人说得慢一点,并使用清晰的语言。”

每个类别中的每个问题也有三个复选框。一个是学生可以检查他们是否可以针对具体问题回答“是”,一个是我(老师)在我确认他们可以时检查,另一个是学生填写的复选框,如果问题是他们的目标喜欢达到。

到目前为止,我已经为学生创建了一个表格,列出了包含大量问题的每个类别的所有7个类别和一个表格。我还有一个与学生表和类别列表相关的“走过去”表,因为直接链接它们会是我假设的多对多关系。

这是一个明智的设计这样的数据库的方式吗?

我现在最大的问题是如何将复选框添加到组合中。它们应该作为单独的表格添加,还是应该将它们与问题放在类别表中?显然,他们应该与每个学生以及每个问题相关联。

我还没有开始在不同的水平,因为我认为我应该使它与第一个级别的工作,然后添加所有其他级别。

感谢您耐心阅读。我希望我已经足够清楚,以便有可能帮助我。

+0

这在创建表的可视化表示是一个看似复杂的话题。总之,你的设计存在问题。每个类别及其问题的表格都是设计的噩梦。当你添加类别时,你会添加表格......但是,不要去阅读对你的设计的批评,你可能会花更多的时间去熟悉其他人提出的解决方案:请参阅Michael Durrant的回答http://stackoverflow.com/问题/ 540885 /数据库设计调查系统 – gangreen

+0

好的,谢谢你的评论。 它可能会更好地把所有的问题放在同一个表中,并给每个唯一的类别ID?当我添加更多关卡时,我会添加一个表,其中包含ID链接到较大表中每个问题的级别列表。 这是有道理的吗? –

回答

1

也许对我的判断,我会张贴此作为一个答案......

我创建了一个简单的数据库结构,并插入根据您的要求的一些数据。您可以在这里查看:http://www.sqlfiddle.com/#!3/54a2d/3

这种结构非常僵化,以至于添加简单功能相当困难(从头开始建议)。

例如,如果没有对模式进行重大修改,您无法针对“您学习英语多少年”这个问题得到正确答案,您无法重新评估学生,学生无法澄清答案等。

记住 - 任何时候当你开始添加列以适应新的功能时,你的头上应该有一个无声的喊叫,告诉你你(可能)做错了。阅读有关规范化。

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

UPDATE

新增的SQL小提琴链接

enter image description here

+0

好的,我可能会对这个错误我不知道。你说我的设计是一场噩梦,所以我必须假设我设计得很糟糕。我当然不介意批评,因为我认为这是一个学习的机会。 我想完成的是每个学生都可以用两种方式检查每个问题。他们要么检查“我可以做这个盒子”,要么“我想学习这个盒子”。作为老师,我希望能够检查“I-confirm-that-the-student-know-this”框。 –

+0

目标是能够看到每个学生的语言水平和他们想要改进的内容,以便我可以为每个学生创建有意义的作业。 你会如何去创造这个? –

+0

你有没有机会看看我发布的链接?我只是添加了模式的可视化表示。如果我理解正确,这是满足您的需求的最简单方法之一。如果你确信你的要求不会改变,那么这个设计可能会很好地工作。你可能永远不会长大。但是如果你这样做,我建议你重新审视这个主题,而不是通过修改这个设计来增加功能。作为开始,试着了解为什么添加没有严格的yes/no答案的问题会很困难。 – gangreen