数据库规范化表格与树状数据

时间:2015-04-15 08:10:56

标签: mysql sql database database-schema

如何规范化此表格。它有一个类似树的结构,预计会像树一样生长。enter image description here

通过树状结构,我的意思是新学生,科目,水平和章节将不断添加或更新或删除

我想在此表中存储测验的结果。测验有多个科目,其中有多个级别,其中有多个章节。每个学生都可以选修不同的科目。 那么这个表是否适合存储结果,或者我需要对此表做些什么?

1 个答案:

答案 0 :(得分:0)

在这种特殊情况下,您需要创建几个独立的表:

Table "Student"

ID, Name

1, John
2, Jack
Table "Subject"

ID, Name

1, Math
2, Science
3, Geography
4, History
5, English
Table "Levels"

ID, Name

1, Intermediate
2, Moderate
3, Difficult
Table "Chapters"

ID, Name

1, Chapter 1
2, Chapter 2
3, Chapter 3

依旧等等。

然后定义表之间的关系,如下所示:

Table "student_subject_level"

ID, student_id, subject_id, level_id

1, 1, 1, 1 (John, Math, Intermediate)
2, 1, 2, 2 (John, Science, Moderate)

到目前为止,您有学生,相应的副科目和科目水平。由于我们可能有每个级别的多个章节,我们需要另一种关系:

Table "student_subject_level_chapter" (or use simpler name)

student_subject_level_id, chapter_id
1, 1 (John, Math, Intermediate, Chapter 1)
1, 2 (John, Math, Intermediate, Chapter 2)
2, 1 (John, Science, Moderate, Chapter 1)

依此类推。首先分离各个表,然后找出你想要实现的关系。在您拥有冗余数据的每个新关系之前,您希望拥有保持所需关系的新表。一旦你有了ID的引用就会容易得多,所以从各个表开始并逐步完成。