MySQL duplicates a foreign key

I am new to MySQL and I am trying to set up a database for personal use. I am trying to give a few "Werknemer" the same "Jobfunctie".

For example: A member of the team (werknemer) (0100) - "arbider". The second crew member (werknemer) (0101) is also the "Arbider".

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,
    winkelnummer int(4) not NULL,
    primary key(personeelsnummer),
    foreign key(winkelnummer) references Winkel(winkelnummer)

CREATE TABLE Jobfunctie (
    jobfunctie varchar(15) not NULL,
    salaris_in_euro int(10) not NULL,
    personeelsnummer int(4) not NULL,
    foreign key(personeelsnummer) references Werknemer(personeelsnummer),
    primary key(jobfunctie)
);

INSERT INTO Werknemer values
(0100, 'firstname', 'lastname', 'adress', 'telephone', 0001);
INSERT INTO Werknemer values
(0101, 'firstname2', 'lastname2', 'adress', 'telephone', 0002);

INSERT INTO Jobfunctie values
('Arbeider', 1500, 0100);
INSERT INTO Jobfunctie values
('Arbeider', 1500, 0101);

This means that "Arbeider" appears twice as a primary key, which is impossible. How to assign several people the same job?

+4
source share
2 answers

. 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);
+2

Jobfunctie :

CREATE TABLE Jobfunctie (
 jobfunctienummer int(4) not NULL,
 jobfunctie varchar(15) not NULL,
 salaris_in_euro int(10) not NULL,
 personeelsnummer int(4) not NULL,
 foreign key(personeelsnummer) references Werknemer(personeelsnummer),
 primary key(jobfunctienummer)
);

:

INSERT INTO Jobfunctie values
('1', 'Arbeider', 1500, 0100);
INSERT INTO Jobfunctie values
('2', 'Arbeider', 1500, 0101);
+1

Source: https://habr.com/ru/post/1622470/


All Articles