2013-03-27 105 views
0

我想实现的化学测验建议为竞猜数据库设计

的想法数据库是提供一种使用marvinscketch从chemaxon化学问题,使用cxsmiles作为复合结构。

我正在寻找一些建议真的,不知道如果我的数据库设计会正常工作?

该数据库中的表:

  • 问题:主表关系
  • QuestionType:一类问题的字符串(例如一种名为oneStructureQuestion问题)
  • 类别:将该类别存储在字符串中,并与课程单元和子单元关联
    • 单元:课程单元内容的说明
      • 亚基:描述为大纲

一个类型的问题的一个例子的亚基是:

  • oneStructureQuestion
    • questionTxt
    • 结构

enter image description here

该数据库的代码是在这里

https://gist.github.com/friveroll/94c964af9eba1b6c7c5b

这是正确的模式? 我该如何改进?

+0

如果名字是英语,这样我们就可以理解他们这会有所帮助。而对你的数据模型的一些描述会有所帮助。 – 2013-03-27 09:21:35

+1

我添加了一些描述,现在所有的名字都是英文的。 – friveroll 2013-03-27 20:44:20

回答

1

我不明白你当前设计的表格的名称;),但我不会为每种类型的问题创建一个表格。让您的问题表包含所有类型问题的所有信息,描述该类型的枚举字段,并且只有在其他情况下具有多值字段或重复数据时才引用其他表。存储多个NULL值并不昂贵。

例子:

question 
- id 
- type (ENUM('NUMBER','MULTIPLE_CHOICE','BOOLEAN', ...) 
- questionText 
- correctNumber (INT, ...) 
- correctBoolean 
- mcListId 
- correctMultipleChoiceOptionId 
- ... 

multipleChoiceList 
- id 
- name 

multipleChoiceOption 
- id 
- multipleChoiceListId 
- label 

answer 
- id 
- questionId 
- numberGiven 
- booleanGiven 
- givenMultipleChoiceOptionId 
- ... 
+0

谢谢你的建议,我修改了这个问题,并附上了一个这个设计的SQL转储的要点。我正在研究有关枚举和找到这个话题http://stackoverflow.com/questions/766299/mysql-enum-performance-advantage。请让我知道你认为新模型有什么用处。 – friveroll 2013-03-27 20:42:04