【问题标题】:Understanding DB Design了解数据库设计
【发布时间】:2017-09-21 12:55:00
【问题描述】:

我想建立一个数据库来存储考试成绩。我想知道是不是更好

  • 每个科目都有一个表格,该表格将记录一个卷号

  • 有一个分数表,其中包含每个科目的卷号的多条记录

由于主题的数量不固定,哪种方法会更好。

对于第一种方法,由于表是使用php动态创建的,所以表名将成为一个变量,这意味着额外的清理工作,

对于第二种方法,卷号会有很多重复

由于我是 DBMS 的新手,所以任何见解都值得赞赏。

【问题讨论】:

  • 这可能会因为主要基于意见而关闭,但实际上,不要为每个主题制作表格。
  • @Don'tPanic 那么第二种方法可以吗?
  • 我认为您需要熟悉数据规范化概念。
  • 我听说过《为凡人设计数据库》这本书的好消息。
  • 有一个科目表,分数表可以对科目和卷号组合有唯一的约束,这样每个科目就只有一个分数,每个卷号。

标签: php sql database database-design pdo


【解决方案1】:

这是选择第二种方法而不是第一种方法的一个很好的理由。假设您想获得特定卷号的所有分数。 (例如使用1。)使用第二种方法,它只是:

SELECT * FROM marks WHERE roll_number = 1;

使用第一种方法(除非其他人知道更好的方法),它是:

SELECT * FROM subject_a WHERE roll_number = 1
UNION
SELECT * FROM subject_b WHERE roll_number = 1
UNION
SELECT * FROM subject_c WHERE roll_number = 1
...

等等,对于你未知数量的主题表中的每一个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 2011-09-30
    • 2011-06-07
    相关资源
    最近更新 更多