将集合保存在数据库中并对记录进行 select 查询

Keep collection in db and do a select query over records

我想为我的用户提供一些不同的服务;每个服务都有一个 ID。

问题是,如何在数据库中保留用户 selected 服务?

我是否应该在 users table 中创建一个 services 列,然后将服务 ID 存储在那里? 如果是,如何保存它们以便以后能够向 select 具有特定服务 selected 的用户查询数据库?

欢迎您的经验和建议。

Should I create a services column in my users table

如果 services 是复数,那么听起来该列将存储多个值。那可不行。如果是这样,那么这就是多对多关系,其中涉及链接 table。像这样:

Service
----------
ID
etc.

User
----------
ID
etc.

UserService
----------
UserID (FK to User)
ServiceID (FK to Service)

存储在 UserService table 中的数据本质上是给定 User 和给定 Service 之间的 连接 ].如果有关于该连接的信息(例如 User 开始使用 Service 的时间),它也会继续 table。要点是连接本身是一个被建模的元素,而不仅仅是 UserService.

(旁注:在上述设计中,UserService table 没有明确的 PK,就像其他 table 一样。如果给定 User can only have one connection to any given Service 那么这两个FK列的组合可以是PK。如果可以有多个连接,比如多次订阅一个服务,那么你可能想引入一个像其他 table 一样明确的 PK。)