如下定义
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`),
KEY `emp_no` (`emp_no`),
CONSTRAINT `salaries_ibfk_1` FOREIGN KEY (`emp_no`) REFERENCES `employees` (`emp_no`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1
同时有
PRIMARY KEY (emp_no
,from_date
),
KEY emp_no
(emp_no
),
我觉得既然 emp_no 在 主键索引里 为何还要单独定义一个 key ?
1
billlee 2017-07-09 22:06:59 +08:00
大概是因为设计这个表的人没学过数据库原理吧
|
3
sunriseyuen 2017-07-09 22:54:23 +08:00 via Android
看上去员工号码+日期才是唯一的
|
4
leoli 2017-07-09 23:21:48 +08:00
|
6
wwqgtxx 2017-07-10 01:44:27 +08:00 via iPhone
那个 key 应该是当索引用的吧
|
7
choury 2017-07-10 02:03:03 +08:00 via Android 1
|
8
11138 2017-07-10 02:04:15 +08:00 1
|
9
kn007 2017-07-10 07:40:01 +08:00 1
KEY `emp_no` (`emp_no`) 多余+1
|
10
huigeer 2017-07-10 09:22:26 +08:00 via iPhone
innodb 这样建主键,dba 会哭晕。primkey 不是自增会影响 insert
|
11
leoli 2017-07-10 09:40:00 +08:00
@lcorange 优化过程是什么?某个员工必须靠 emp_no 和 from_date(应该是入职时间吧)来确定,查这个员工靠主键就行了吧
|
12
lcorange 2017-07-10 10:18:04 +08:00 via Android
|