這是更多的設計問題,然後編程一個。若要使列上唯一的組合或添加數字rowID
我在那裏我存儲有關零售產品的詳細信息的表格:
Name Barcode BarcodeFormat etc...
----------------------------------------
(Name, Barcode, BarcodeFormat)
三列將唯一標識表(候選鍵)的記錄。但是,我還有其他需要FK的桌子。於是我介紹了auto_increment
列itemId
並提出了PK。
我的問題是 - 我應該有PK
爲(itemId, Name, Barcode, BarcodeFormat)
或者是否應該有PK(itemId)
和UNIQUE(Name, Barcode, BarcodeFormat)
。
我最關心的是INSERT
和SELECT
操作方面,而且在尺寸評論也歡迎表演。
我使用的是mysql
喜歡它...... –
-1'主鍵'的選擇是任意的。最後一點特別令人困惑:完整性約束應該是業務規則數據庫中的邏輯表示;如果他們不是那麼你是在做一些嚴重錯誤的事情! – onedaywhen
@onedaywhen你完全錯過了我的觀點。獨特的組合是*商業*爲中心的概念,因此隨着業務需求的變化,隨時可能隨時發生變化(如我的完全合理的產品示例*沒有條形碼,這將打破獨特的約束)。但是,對主鍵的需求是*永久性的,因此可能會超過對唯一約束的需求。通過分離這兩者,您可以提高靈活性和可維護性。通過合併兩者,您將數據庫要求鎖定到*當前*業務需求(您最好希望業務不會發生變化) – Bohemian