我正在尝试添加一个名为user_classes
的新表,它将关联我的用户的类别。我正在建立一个网站,允许他们生成类(class)表。在我的数据库中,我有两个现有表 - 一个 users
表,其中包含 id
、name
和 email
:
=users table=
id name email
1 John john@example.com
我还有一个 classes
表,其中包含我的所有类(class)。 crn
只是类(class)编号,name 是类(class)名称。
=classes table=
id crn name
1 4000 CS 101
2 4001 CS 102
3 4003 CS 103
这个新表就是我的想法。我有一个 id
这是 PK,有一个 user_id
列表示 John Doe
具有以下所有 crn
s。
=user_classes table=
id user_id crn
1 1 4000
2 1 4001
3 1 4003
我的问题是,user_classes
是一个好的设计吗?我应该使用类中的 id
而不是 crn
吗?
在此架构中,用户有许多类。然而,一个类也有很多用户。
最佳答案
您只需要您的类和用户的 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'
关于mysql - 为拥有多个学校类(class)的用户进行架构设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31442903/