首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么一对一关系的父母ID没有唯一的限制?

为什么一对一关系的父母ID没有唯一的限制?
EN

Stack Overflow用户
提问于 2015-09-20 18:18:27
回答 1查看 109关注 0票数 1

我正要创建我的数据库,因为我意识到我不知道如何映射一对多或一对一的关系。因此,我选择了MySQL工作台并创建了这个简单的示例:

MySQL工作台展示了AC之间的一对一关系,以及AB之间的一对多关系。

但是,将这些表作为.sql文件导出给我如下所示:

代码语言:javascript
复制
-- -----------------------------------------------------
-- Table `reveng_me`.`A`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `reveng_me`.`A` (
  `id` INT NOT NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `reveng_me`.`B`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `reveng_me`.`B` (
  `id` INT NOT NULL,
  `A_id` INT NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_B_A1_idx` (`A_id` ASC),      
  CONSTRAINT `fk_B_A1`
    FOREIGN KEY (`A_id`)
    REFERENCES `reveng_me`.`A` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `reveng_me`.`C`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `reveng_me`.`C` (
  `id` INT NOT NULL,
  `A_id` INT NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_C_A1_idx` (`A_id` ASC),      
  CONSTRAINT `fk_C_A1`
    FOREIGN KEY (`A_id`)
    REFERENCES `reveng_me`.`A` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

我看不出BC有什么区别。难道不应该对UNIQUE有一个FOREIGN KEY ('A_id')约束,或者其他一些阻碍我向C添加更多A ID的约束吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-20 19:22:26

实际上,在MySQL中没有这样的东西。1-1关系与数据库方案中的1-n关系没有什么区别.有些关系数据库管理系统允许检查约束来实现这一点,但是在MySQL中,该检查仅仅是为了完成SQL标准。但是,您可以创建由另一个表引用的唯一索引。这可能就是你想要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32682730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档