如果我无法在标题中准确描述问题,请道歉。我的方案如下。
我的网站是一个连接供应商和买家的平台。供应商列出他们可用的商品/服务,买家可以从他们那里购买商品/服务。
新买家(用户)注册很简单,因为他们的信息存储在users
表(users, user_profile, user_history
等)中,并与唯一的user_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
来处理所有事情?
感谢。
答案 0 :(得分:0)
取决于。
想想这个场景,用户是否可以成为供应商(反之亦然?)如果是这样,那么最好围绕基本用户规划数据模型并添加属性或标志(在单独的表中或领域)。这样,您就可以添加/删除权限。
即。有一个单独的表叫做#34; flags&#34; &#34; flagmappings&#34;
//flags
flag_name <--- 'Vendor', 'User'
//flagmappings
user_id <--- foreign key
flag_id <--- foreign key
这种结构带来了一些好处:
答案 1 :(得分:0)
如果我是你,我会坚持使用用户表来表示所有内容(只要您没有大量特定于供应商的字段)。它只是让事情更清洁。然后,您可能在users表中有一个'is_vendor'字段。
或者,如果您想要更复杂,您可以使用以下内容实现角色:
users Table
id
firstname
etc...
groups Table
id
title
etc.
user_groups Table
user_id
group_id
就个人而言,我会选择第二个选项,因为它允许更多基于角色的权限,例如管理员,编辑,主持人,买家,卖家,超级买家,超级卖家等。