具有许多学校课程的用户的模式设计

时间:2015-07-15 23:23:49

标签: mysql sqlite eloquent schema

我正在尝试添加一个名为user_classes的新表,它将关联我的用户类。我正在建立一个允许他们生成课程表的网站。在我的数据库中,我有两个现有表 - users表,其中包含idnameemail

=users table=                                                            
id    name    email                                                       
1     John    john@example.com   

我还有一个classes表,其中包含我的所有类。 crn只是课程编号,name是该课程的名称。

=classes table=                                                              
id    crn    name                                                              
1     4000   CS 101                                                             
2     4001   CS 102                                                             
3     4003   CS 103  

这张新表正是我的想法。我有id这是PK,有一个user_id列,表示John Doe包含以下所有crn

=user_classes table=                                                         
id    user_id   crn                                                       
1     1         4000                                                      
2     1         4001                                                      
3     1         4003          

我的问题是,user_classes是一个好的设计吗?我应该使用类中的crn而不是id而不是CREATE EVENT IF NOT EXISTS `money` ON SCHEDULE EVERY 1 HOUR DO DELETE FROM `money` WHERE `payed` = 'processing' AND `payed2` = 'processing'; 吗?

在此架构中,用户有许多类。但是,一个类也有很多用户。

1 个答案:

答案 0 :(得分:0)

您只需要为您的班级和用户提供2列

create table user_classes 
(
  user_id int, class_id int,
  foreign key (user_id) references users(id),
  foreign key (class_id) references classes(id),
  unique (user_id, class_id)
);

例如,如果您需要选择名为“math”的类的所有用户,则可以执行

select u.*
from users u
join user_classes uc on uc.user_id = u.id
join classes c on uc.class_id = c.id
where c.name = 'math'