0

我需要为一个系统设计一个数据库,其中有CustomersVendors但它们都与称为Users的实体相关,其中每个用户都是 customer 或 vendor 。问题是Vendors与Customers不相关的其他实体相关。那么我该如何设计这样的数据库呢?

4

3 回答 3

0

其他实体会将供应商的 ID 存储为外键。而且 Vendors 和 Customers 无论如何都不会在同一个表中*,因此这两个 ID 并不可能同时用于此目的。

此外,要添加,如果您选择的数据库允许,您可以将用户所需的外键作为添加/编辑触发器进行管理。这样,您可以确保用于这些相关实体的供应商 ID 不是链接到客户的用户 ID。( ...WHERE userid NOT IN (SELECT userid FROM users WHERE customer = TRUE))

*客户和供应商具有不同的属性/字段,因此不应在同一个表中。

于 2013-04-26T21:38:24.470 回答
0

您可以让供应商和客户与用户表有关系。

user
===========
userId
name

vendor
===========
vendorId
companyName
userId

customer
===========
customerId
source
userId

然后,您可以从同一个表链接到客户和供应商,但他们仍然可以在用户表中共享相同的公共数据。事实上,客户也可以是供应商。

于 2013-04-26T23:00:14.623 回答
0

您的问题可以概括如下:如何在关系表中表达子类?

对于通用答案,请参见:

https://stackoverflow.com/tags/class-table-inheritance/info

于 2013-04-27T20:52:52.263 回答