0

我正在尝试为一个简单的博客创建一个 mysql 数据库。我无法理解外键及其适当的关系。如果有人可以用“外行”的方式解释,我会很高兴。

我有一个名为 users 的表,其中包含字段(用户名、电子邮件、密码等)的基础知识,我创建了一个 user_type 字段并将其设置为 INT。我创建了名为 user_type 的相应表并添加了两个字段(一个是 type_id = 主键,另一个是 type = VARCHAR)。

我的问题是:

我是否正确理解通过设置用户表中 user_type INT 的外键链接以引用 user_type 表中的 type_id 将两个表连接在一起?

4

2 回答 2

1

你的理解是正确的。

SQL FOREIGN KEY 约束

一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。

因此,在您的示例user_type中,表 user_types 中的 id 将是主键,而user_type表 users 中的 int 将是外键条目。

这强制表 user_types 中的条目必须存在才能在表用户中使用。

于 2013-08-14T08:37:29.100 回答
0

您从用户引用到用户类型:

n 个用户有一个 user_type

如果您使用 sql 语句创建表,它应该在用户部分包含类似这样的内容:

DROP TABLE IF EXISTS `user` ;

CREATE  TABLE IF NOT EXISTS `user` (
  `ID` INT NOT NULL AUTO_INCREMENT ,
  `username` VARCHAR(55) NOT NULL ,
  `email` VARCHAR(55) NOT NULL ,
  `password` VARCHAR(55) NOT NULL ,
  `user_type` INT NOT NULL ,
  PRIMARY KEY (`ID`) ,
  INDEX `user_to_usertype_idx` (`user_type` ASC) ,
    CONSTRAINT `user_to_usertype`
    FOREIGN KEY (`user_type` )
    REFERENCES `user_type` (`type_id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)

ENGINE = InnoDB;

您必须在创建用户之前创建 user_type,否则您将失败。

于 2013-08-14T08:44:15.153 回答