MySQL:INDEX,UNIQUE,FOREIGN KEY和PRIMARY KEY之间有什么区别?
好吧,所以我是SQL的新手。
我正在设置我的表,我对索引,键,外键感到困惑。
我有一个用户表和一个项目表。
我想使用用户 (id) 将项目附加到用户。
这是我到目前为止所拥有的:
DROP TABLE IF EXISTS projects;
CREATE TABLE projects (
id int(8) unsigned NOT NULL,
user_id int(8),
name varchar(120) NOT NULL,
description varchar(300),
created_at date,
updated_at date,
PRIMARY KEY (id),
KEY users_id (user_id)
) ENGINE=InnoDB;
ALTER TABLE projects (
ADD CONSTRAINT user_projects,
FOREIGN KEY (user_id) REFERENCES users(id),
ON DELETE CASCADE
)
因此,我迷失的是键,索引,约束和外键之间的区别是什么?
我一直在网上寻找,找不到新手的解释。
PS. 我正在使用 phpactiverecord 并在模型中设置了关系
用户> has_many(“项目”);
项目 -> belongs_to('用户');
不知道这是否与它有关,但以为我会把它扔在那里。
谢谢。
编辑:
我认为这可能与Navicat有关,所以我进入了WampServer ->phpMyAdmin并运行了这个...
DROP TABLE IF EXISTS projects;
CREATE TABLE projects (
id int(8) unsigned NOT NULL,
user_id int(8) NOT NULL,
name varchar(120) NOT NULL,
description varchar(300),
created_at date,
updated_at date,
PRIMARY KEY (id),
KEY users_id (user_id),
FOREIGN KEY (user_id) REFERENCES users(id)
) ENGINE=InnoDB;
还是没什么... :(