Frage

Ich habe Probleme mit dem Erstellen von Tabellen und Fremdschlüssel. (Errno: 150) Hier ist ein Screenshot aktualisiertes Bild: http://img264.imagevenue.com/img.php?image=14866_db_122_223lo.jpg

Vielleicht ist das Problem das Datenbankdesign.

-- -----------------------------------------------------
-- 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;
War es hilfreich?

Lösung

Sie haben Ihre fremden Schlüssel in die falsche Richtung und müssen die Tabellen in Ordnung laden (Eltern vor Kindern):

-- -----------------------------------------------------
-- 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;

Hätte ich dem ERD mehr Aufmerksamkeit geschenkt, hätte ich gesehen, dass die "Krähenfüße" nach oben zeigten, wenn die Konvention immer nach unten (oder bei Bedarf links) zeigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top