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

我应该如何为电子商务列表和订单设计sql模式?,sql,database-design,Sql,Database Design,因此,我有3个名为Books、Listings和Orders的表,它们可以在代码示例中看到。我的问题是,我想在前端显示列表,但我想省略已经附加了订单的列表。我应该向列表中添加有序布尔值吗?从订单到物品的外键是否合适 另外,如果我想查看已完成的订单,那么如果列表被删除并且它有一个外键连接到已完成的订单,则会出现问题。我该如何设计呢 Table books{ id int [pk, increment] title varchar isbn10 varchar amazon_used

因此,我有3个名为Books、Listings和Orders的表,它们可以在代码示例中看到。我的问题是,我想在前端显示列表,但我想省略已经附加了订单的列表。我应该向列表中添加有序布尔值吗?从订单到物品的外键是否合适

另外,如果我想查看已完成的订单,那么如果列表被删除并且它有一个外键连接到已完成的订单,则会出现问题。我该如何设计呢

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]
}
您不应该添加一个有序列,因为这将导致比它所修复的问题多得多的问题:并发性就是其中之一

相反,您可以选择您的物品并排除有订单的物品:

选择b.title、b.isbn10、b.amazon\u used\u price、b.edition、b.image、, l、 id、l.价格、l.上市日期、l.卖家\电子邮件 从清单l左键连接l.book_id=b.id上的图书b l.id=o.id上的左连接顺序o 其中是空的o.id 按b.title、b.isbn10排序
我假设了一些事情,包括您想要的记录的顺序,但您应该从中了解到这一点。

大量连接不会导致大量数据库紧张吗?我使用的是Aurora serverless,所以我每计算小时收费。@Daniel,如果你有外键,那么就没有了,数据库引擎在连接表方面非常有效。