0
我正在設計一個數據庫模型,並且出現了一個問題:指定關係的連接表一側是否可選的關鍵點是什麼?生成的DDL?連接表關係中的數據庫設計和可選性
例如採取以下兩個不同的圖:
圖與在A_to_B_join側A和A_to_B_join之間強制關係:
圖與在A_to_B_join側A和A_to_B_join之間可選關係:
我注意到他們都試圖生成相同的DDL,即使他們是d ifferent!
生成的DDL:
SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @[email protected]@SQL_MODE, SQL_MODE='TRADITIONAL';
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
USE `mydb` ;
-- -----------------------------------------------------
-- Table `mydb`.`A`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`A` (
`A_ID` INT NOT NULL ,
PRIMARY KEY (`A_ID`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`B`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`B` (
`B_ID` INT NOT NULL ,
PRIMARY KEY (`B_ID`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`A_to_B_join`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`A_to_B_join` (
`A_ID` INT NOT NULL ,
`B_ID` INT NOT NULL ,
PRIMARY KEY (`A_ID`, `B_ID`) ,
INDEX `fk_A_to_B_join_B1` (`B_ID` ASC) ,
INDEX `fk_A_to_B_join_A` (`A_ID` ASC) ,
CONSTRAINT `fk_A_to_B_join_A`
FOREIGN KEY (`A_ID`)
REFERENCES `mydb`.`A` (`A_ID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_A_to_B_join_B1`
FOREIGN KEY (`B_ID`)
REFERENCES `mydb`.`B` (`B_ID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET [email protected]_SQL_MODE;
SET [email protected]_FOREIGN_KEY_CHECKS;
SET [email protected]_UNIQUE_CHECKS;
有什麼意義,然後提一邊是可選的還是強制的?我應該打擾嗎? DDL是否與MySQL相同?
Regards,