我有一個數據庫設計,使用複合主鍵來確保唯一性,哪些也是外鍵。MySQL - 自動增量+複合主鍵 - 性能和完整性
這些表然後以相同的方式鏈接到其他表,以便最終複合鍵可以達到4或5列。這導致了一些相當大的JOIN,所以我認爲一個簡單的解決方案是使用一個自動增量列,它不是主鍵的一部分,而是用作其他表的主鍵的一部分。
下面是該總體佈局一些僞代碼:
CREATE TABLE Item (
id AUTO_INCREMENT,
...
PRIMARY KEY (id)
) ENGINE = InnoDB;
CREATE TABLE PriceCategory (
id AUTO_INCREMENT,
...
PRIMARY KEY (id)
)
CREATE TABLE ItemPriceCategory (
itemId,
priceCategoryId,
id AUTO_INCREMENT,
...
UNIQUE INDEX id,
PRIMARY KEY (eventId, priceCategoryId)
)
CREATE TABLE ClientType (
id AUTO_INCREMENT,
...
PRIMARY KEY (id)
)
CREATE TABLE Price (
itemPriceCategoryId,
clientTypeId,
id AUTO_INCREMENT,
...
UNIQUE INDEX id,
PRIMARY KEY (itemPriceCategoryId, clientTypeId)
)
table Purchase (
priceId,
userId,
amount,
PRIMARY KEY (priceId, userId)
)
表的名稱已被更改,以保護無辜;-)而且實際的佈局中引用的條款深入一點。
所以,我的問題是,從性能和數據完整性的角度來看,這是一個可行的策略嗎?從Purchase
表中的所有引用表中獲取所有密鑰會更好嗎?
在此先感謝。
類似於獨立的鍵:http://stackoverflow.com/questions/6372058/MySQL的原色的鍵合一個關係標籤le-unique-id-or-multiple-unique-key/ – 2011-06-16 12:53:46