簡體   English   中英

MySql:創建表和外鍵的簡單問題

[英]MySql: Simple Problem with Creating Tables & Foreign Keys

我在創建表和外鍵時遇到問題。 (errno:150)這是屏幕快照更新的圖像: http : //img264.imagevenue.com/img.php? image= 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 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM