Mysql
無法添加外鍵約束
據我所知,它應該可以工作,我經歷了其他類似的問題,但它似乎是導致相同錯誤的不同事物。
CREATE TABLE Job ( JobNumber INT NOT NULL, JobName CHAR(30) NOT NULL, JobDescription CHAR(60) NOT NULL, Title Char(30) NOT NULL, PersonID INT NOT NULL, CONSTRAINT PK_JobNum PRIMARY KEY (JobNumber) ); CREATE TABLE Employee ( PersonID INT NOT NULL, FirstName CHAR(30) NOT NULL, LastName CHAR(30) NOT NULL, CONSTRAINT Pk_PersonID PRIMARY KEY(PersonID), CONSTRAINT FK_Job_2_Employee FOREIGN KEY(PersonID) REFERENCES Job(PersonID) ); CREATE TABLE Game ( GameNumber INT NOT NULL, Title CHAR(30) NOT NULL, System CHAR(30) NOT NULL, CONSTRAINT PK_GameNumber PRIMARY KEY(GameNumber), CONSTRAINT FK_Job_2_Game FOREIGN KEY(Title) REFERENCES Job(Title) );
當我嘗試初始化第二個表時出現錯誤。(它可能會出現在第三個。)
- 多人可以做同一份工作,一個人可以做多份工作。
- the
JobNumber
和 theJobName
不是一回事。每個JobNumber
人只有一個員工,而一個人JobNumber
只有一個JobName
。- 和一個人的
JobNumber
工作不是一回事。- 工作編號和工作種類不是一回事。例如,職位編號 1235 和 1435 都可以擁有“關卡設計師”職位。
看來您將外鍵放在錯誤的表上。
PersonID
表上的列Jobs
應參考表PersonID
上的Employee
。如果您將人員分配給工作,那麼您的原始外鍵應該是 on
JobId
。這將需要添加JobId
到Employees
表中並PersonId
從表中刪除Jobs
。如果
Employees
可以有多個Jobs
並且Jobs
可以有多個Employee
,那麼您將需要一個連接表。它將具有表Jobs
和Employees
表的外鍵。連接表的主鍵將包括PersonId
和JobId
。