我对SQL有点新鲜。
我需要制作一张可以查询的发票,以创建一个如下所示的文档:
这是我制作的乌鸦脚图:
我不确定客户送货地址和帐单地址是否应该是一个单独的实体。我对tblItem和tblInvoice的tblProductLine关系也不太确定。我的图表是否正确?
我是否匹配架构并正确设置关系?此外,有人可以解释何时需要外键? (因为我不确定把它们放在哪里)我假设它们在1到多个关系的末尾去引用之前调用它的表,但是我不确定...哪些表需要一个外来的键?
无论如何......任何帮助或评论都会很棒!
答案 0 :(得分:1)
随机顺序的一些想法:
Employee
有InvoiceID
?他们当然可以有多张发票吗?Address
表,并为您的客户提供ShippingAddress
和BillingAddress
(可选),两者均引用Address
。Quantity
中Amount
和tblProductLine
之间的区别是什么?ItemDescription
的一部分,但是你不能真正发现红色和蓝色 Jag Something 是相同的产品size
和color
移动到子表中。如果您需要重命名产品,则只需更改一条记录而不是多条记录。答案 1 :(得分:1)
通常情况下,ORDERS和INVOICES非常密切相关;你把它们混合成一个单一的实体。
CUSTOMER为一个或多个产品下订单。这会生成订单标题和订单明细。商家发出引用订单的INVOICE。但是在一个非常简单的妈妈和流行音乐操作中你可以省去ORDERS并让INVOICE实体代表订单。
ORDER|INVOICE DETAIL
id int PK
headerid foreign key references INVOICEHEADERS or ORDERHEADERS *mutatis mutandis*
productid foreign key references PRODUCTS(id)
quantity
extendedamount
外键是必要的,因为它们可以防止为不存在的产品创建订单或为不存在的客户开票。它们确保数据库行不包含任何不可能性。
通常,您将CUSTOMERADDRESSES作为单独的表引用回CUSTOMERS。客户可以拥有一个或多个地址。
每当一个实体可以“拥有一个或多个X”时,你就需要一个单独的表来捕获Xes。