中介表设计

时间:2014-04-19 01:34:49

标签: mysql sql

我很难理解中间表的工作方式。

这是我的预期设计:我有一个'用户'表。每个用户都有自己的课程,' course_id'。课程的名称是在'课程'表,中间表是' users_courses'。

users:  
user_id (pk)

users_courses:  
user_id (pk)  
course_id

courses:  
course_id (pk)  
course_name

这是正确的方法吗?这对我来说没有意义,因为我不能为同一个用户输入多个值,因为他要创建重复的密钥,因此他需要多个课程。 我如何使它工作?

1 个答案:

答案 0 :(得分:2)

要仅允许用户和课程的一个组合,但允许用户参加许多课程,您必须将user_idcourse_id放在一个唯一的密钥中。

create table users_courses
(
  user_id int,
  course_id int,
  unique index u_idx (user_id, course_id)
)