I have the following database schema.
Ensuring that an entity record exists for each parent record is trivial due to the non-NULL FK constraint.
How can I ensure that a child record exists for each parent record?
-- MySQL Script generated by MySQL Workbench
-- 01/07/15 06:01:50
-- Model: New Model Version: 1.0
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `mydb` ;
-- -----------------------------------------------------
-- Table `mydb`.`entity`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`entity` (
`identity` INT NOT NULL,
`stuff` VARCHAR(45) NULL,
PRIMARY KEY (`identity`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`parent1`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`parent1` (
`entity_identity` INT NOT NULL,
`stuff` VARCHAR(45) NULL,
PRIMARY KEY (`entity_identity`),
CONSTRAINT `fk_parent1_entity`
FOREIGN KEY (`entity_identity`)
REFERENCES `mydb`.`entity` (`identity`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`parent2`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`parent2` (
`entity_identity` INT NOT NULL,
`stuff` VARCHAR(45) NULL,
PRIMARY KEY (`entity_identity`),
CONSTRAINT `fk_parent2_entity1`
FOREIGN KEY (`entity_identity`)
REFERENCES `mydb`.`entity` (`identity`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`child1_1`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`child1_1` (
`parent1_entity_identity` INT NOT NULL,
`stuff` VARCHAR(45) NULL,
PRIMARY KEY (`parent1_entity_identity`),
CONSTRAINT `fk_child1_1_parent11`
FOREIGN KEY (`parent1_entity_identity`)
REFERENCES `mydb`.`parent1` (`entity_identity`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`child1_2`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`child1_2` (
`parent1_entity_identity` INT NOT NULL,
`stuff` VARCHAR(45) NULL,
PRIMARY KEY (`parent1_entity_identity`),
CONSTRAINT `fk_child1_2_parent11`
FOREIGN KEY (`parent1_entity_identity`)
REFERENCES `mydb`.`parent1` (`entity_identity`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;