Mysql
我創建實體關係圖的方式是否正確?
據我了解,1)表客戶和表訂單應該有一對多的關係,因為客戶有訂單。2)餐桌訂單和餐桌付款應該有一對多的關係,因為一個訂單可以有多個付款。3)餐桌順序和餐桌傳遞應該有一個多對一的關係。它是否正確?我還缺少其他東西嗎?
設計取決於您的業務需求,但總的來說,這聽起來像是一個好的設計並且適用於上下文。
您可以考慮的一些非常小的事情如下:
- 在現實生活中,不同的人
Customers
在技術上可以生活在同一個地址,因此如果你規範化CustomerAddresses
到他們自己的表,它會減少冗餘,理論上可以提高性能。- 一些現實生活場景允許
Customer
對Payment
相同的Order
. 如果這永遠不會成為您系統中的案例,那麼您可以忽略它。但是,如果您可能想要支持該功能,那麼您需要更新和之間的關係Order
,Payment
以便它是一對多的。- 您可能要考慮將
Order
表拆分為兩個表OrderHeader
和OrderLine
. 那麼這兩個表之間會有一對多的關係,因為多行可以在同一個標題上。標頭將儲存一般訂單資訊,如 OrderId、OrderDate、OrderTime、CustomerId,但 OrderLine 表將為訂購的每種類型的項目有一個單獨的行,它將儲存 PizzaId 和 Quantity(以及任何其他特定資訊,例如自定義到訂購的項目)。就目前的設計而言,您
Customer
每人只能訂購一種披薩Order
。通過Order
像上面那樣分成兩張桌子,他們可以在同一張桌子上訂購多種不同類型的比薩Order
(甚至可以在以後出售的其他類型的物品,如奶酪麵包和蘇打水)。