我正在用两种不同类型的用户(购物用户和供应商/品牌)构建一个电子商务应用程序。
我应该为每个用户创建两个表吗?
<input ng-model="required" id="required" />
或者我应该这样:
User| id, email, password, username, address, stripeCustomerId
Brands| id, email, password, username/brandName, shippingRate, address, stripeAccessToken etc.
答案 0 :(得分:1)
这是一个尝试在关系数据库中建模面向对象的继承概念的示例。如果您搜索该词,则会在Stack Overflow上找到几个answers。
就您而言,我认为您有3个逻辑实体:
如何将这些逻辑实体建模为数据库中的物理对象主要是权衡问题-其他答案解释了这些问题。
我假设“客户”和“供应商”之间的行为和属性都将存在显着差异。
我还假设您的数据模型会随着时间的推移而发展-例如,您可能需要为每个用户存储一个以上的地址(送货,计费),对于“客户”您可能具有不同的生命周期“(新的,已注册的,注册已确认,付款已确认)和“供应商”(新的,已批准,已拒绝)。
如果那些事情是对的,那我就硬着头皮,有2张桌子,customer
和vendor
。这意味着您可以更轻松地发展他们的行为-您不必担心两个“客户”和“供应商”之间需要稍微不同的地址逻辑,而只需构建所需的内容。您的架构更加不言自明-外键进入表中说明其功能(产品->供应商,而不是产品->用户)。
答案 1 :(得分:0)
它不应该是两个表,而是三个:D
1. users (id, name, password, )
2. customers (user_id, customer_specific_fields)
3. vendors (user_id, vendor_specific_fields)