这些情况的教科书解决方案是使用联结或映射表. Werknemer应该包含有关船员,Jobfunctie的有关工作描述的信息,并且您需要第三个表来分配船员工作:
CREATE TABLE Werknemer (
personeelsnummer INT(4) NOT NULL,
voornaam VARCHAR(10) NOT NULL,
achternaam VARCHAR(10) NOT NULL,
adres VARCHAR(30) NOT NULL,
telefoon VARCHAR(10) NOT NULL,
PRIMARY KEY (personeelsnummer)
);
CREATE TABLE Jobfunctie (
jobnumber INT(4) NOT NULL
jobfunctie VARCHAR(15) NOT NULL,
salaris_in_euro INT(10) NOT NULL,
PRIMARY KEY (jobnumber)
);
-- The new junction table
CREATE TABLE Werknemer_Jobfunctie (
personeelsnummer INT(4) NOT NULL,
jobnumber INT(4) NOT NULL,
PRIMARY KEY (personeelsnummer, jobnumber),
FOREIGN KEY (personeelsnummer) references Werknemer (personeelsnummer),
FOREIGN KEY (jobnumber) references Jobfunctie (jobnumber),
)
-- Insert crewmen
INSERT INTO Werknemer VALUES
(0100, 'firstname', 'lastname', 'adress', 'telephone');
INSERT INTO Werknemer VALUES
(0101, 'firstname2', 'lastname2', 'adress', 'telephone');
-- Insert a job description
INSERT INTO Jobfunctie VALUES
(1, 'Arbeider', 1500);
-- Assign this job to both crewmen
INSERT INTO Werknemer_Jobfunctie VALUES
(0100, 1);
INSERT INTO Werknemer_Jobfunctie VALUES
(0101, 1);