这是更多的设计问题,然后编程一个。若要使列上唯一的组合或添加数字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