【问题标题】:Designing a database for my students为我的学生设计一个数据库
【发布时间】:2012-09-02 07:56:46
【问题描述】:

我在管理数据库方面相当新手,但我知道我想为我的教学需求完成什么。

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

我有 7 个不同的类别,它们都包含许多问题。最重要的是,每个类别分为 6 个不同的级别。例如,听力理解有 A1、A2、B1、B2、C1、C2 级别。每个级别代表不同级别的英语技能。这些类别都有一组不同的问题。比如,“如果有人说得很慢并且使用清晰的语言,我可以理解。”

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

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

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

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

我还没有开始不同的关卡,因为我认为我应该先让它在一个关卡上工作,然后再添加所有其他关卡。

感谢您一直以来的耐心阅读。我希望我已经足够清楚,以便可以帮助我。

【问题讨论】:

  • 这是一个看似复杂的话题。简而言之,您的设计存在问题。每个类别及其问题的表格是设计的噩梦。当您添加类别时,您将添加表格……但与其阅读对您设计的评论,不如花时间尝试熟悉其他人提出的解决方案:请参阅 Michael Durrant 的回答 stackoverflow.com/questions/540885/…
  • 好的,谢谢您的评论。将所有问题放在同一张表中并给每个问题一个唯一的类别 ID 可能对我更好吗?当我添加更多级别时,我添加了一个带有 ID 的级别列表的表格,这些 ID 链接到更大表格中的每个问题。这有意义吗?

标签: database-design checkbox


【解决方案1】:

也许违背我更好的判断,我会发布这个作为答案......

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

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

例如,如果不显着修改架构,您将无法收到“您学习英语多少年了。”问题的正确答案,您无法重新评估学生,学生无法澄清任何答案等。

请记住 - 每当您开始添加列以适应新功能时,您的脑海中都应该有一个无声的喊叫,告诉您您(可能)做错了。阅读规范化。

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

更新

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

【讨论】:

  • 好吧,我不知道这一切可能都错了。你说我的设计是一场噩梦,所以我不得不假设我设计得很糟糕。我当然不介意批评,因为我认为这是一个学习的机会。我想要完成的是每个学生可以通过两种方式检查每个问题。他们要么选中“我可以做这个框”,要么选中“我想学习这个”框。作为老师,我希望能够选中“我确认学生知道这个”框。
  • 目的是能够看到每个学生的语言水平以及他们想要改进的地方,以便我可以针对每个学生创建有意义的作业。您将如何创建它?
  • 您有机会查看我发布的链接吗?我刚刚添加了架构的可视化表示。如果我理解正确,这是满足您需求的最简单方法之一。如果您确信您的要求不会改变,那么这种设计可能会非常有效。你可能永远不会超过它。但如果你这样做了,我建议你重新审视这个话题,而不是通过修改这个设计来增加功能。首先,试着理解为什么添加没有严格是/否答案的问题会很困难。
  • 出于好奇,您打算用什么来构建这个数据库/应用程序?
  • 感谢您的回答。上图正是我理解这个概念所需要的。
猜你喜欢
  • 2011-12-15
  • 1970-01-01
  • 1970-01-01
  • 2018-08-26
  • 1970-01-01
  • 2012-12-05
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
相关资源
最近更新 更多