【问题标题】:Database design with PostgreSQL: implementing foreign and primary keys使用 PostgreSQL 进行数据库设计:实现外键和主键
【发布时间】:2020-06-03 20:18:06
【问题描述】:

我对数据库完全陌生,我想了解如何使用我想到的这个架构设计一个 PostgreSQL 数据库。我不确定在这种情况下如何实现主键/外键和关系来实现我想要的。

我创建了一个包含以下信息的大型客户表:

CUSTOMER
- unique ID
- review of the product ("positive", "negative")
- full name

现在,每个 CUSTOMER 都需要有一个 PRODUCT 表(可以为空),其中包含一个产品列表:

PRODUCT
- product ID

并且此 PRODUCTS 表中的每个产品都需要与一个包含项目列表的 ITEMS 表(也可以是空的)相关联。

ITEMS
- item ID

最后,我希望能够根据客户评论的“正面”或“负面”程度从 ITEMS 表中订购单个商品。在这种情况下,如何实现外键和主键才能有效地进行设计?

任何见解将不胜感激,

谢谢

【问题讨论】:

  • item 和 products 是什么关系?
  • 每个产品 ID 都与多个项目 ID @LaurenzAlbe 相关联

标签: database postgresql database-design


【解决方案1】:

您会为每个项目、产品和客户(后者没有评论)创建一个表格。

然后你有一个评论表:

CREATE TABLE review (
   customer_id bigint REFERENCES customer NOT NULL,
   product_id  bigint REFERENCES product  NOT NULL,
   is_positive boolean NOT NULL,
   PRIMARY KEY (product_id, customer_id)
);

/* this is needed if customers ever get deleted */
CREATE INDEX ON review (customer_id);

【讨论】:

猜你喜欢
  • 2012-11-04
  • 2023-03-14
  • 2014-07-09
  • 2011-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-03
  • 1970-01-01
相关资源
最近更新 更多