我创建表和外键的问题。 (错误:150) 这里是截图更新的图像: HTTP://img264.imagevenue的.com / img.php?图像= 14866_db_122_223lo.jpg

也许问题是数据库的设计。

-- -----------------------------------------------------
-- Table `mydb`.`projekt_user`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`projekt_user` (
  `UserID` INT NOT NULL ,
  `Name` VARCHAR(45) NULL ,
  PRIMARY KEY (`UserID`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`projekt_auswahl`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`projekt_auswahl` (
  `UserID` INT NOT NULL ,
  `projekt_id` INT NOT NULL ,
  `projekt_kategorie_id` INT NOT NULL ,
  `projekt_attachment` VARCHAR(45) NULL ,
  PRIMARY KEY (`UserID`, `projekt_id`, `projekt_kategorie_id`) ,
  INDEX `UserID` (`UserID` ASC) ,
  CONSTRAINT `UserID`
    FOREIGN KEY (`UserID` )
    REFERENCES `mydb`.`projekt_user` (`UserID` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`projekt_kategorien`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`projekt_kategorien` (
  `projekt_kategorie_id` INT NOT NULL ,
  `kategorie` VARCHAR(45) NULL ,
  PRIMARY KEY (`projekt_kategorie_id`) ,
  INDEX `projekt_kategorie_id` (`projekt_kategorie_id` ASC) ,
  CONSTRAINT `projekt_kategorie_id`
    FOREIGN KEY (`projekt_kategorie_id` )
    REFERENCES `mydb`.`projekt_auswahl` (`projekt_kategorie_id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`projekte`
-- -----------------------------------------------------
CREATE TABLE `projekte` (
  `projekt_id` INT NOT NULL ,
  `projektname` VARCHAR(45) NULL ,
  `projekt_status` VARCHAR(45) NULL ,
  PRIMARY KEY (`projekt_id`) ,
  INDEX `projekt_id` (`projekt_id` ASC) ,
  CONSTRAINT `projekt_id`
    FOREIGN KEY (`projekt_id` )
    REFERENCES `mydb`.`projekt_auswahl` (`projekt_id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;
有帮助吗?

解决方案

您在错误的方向上的外键和需要(孩子之前父母)来加载表中的顺序:

-- -----------------------------------------------------
-- Table `mydb`.`projekt_user`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`projekt_user` (
  `UserID` INT NOT NULL ,
  `Name` VARCHAR(45) NULL ,
  PRIMARY KEY (`UserID`) )
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `mydb`.`projekt_kategorien`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`projekt_kategorien` (
  `projekt_kategorie_id` INT NOT NULL ,
  `kategorie` VARCHAR(45) NULL ,
  PRIMARY KEY (`projekt_kategorie_id`) ,
  INDEX `projekt_kategorie_id` (`projekt_kategorie_id` ASC) 
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `mydb`.`projekte`
-- -----------------------------------------------------
CREATE TABLE `projekte` (
  `projekt_id` INT NOT NULL ,
  `projektname` VARCHAR(45) NULL ,
  `projekt_status` VARCHAR(45) NULL ,
  PRIMARY KEY (`projekt_id`) ,
  INDEX `projekt_id` (`projekt_id` ASC))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `mydb`.`projekt_auswahl`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `projekt_auswahl` (
  `UserID` INT NOT NULL ,
  `projekt_id` INT NOT NULL ,
  `projekt_kategorie_id` INT NOT NULL ,
  `projekt_attachment` VARCHAR(45) NULL ,
  PRIMARY KEY (`UserID`, `projekt_id`, `projekt_kategorie_id`) ,
  INDEX `UserID` (`UserID` ASC) ,
  CONSTRAINT `UserID`
    FOREIGN KEY (`UserID` )
    REFERENCES `projekt_user` (`UserID` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
CONSTRAINT `projekt_kategorie_id`
    FOREIGN KEY (`projekt_kategorie_id` )
    REFERENCES `projekt_kategorien` (`projekt_kategorie_id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
CONSTRAINT `projekt_id`
    FOREIGN KEY (`projekt_id` )
    REFERENCES `projekte` (`projekt_id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

如果我更注重你所提供的ERD,我已经看到,“鱼尾纹”是指向上方,当约定他们总是点向下(或必要时左)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top