2013-08-21 38 views
0

我正在爲商業商店構建數據庫。我正在辯論在數據庫中使用productID。ProductID vs數據庫中的條形碼

我還需要將交易記錄存儲在數據庫中。

使用productID或使用條形碼作爲我的產品的唯一標識符會更好嗎?

+0

你是什麼意思的「唯一標識符」?你打算如何使用它?什麼讓你認爲產品ID或條形碼將是獨一無二的? –

回答

2

條形碼一般是不好的PK。由於它們將被存儲爲數據類型,因此您不想加入它們。產品ID可能是任何有子表的表的更好選擇。不過,您應該仍然可以在條形碼上添加一個唯一索引,沒有什麼能阻止具有唯一索引的多個事物。

+1

這應該是「唯一約束」而不是「唯一索引」。 –

4

你可以同時使用嗎?沒有理由爲什麼產品不應該有多種類型的標識符。然而,視情況而定,產品可能有多個條形碼。對於零售包裝商品,爲同一產品配備多個不同的條形碼並不罕見。

2

你基本上有兩種選擇:

  1. 剛剛在PRODUCT表的自然鍵(條形碼)。
  2. 具有天然(條形碼和產品表代理鍵(ID)。

在第一種情況:

  • 產品表將是「苗條」(因爲僅存在一個指數)。索引維護將會減少,並且緩存將更加高效。
  • 條形碼將遷移到所有子表,所以你不會有產品,以獲得條形碼加入。
  • 但是,出於同樣的原因,子表將會「更胖」(因爲條形碼id更胖)。他們會佔用更多的空間並且效率低下。

在第二種情況:

  • 產品表將是胖(因爲在它的上面的附加字段和索引)。
  • 子表必須與PRODUCT連接以獲取條形碼。
  • 但兒童表格會更苗條。

因此,它基本上是在少量或多個加入之間以及在「重底」或「頂重」存儲/高速緩存之間進行權衡。你只需要決定哪些適合你的預期數據訪問模式更好...


即通過FOREIGN KEY引用PRODUCT的表。一個TRANSACTION_HISTORY可能是一個這樣的表的例子。