用于创建两个连接表的数据库选择?

时间:2015-03-09 15:55:46

标签: database database-design android-sqlite

我需要数据库表“课程”和“学生”。

  • 课程表包含列(“_id”,“course_name”,“course_number”)。
  • 学生表有列(“student_name”,“student_number”,“course_number”)。

我已经创建了Courses表,但是我在创建Students表时遇到了问题。

两个班级可能有相同的学生,因此同一学生行将在学生表格中以不同的"course_number"两次存在。我不想要复制行。这样我就不能将"student_number"设为primary key。因为它会为多个类存在两次。如何设计这个表,我不能将多个"course_number"放在同一列上。

3 个答案:

答案 0 :(得分:1)

学生(身份证号码,姓名,号码) 课程(身份证,姓名,号码) StudentsCourses(student_id,course_id)

你必须建立多对多的关系。

答案 1 :(得分:1)

这是多对多的典型案例,为此,您需要在课程和学生之间设置第三个表格。架构看起来像这样:

Course表有列(“course_id”,“course_name”)

Student_course表有列(“student_id”,“course_id”);

Student表作为列(“student_id”,“student_name”)

Student_course表对学生和课程表都有外键约束。

示例数据:

课程:

id   |  name
------------------
1    |  Maths
2    |  English
3    |  Science

学生

id   |  name
---------------
1    |  Tom
2    |  Dick
3    |  Harry

Student_course

student_id | course_id
------------------------
1          | 1
1          | 2
2          | 1
3          | 3

在这个例子中,学生1(汤姆)在课程1和2(数学,英语),

学生2(迪克)仅参加课程1(数学)

学生3(Harry)仅参加第3课(科学)

答案 2 :(得分:1)

课程和学生之间有m到n的关系。 要将m转换为n关系,您需要第三个表。

courses_students
----------------
id_student
id_course

courses
----------------
id_course
// other fields

students
----------------
id_student
// other fields