Mysql外键用法

时间:2013-08-14 08:31:55

标签: mysql foreign-key-relationship

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

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

我的问题是:

我是否理解通过在users表中设置user_type INT的外键链接来引用两个表,以引用user_type表中的type_id?

2 个答案:

答案 0 :(得分:1)

您的理解是正确的。

来自SQL FOREIGN KEY Constraint

  

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

因此,在您的示例中,表user_types中的user_type id将是主键,表用户中的user_type int将是外键项。

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

答案 1 :(得分:0)

您从用户引用到usertype:

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,否则您将失败。