因此,我有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]
}
答案 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
我假设了一些事情,包括所需记录的顺序,但是您应该从中得到启发。