在db中保留集合并对记录执行选择查询

时间:2015-01-15 19:36:44

标签: mysql database database-schema

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

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

我应该在services表格中创建users列,然后在那里存储服务ID吗? 如果是,如何保存它们以便以后查询数据库以选择具有特定服务的用户?

欢迎您的经验和建议。

1 个答案:

答案 0 :(得分:1)

  

我应该在用户表中创建服务列

如果services是复数,那么听起来该列会存储多个值。那不好。如果是这种情况那么这是一个多对多的关系,它涉及一个链接表。像这样:

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

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

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

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

(旁注:在上面的设计中,UserService表上没有像其他表那样的显式PK。如果任何给定的User只能与任何给定的{Service有一个连接然后,这两个FK列的组合可以是PK。如果可以存在多个连接,例如多次订阅服务,那么您可能想要像其他表一样引入显式PK。)