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

MySQL工作台展示了A和C之间的一对一关系,以及A和B之间的一对多关系。
但是,将这些表作为.sql文件导出给我如下所示:
-- -----------------------------------------------------
-- 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;我看不出B和C有什么区别。难道不应该对UNIQUE有一个FOREIGN KEY ('A_id')约束,或者其他一些阻碍我向C添加更多A ID的约束吗?
发布于 2015-09-20 19:22:26
实际上,在MySQL中没有这样的东西。1-1关系与数据库方案中的1-n关系没有什么区别.有些关系数据库管理系统允许检查约束来实现这一点,但是在MySQL中,该检查仅仅是为了完成SQL标准。但是,您可以创建由另一个表引用的唯一索引。这可能就是你想要的。
https://stackoverflow.com/questions/32682730
复制相似问题