user_processes
2つの列で構成される多対多のテーブルがあります:user
とprocess
。user
ユーザーテーブルの主キーを参照する外部キーです。このprocess
列は、プロセスの主キーを参照する外部キーです。ただし、user_processes
の複数列の主キーでuser
十分process
なはずなので、別の主キー列は必要ありません(そうですか?別の列の必要性はわかりませんid
)。1人のユーザーが多くのプロセスを持つことができますが、同じユーザーが同じプロセスを持つ複数の行があってはなりません。
次のコードは、phpmyadminでエラー「#1005-テーブル'test.user_processes'(errno:150)(Details ...)を作成できません」を表示します。
mysqlワークベンチによって生成されたコードは次のとおりです。
-- -----------------------------------------------------
-- Table `test`.`user_processes`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `test`.`user_processes` (
`user` INT UNSIGNED NOT NULL ,
`process` INT UNSIGNED NOT NULL ,
PRIMARY KEY (`user`, `process`) ,
INDEX `fk_user_processes_users1_idx` (`user` ASC) ,
INDEX `fk_user_processes_processes1_idx` (`process` ASC) ,
CONSTRAINT `fk_user_processes_users1`
FOREIGN KEY (`user` )
REFERENCES `test`.`users` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_user_processes_processes1`
FOREIGN KEY (`process` )
REFERENCES `test`.`processes` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
なぜそれが私にこれをさせないのか、そして正しい解決策は何ですか?