【问题标题】:Need help on database designing在数据库设计方面需要帮助
【发布时间】:2011-07-17 21:45:47
【问题描述】:

我目前不知道如何设计这张桌子,所以我真的想要一些建议。说明如下:

表格将保存 3 个考试结果。

  1. 考试 A:8 门必修科目和无限可选科目。
  2. 考试 B:6 门必修科目和无限可选科目。
  3. 考试 C:1 门必修科目和 4 门可选科目。

要记住的功能:

  1. 每个科目的结果都必须是可搜索的(例如:在考试 A 中查找数学 A)
  2. 基本总计算(例如:计算考试 A 的数学中有多少 As)

只是插入数据我会想到一些东西,但是当将功能混合在一起时,它就行不通了。

我最后的办法是使用一个包含以下内容的表格:studentid、exams、subjectcode、result。这将像可搜索和可计算的那样工作,但是从长远来看,我感觉一个非常混乱和庞大的数据库。

我目前的设计(由我的朋友提供): 每个主题及其结果都有自己的领域。它有效,但很难扩展(添加更多主题)。

有什么建议吗?

【问题讨论】:

    标签: mysql database-design data-modeling


    【解决方案1】:

    可能的表结构(省略列定义):

    Exam
    ---------
    Exam_ID
    Exam_name 
    number_of_req_subjects
    number_of_opt_subjects  <---- -1 could be infinite
    
    Subject
    -----------
    Subject_id
    subject_name
    
    exam_subject
    ------------
    exam_subject_id
    exam_id
    subject_id
    required
    
    exam_result
    ------------
    exam_result_id
    exam_subject_id
    result  
    

    要获得考试 A 中数学 A 的数量:

    SELECT count(exam_result_id)
    FROM exam_result er, exam_subject es, subject s, exam e
    WHERE er.exam_subject_id = es.exam_subject_id
    AND es.subject_id = s.subject_id
    AND es.exam_id = e.exam_id
    AND e.exam_name = 'A'
    AND s.subject_name = 'MATH'
    

    (我知道使用连接会比在哪里连接不同的表更好,但我有点懒惰)。

    主题结果可搜索...我们没有足够的信息。事实上,我的答案可能完全不正确,但我认为我现在可以根据给定的信息得到它。使某些东西可搜索只是创建一个足够有用的 select 语句的问题。

    【讨论】:

      猜你喜欢
      • 2011-07-23
      • 2014-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2010-11-11
      相关资源
      最近更新 更多