【发布时间】:2012-11-20 09:06:04
【问题描述】:
好的,所以我是 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
)
所以我迷失的是键、索引、约束 /strong> 和一个外键?
我一直在网上找,找不到新手的解释。
PS。我正在使用 phpactiverecord 并在模型中设置了关系
user-> has_many('projects');
项目 -> belongs_to('user');
不确定这是否与它有关,但我想我会把它扔在那里..
谢谢。
编辑:
我认为这可能与 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;
还是什么都没有... :(
【问题讨论】:
-
您的框架是否收到任何错误消息?
-
说实话,如果你是 MySQL 新手,除非你知道为什么要使用它,否则不应该使用 InnoDB... 默认使用 MyISAM,直到你对存储引擎
-
@Prof83 它说你只能在 INNODB 中使用外键。
-
@Prof83 - 不,MyIsam 不支持 FK - 它只会在您定义 FK 的列上创建一个索引。只有 InnoDB 支持 FK。
-
@JakeChapman - 你确定你的
users表是 InnoDB 吗?如果不是,您将无法对其进行 FK 引用。
标签: php mysql sql codeigniter