こんにちは、mysql ワークベンチでデータベースを設計しました。フォワード エンジニアに行ったときに (errno: 121) を得たのは、複数のテーブルで同じ名前の外部キーが許可されていないことに気付いたためです。ほとんどの場合、n:m の関係としてかなりの数のジャンクション テーブルがあります。これらのジャンクション テーブルのほとんどに、(2 つの外部キーで構成される) 複合主キーを使用しています。私の質問は、これらの主キーの名前を外部キーと共に一意になるように変更する必要がありますか? 助けてください。
(以下のコードではまだ外部キーの名前を変更していません)
CREATE TABLE IF NOT EXISTS `mydb`.`tblStudent` ( `StudentID` INT(6) NOT NULL AUTO_INCREMENT , `Student_Firstname` VARCHAR(20) NOT NULL 、 `Student_Lastname` VARCHAR(20) NOT NULL 、 `DOB` DATE NOT NULL 、 `Student_Gender` ENUM('男性','女性') NOT NULL , `Student_Address1` VARCHAR(40) NOT NULL 、 `Student_Address2` VARCHAR(22) NOT NULL 、 `Student_Address3` VARCHAR(14) NOT NULL 、 `Student_Phonenum` INT(10) NULL , `Student_Email` VARCHAR(60) NOT NULL , `Student_Password` CHAR(128) NOT NULL , `Enrollment_Date` DATE NOT NULL , `Graduation_Date` DATE NULL , `Student_Picture` VARCHAR(100) NOT NULL , `PPSN` VARCHAR(9) NOT NULL 、 主キー (`StudentID`) ) エンジン = InnoDB CREATE TABLE IF NOT EXISTS `mydb`.`tblIllness` ( `IllnessID` CHAR(5) NOT NULL , `Illness_Name` VARCHAR(30) NOT NULL 、 PRIMARY KEY (`IllnessID`) ) エンジン = InnoDB CREATE TABLE IF NOT EXISTS `mydb`.`tblStudentIllness` ( `IllnessID` CHAR(5) NOT NULL , `StudentID` INT(6) NOT NULL , `Doctor_Name` VARCHAR(30) NOT NULL 、 `Doctor_Phonenum` INT(10) NOT NULL , `薬` VARCHAR(40) NOT NULL , `Medical_Advice` VARCHAR(250) NOT NULL , PRIMARY KEY (`IllnessID`, `StudentID`) , INDEX `IllnessID_idx` (`IllnessID` ASC) 、 INDEX `StudentID_idx` (`StudentID` ASC) 、 制約 `IllnessID` 外部キー (`IllnessID` ) REFERENCES `mydb`.`tblIllness` (`IllnessID` ) カスケード削除時 更新カスケードでは、 CONSTRAINT `StudentID` FOREIGN KEY (`StudentID` ) REFERENCES `mydb`.`tblStudent` (`StudentID` ) カスケード削除時 更新カスケード時) エンジン = InnoDB