Witam,
Zaczynam swoją przygodę z SQL'em i mam mały problem. Narysowałem diagram encji (podany w załączniku) wynika z niego że wiele pracowników może ukończyć wiele kursów, identyczną relację chciałem osiągnąć pomiędzy stanowiskiem a kwalifikacjami. Czy taka forma jest poprawna ?
Jeżeli tak proszę o odpowiedz, w jaki sposób to zastosować ?
Poniżej wrzucam aktualny kod skromnego projektu:
Create:
SET client_encoding='UTF-8';
drop table Pracownik cascade;
drop table Kurs cascade;
drop table Stanowisko cascade;
drop table Kwalifikacje cascade;
CREATE TABLE Kurs
(
Rodzaj_kursu varchar(32) not null,
ID_Kurs integer PRIMARY KEY
);
CREATE TABLE Kwalifikacje
(
ID_Kwalifikacje integer PRIMARY KEY,
Stopień_Kwalifikacji varchar(32) NOT NULL
);
CREATE TABLE Stanowisko
(
Nr_Stanowiska integer PRIMARY KEY,
Nazwa_Stanowiska varchar(32) NOT NULL,
Wynagrodzenie integer,
numer_Kwalifikacje integer,
CONSTRAINT ID_Kwalifikacje FOREIGN KEY (numer_Kwalifikacje)
REFERENCES Kwalifikacje (ID_Kwalifikacje)
);
CREATE TABLE Pracownik
(
nr_pracownika integer PRIMARY KEY,
Imie varchar(32) not null,
Nazwisko varchar(32) not null,
Pesel integer,
numer_Kurs integer,
numer_Stanowiska integer,
CONSTRAINT ID_Kurs FOREIGN KEY (numer_Kurs)
REFERENCES Kurs (ID_Kurs),
CONSTRAINT Nr_Stanowiska FOREIGN KEY (numer_Stanowiska)
REFERENCES Stanowisko (Nr_Stanowiska)
);
Insert:
SET client_encoding='utf-8';
INSERT INTO Kurs values ('PSQL', 1);
INSERT INTO Kurs values ('Python', 2);
INSERT INTO Kurs values ('C', 3);
INSERT INTO Kurs values ('Java', 4);
INSERT INTO Kurs values ('HTML', 5);
INSERT INTO Kwalifikacje values (1, 'Podstawowy');
INSERT INTO Kwalifikacje values (2, 'Rozszerzony');
INSERT INTO Kwalifikacje values (3, 'Zaawansowany');
INSERT INTO Kwalifikacje values (4, 'Średnio_Zaawansowany');
INSERT INTO Kwalifikacje values (5, 'Master');
INSERT INTO Stanowisko values (1, 'Menager', 12000, 5);
INSERT INTO Stanowisko values (2, 'Programista', 10000, 3);
INSERT INTO Stanowisko values (3, 'Grafik', 8000, 2);
INSERT INTO Stanowisko values (4, 'Dźwiękowiec', 6000, 4);
INSERT INTO Stanowisko values (5, 'Sprzedawca', 5000, 1);
INSERT INTO Pracownik values (1, 'Michał', 'Maciejewski', 404, 1, 1);
INSERT INTO Pracownik values (2, 'Marian', 'Kowalski', 505, 3, 2);
INSERT INTO Pracownik values (3, 'Zbyszek', 'Maciejewski', 606, 2, 4);
INSERT INTO Pracownik values (4, 'Zbyszek', 'Boniek', 707, 5, 4);
INSERT INTO Pracownik values (5, 'Jan', 'Niezbędny', 808, 4, 3);
MMBlack