2012-08-09 53 views
0

這裏是我的表:有趣的SQL結構:主鍵的一部分可能是NULL

PRODUCT_ID (pk) | GROUP_ID (pk) | PRICE 

這一點,我會設定不同的價格的產品與不同的用戶。如果價格適用於每個組,則GROUP_ID將爲NULL。但是這是一個PK - 它不能爲NULL。 PRODUCT_ID不能是PK獨立的,因爲可以有更多不同價格的產品。那麼如何躲避它?

回答

2

正如你所說,不可能將表的主鍵作爲NULL。我建議你有一些'特殊'的值(很像NULL,就像其他有效的那樣),這表明所述價格適用於所有組(例如~0,如果您使用INT UNSIGNED作爲GROUP_ID的類型)。

1

我建議使用自己的ID創建一個「全局」組。即使您可以設置group_idnull,感覺也會更好。所以每個小組都獲得了自己的獎勵和「全球」組的價格作爲補充。

1 | 1 | 10,50 
2 | 2 | 15,50 
2 | 3 | 15,70 

如果組ID 1是「全局」組,組12將有一個價格10,50 ID爲1產品。

相關問題