所以我正在为一个应用程序/网站建立一个数据库。它本质上是一个电子商务市场/平台,一个品牌可以注册上传他们的产品,然后客户也可以注册从任何不同的品牌购买任何产品。
品牌和员工不能成为顾客。
顾客不可能是品牌
这是我到目前为止的结构,但在我看来,从这个图表中可以看出,用户可以同时成为客户、品牌和品牌员工。
是否有更好的最优结构?

发布于 2020-06-17 12:08:56
您可以改变外键关系,并将三个外键添加到user中,分别用于customer、brand和brand_employee。然后添加一个CHECK约束,以确保确切的外键之一是NOT NULL:
CREATE TABLE users (
id uuid PRIMARY KEY,
...
customer_id uuid REFERENCES customer(id),
brand_id uuid REFERENCES brand(id),
brand_employee_id uuid REFERENCES brand_employee(id),
CHECK (customer_id IS NOT NULL AND brand_id IS NULL AND brand_employee_id IS NULL OR
customer_id IS NULL AND brand_id IS NOT NULL AND brand_employee_id IS NULL OR
customer_id IS NULL AND brand_id IS NULL AND brand_employee_id IS NOT NULL)
);https://dba.stackexchange.com/questions/269315
复制相似问题