我有一个数据库设计,使用复合主键来确保唯一性,哪些也是外键。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