2016-08-02 125 views
0

我有四個表訂單表(MySQL的)的列表:如何存儲項目的

訂單[訂單ID,*的itemId,totalPrice]

項目[的itemId,*訂單ID,數量]

海報[posterId,*訂單ID,尺寸,材料]

卡[CardId中,*訂單ID,大小,文字]

項目本質上是一個抽象的表保存相關數據的每一個項目。所有項目(海報和卡片)都有一些獨特的屬性。

兩個問題:

  1. 有沒有辦法來建立物品表和海報/卡之間的繼承關係?這樣的訂單表只會接受一個項目的孩子的itemId?
  2. 訂單可以有多個項目,所以它應該包含外部項目鍵的列表,而不僅僅是一個。我如何解決這個問題?
+0

這些'*'星號是什麼? – jonju

+0

如果它代表的是外鍵,那麼我認爲你不需要'Order'表中的'itemId' – jonju

+0

是的,星號我的意思是一個外鍵 – Mike

回答

0

您可以爲Items創建一個表格,並在Poster/Card表格中爲Items表格設置外鍵約束。

有沒有辦法建立物品表和海報/卡之間的繼承關係?這樣的訂單表只會接受一個項目的孩子的itemId?

設置訂單表到外部表的外鍵約束。

訂單可以有多個項目,所以它應該包含外部項目鍵的列表,而不僅僅是一個。我如何解決這個問題?

在一個多對一的關係映射應該存儲在一側,即在你的情況下,項目一側而不是訂單一側。如果Item表是靜態類型,則應該創建一個映射表來管理Item和Order之間的關係,而不是保留在Order表中。

0

您好,您可以分別從OrderItem表中刪除itemIdorderId。將它們對待爲Master。至於你說的Order可以有多個items,創建第三個表例如order_item,創造兩列orderId & itemId並參考相應master_tables

orderId|itemId| 
-------+------+-- 
    1 | 1 | 
    1 | 2 | 
    1 | 3 | 

這樣你就可以擁有多張ItemsOrder,你可以對其他表做相同的處理

+0

我認爲這種方式對我來說會更容易實現,謝謝! – Mike

+0

歡迎您朋友! – jonju

相關問題