如何为电子商务列表和订单设计sql模式?

时间:2019-09-05 18:23:43

标签: sql database-design

因此,我有3个表,称为书,清单和订单,可以在代码示例中看到。我的问题是,我想在前端显示列表,但我想忽略已经附加了订单的列表。我应该在清单中添加“有序”布尔值吗?从订单到列表的外键是否合适?

此外,如果我想查看已履行的订单,则问题是,如果清单被删除并且其外键已连接到已履行的订单。我该如何设计?

Table books{
  id int [pk, increment]
  title varchar
  isbn10 varchar
  amazon_used_price int
  edition varchar
  image varchar
}

Table listings{
  id int [pk,  increment]
  price int 
  date_listed datetime
  seller_email varchar
  book_id int [ref: > books.id]
}


Table orders{
  id int [pk, increment]
  completed boolean
  buyer_email varchar
  listing_id int [ref: > listings.id]
}

1 个答案:

答案 0 :(得分:1)

您不应添加ordered列,因为这将导致比解决的问题多得多的问题:并发是其中之一。

相反,您可以选择列表,并排除那些有订单的列表:

    SELECT b.title, b.isbn10, b.amazon_used_price,b.edition, b.image, 
    l.id, l.price, l.date_listed, l.seller_email
    FROM listings l LEFT JOIN books b ON l.book_id = b.id
    LEFT JOIN orders o ON l.id = o.listing_id
    WHERE IS NULL o.id
    ORDER BY b.title, b.isbn10

我假设了一些事情,包括所需记录的顺序,但是您应该从中得到启发。