哪种ERD更正确的数据库设计?

时间:2013-12-31 01:09:31

标签: sql database database-design erd

哪种ERD更正确的数据库设计?

ERD#1

ERD 1

ERD#2

ERD 2

请解释为什么一个比另一个更正确。

3 个答案:

答案 0 :(得分:1)

在我看来, ERD#1 是一个更好的设计。

<强>原因

  

订单/产品表将具有特定订单和订购的每个产品的订单ID   每个订单的该产品的数量。没有重复/没有冗余数据。

ERD#2

  

设计不佳,因为每个订单都可以有多个产品,您会这样做   为多个添加相同的orderid,CustomerID,Invoicedetails   同一订单的产品,简单来说就是更冗余的数据。

修改

  

ERD#2也违反了数据库规范化规则。在订单表中   你有InvoiceID然后Invoice_Creation_Date只依赖   在InvoiceID上。

     

规范化规则说明表中的列是否不直接依赖   在该列的主键上,它应该在一个单独的表中。在   换句话说,表中的所有列都应该直接依赖   仅限主键。

答案 1 :(得分:0)

  1. 在ERD 1中,每个订单只能有一个项目 - 因此需要ERD2中的连接表
  2. ERD2 - 为什么在发票表中为order_ID提供FK,并且在订单表中也有invoice_ID。一个FK领域就足够了。我假设这是一个订单到多个发票,在这种情况下,您将order_ID放在发票表中

答案 2 :(得分:0)

错误地写入ERD2,应从发票中删除外键Order_ID_FK。因此,发票应与订单有一对多的关系。