我正在尝试为一个简单的博客创建一个mysql数据库。我无法理解外键及其适当的关系。如果有人能用“外行”的话来解释,我会非常高兴。
我有一个名为users的表,其中包含字段(用户名,电子邮件,密码等)的基础知识,我创建了一个user_type字段并将其设置为INT。我创建了名为user_type的相应表,并添加了两个字段(一个是type_id =主键,另一个是type = VARCHAR)。
我的问题是:
我是否理解通过在users表中设置user_type INT的外键链接来引用两个表,以引用user_type表中的type_id?
答案 0 :(得分:1)
您的理解是正确的。
一个表中的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,否则您将失败。