如果我无法在标题中准确描述问题,我深表歉意。我的场景如下。
我的网站作为连接供应商和买家的平台运行。供应商列出了他们可用的商品/服务,买家可以从他们那里购买商品/服务。
新买家(用户)注册非常简单,因为他们的信息存储在 users
表(users、user_profile、user_history
等)中,并与唯一的 绑定(bind)在一起>用户id
。我现在难以理解的是,我也要求供应商注册(出于验证目的),并且供应商也可以是买家。
我的users
表如下所示:
user_id <--- primary key
name
email
...
相关表格可能如下所示:
transaction_id
user_id <--- foreign key
date
amount
...
我对 vendors
表的最初想法:
vendor_id <--- primary key
user_id <--- foreign key
vending_name
registration_number
...
和相关表格:
product_id
vendor_id <--- foreign key
name
price
...
我的问题是,最好使用此 vendor_id
来链接所有与供应商相关的表,还是应该坚持使用 user_id
来处理所有内容?
谢谢。
最佳答案
这取决于。
考虑一下这种情况,用户是否可以成为供应商(反之亦然?)如果是这样,那么最好围绕基本用户规划数据模型并添加属性或标志(在单独的表或字段中)。这样,您就可以添加/删除权限。
即有一个名为“flags”“flagmappings”的单独表
//flags
flag_name <--- 'Vendor', 'User'
//flagmappings
user_id <--- foreign key
flag_id <--- foreign key
这种结构给您带来了一些好处:
- 对于任何给定用户,您都可以搜索标志映射,然后确定用户可能拥有的权限。
- 所有用户/供应商的所有登录/身份验证逻辑都是相同的(即,如果是供应商或用户,则不必拆分/特殊情况不同的表,所有基本信息都位于同一位置)。
- 如果用户需要成为供应商,反之亦然,您只需将该标志添加到用户即可。
- 如果您需要创建另一种类型的用户(即管理员、经理等),只需在标志表中添加另一个条目即可。
关于mysql - 我应该为双角色用户维护一两个唯一 ID 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31010815/