什么是數據表的復合主鍵
所謂的復合主鍵 就是指你表的主鍵含有一個以上的字段組成
比如
create table test
(
name varchar(19),
id number,
value varchar(10),
primary key (name,id)
)
上面的name和id字段組合起來就是你test表的復合主鍵
它的出現是因為你的name字段可能會出現重名,所以要加上ID字段這樣就可以保證你記錄的唯一性
一般情況下,主鍵的字段長度和字段數目要越少越好
聯合主鍵
什么是聯合主鍵?
(主鍵原則上是唯一的,別被唯一值所困擾。)
顧名思義就是多個主鍵聯合形成一個主鍵組合
一個簡單的例子
主鍵A跟主鍵B組成聯合主鍵
主鍵A跟主鍵B的數據可以完全相同(困擾吧,沒關系),聯合就在於主鍵A跟主鍵B形成的聯合主鍵是唯一的。
下例主鍵A數據是1,主鍵B數據也是1,聯合主鍵其實是11,這個11是唯一值,絕對不充許再出現11這個唯一值。(這就是多對多關系)
主鍵A數據 主鍵B數據
1 1
2 2
3 3
主鍵A與主鍵B的聯合主鍵值最多也就是
11
12
13
21
22
23
31
32
33
CREATE TABLE `products_description` (
`products_id` int(11) NOT NULL,
`language_id` int(11) NOT NULL default '1',
`products_name` varchar(64) NOT NULL default '',
`products_description` text,
`products_short_description` text,
`products_url` varchar(255) default NULL,
`products_viewed` int(5) default '0',
PRIMARY KEY (`products_id`,`language_id`),
KEY `products_name` (`products_name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
`language_id` int(11) NOT NULL default '1',
`products_name` varchar(64) NOT NULL default '',
`products_description` text,
`products_short_description` text,
`products_url` varchar(255) default NULL,
`products_viewed` int(5) default '0',
PRIMARY KEY (`products_id`,`language_id`),
KEY `products_name` (`products_name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
