需要数据库设计的帮助

时间:2011-03-18 04:12:57

标签: mysql database-design data-modeling

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

表格将包含3个考试成绩。

  1. 考试A:8个具有无限选修科目的必修科目。
  2. 考试B:6个具有无限选修科目的必修科目。
  3. 考试C:1个必修科目,有4个选修科目。
  4. 要记住的特征:

    1. 每个主题的结果都需要搜索(例如:在考试A中找到数学A)
    2. 基本总计算(例如:计算考试A的数学中的As数)
    3. 只是插入数据我就能想到一些东西,但是当把这些功能放到混合中时,它就行不通了。

      我的最后一招是拥有一张表格:studentid,考试,主题代码,结果。这将像搜索和计算一样工作,但从长远来看,我有一种非常混乱和庞大的数据库的感觉。

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

      有什么建议吗?

2 个答案:

答案 0 :(得分: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'

(我知道使用连接会比连接不同表的位置更好,但我有点懒。)

主题导致可搜索...我们没有足够的信息。事实上,我的回答可能完全没有,但我认为我现在可以通过给定的信息得到它。制作可搜索的内容只是创建一个足够有用的选择陈述的问题。

答案 1 :(得分:1)

我建议你看一下Quiz Data Model,而不是为你想要达到的目标编写一种全新的方法。这是非常全面的,如果它没有解决你需要的一切,你只需要做一些小调整就可以到达那里。