将集合保存在数据库中并对记录进行 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。要点是连接本身是一个被建模的元素,而不仅仅是 User
和 Service
.
(旁注:在上述设计中,UserService
table 没有明确的 PK,就像其他 table 一样。如果给定 User
can only have one connection to any given Service
那么这两个FK列的组合可以是PK。如果可以有多个连接,比如多次订阅一个服务,那么你可能想引入一个像其他 table 一样明确的 PK。)
我想为我的用户提供一些不同的服务;每个服务都有一个 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。要点是连接本身是一个被建模的元素,而不仅仅是 User
和 Service
.
(旁注:在上述设计中,UserService
table 没有明确的 PK,就像其他 table 一样。如果给定 User
can only have one connection to any given Service
那么这两个FK列的组合可以是PK。如果可以有多个连接,比如多次订阅一个服务,那么你可能想引入一个像其他 table 一样明确的 PK。)