mysql - 为拥有多个学校类(class)的用户进行架构设计

标签 mysql sqlite eloquent schema

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

=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 具有以下所有 crns。

=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/

相关文章:

php - Laravel apiResource 按 id 以外的字段获取记录

mysql - Doctrine 选择包含所有指定值的元素

android - SignalR:从数据库向用户ID发送消息

c++ - 使用 QT 和 SQLite 通过单元格编辑更新数据库

android - 在 SQLite 中选择日期大于或等于今天的位置

laravel - 打印由 selectRaw 计算的计数时出现不需要的括号 - Laravel Eloquent

mysql - mysql的特殊条件查询

java - MySQL 数据库表未更新

c - 在将 sqlite3 包含到我的项目中时遇到问题,makefile 没有执行我想要的操作

eloquent - 第二次运行 Phinx migrate 不会用新的迁移更新数据库