我想为我的用户提供一些不同的服务;每项服务都有一个ID。
问题是,如何在数据库中保留用户选择的服务?
我应该在services
表格中创建users
列,然后在那里存储服务ID吗?
如果是,如何保存它们以便以后查询数据库以选择具有特定服务的用户?
欢迎您的经验和建议。
答案 0 :(得分:1)
我应该在用户表中创建服务列
如果services
是复数,那么听起来该列会存储多个值。那不好。如果是这种情况那么这是一个多对多的关系,它涉及一个链接表。像这样:
Service
----------
ID
etc.
User
----------
ID
etc.
UserService
----------
UserID (FK to User)
ServiceID (FK to Service)
存储在UserService
表中的数据本质上是给定User
和给定Service
之间的连接。如果有关于该连接的信息(例如User
开始使用Service
的时间),那么它也将在该表上。重点是连接本身是一个被建模的元素,而不仅仅是User
和Service
。
(旁注:在上面的设计中,UserService
表上没有像其他表那样的显式PK。如果任何给定的User
只能与任何给定的{Service
有一个连接然后,这两个FK列的组合可以是PK。如果可以存在多个连接,例如多次订阅服务,那么您可能想要像其他表一样引入显式PK。)