/* CREATED: 29.04.2020 MODIFIED: 02.05.2020 PROJECT: HURTOWNIA SPRZęTU ELEKTRONICZNEGO MODEL: HURTNIOWNIA AUTHOR: MICHAł STOLARSKI, MATEUSZ MARCINIAK DATABASE: ORACLE 12C */ -- CREATE TABLES SECTION ------------------------------------------------- -- TABLE HURTOWNIE CREATE TABLE HURTOWNIE( ID_HURTOWNI INTEGER NOT NULL, NAZWA VARCHAR2(30 ) NOT NULL, ID_ADRESU INTEGER NOT NULL ) / -- CREATE INDEXES FOR TABLE HURTOWNIE CREATE INDEX IX_RELATIONSHIP1 ON HURTOWNIE (ID_ADRESU) / -- ADD KEYS FOR TABLE HURTOWNIE ALTER TABLE HURTOWNIE ADD CONSTRAINT UNIQUE_IDENTIFIER1 PRIMARY KEY (ID_HURTOWNI) / -- TABLE AND COLUMNS COMMENTS SECTION COMMENT ON COLUMN HURTOWNIE.NAZWA IS 'NAZWA HURTOWNI' / -- TABLE PRACOWNICY CREATE TABLE PRACOWNICY( ID_PRACOWNIKA INTEGER NOT NULL, IMIE VARCHAR2(20 ) NOT NULL, NAZWISKO VARCHAR2(30 ) NOT NULL, NUMER_TELEFONU VARCHAR2(20 ) NOT NULL, EMAIL VARCHAR2(30 ) NOT NULL, PESEL CHAR(11 ), DATA_URODZENIA DATE NOT NULL, DATA_ZATRUDNIENIA DATE NOT NULL, PLEC CHAR(1 ) NOT NULL CHECK (PLEC IN ('K','M')), STANOWISKO VARCHAR2(23 ) NOT NULL CHECK (STANOWISKO IN ('MAGAZYNIER', 'KIEROWCA', 'PRZEDSTAWICIEL HANDLOWY', 'KSIEGOWY')), ID_HURTOWNI INTEGER NOT NULL, ID_ADRESU INTEGER NOT NULL ) / -- CREATE INDEXES FOR TABLE PRACOWNICY CREATE INDEX IX_ZATRUDNIA ON PRACOWNICY (ID_HURTOWNI) / CREATE INDEX IX_RELATIONSHIP2 ON PRACOWNICY (ID_ADRESU) / -- ADD KEYS FOR TABLE PRACOWNICY ALTER TABLE PRACOWNICY ADD CONSTRAINT UNIQUE_PRACOWNIK PRIMARY KEY (ID_PRACOWNIKA) / -- TABLE WYNAGRODZENIA CREATE TABLE WYNAGRODZENIA( ID_WYNAGRODZENIA INTEGER NOT NULL, DATA_WYNAGRODZENIA DATE NOT NULL, STAWKA NUMBER(10,2) NOT NULL, SPOSOB_WYNAGRODZENIA VARCHAR2(8 ) NOT NULL CHECK (SPOSOB_WYNAGRODZENIA IN ('PRZELEW','GOTOWKA')), ID_PRACOWNIKA INTEGER NOT NULL ) / -- CREATE INDEXES FOR TABLE WYNAGRODZENIA CREATE INDEX IX_OTRZYMUJE ON WYNAGRODZENIA (ID_PRACOWNIKA) / -- ADD KEYS FOR TABLE WYNAGRODZENIA ALTER TABLE WYNAGRODZENIA ADD CONSTRAINT UNIQUE_IDENTIFIER3 PRIMARY KEY (ID_WYNAGRODZENIA) / -- TABLE PRODUKTY CREATE TABLE PRODUKTY( ID_PRODUKTU INTEGER NOT NULL, NAZWA VARCHAR2(30 ) NOT NULL, CENA FLOAT(126) NOT NULL, OKRES_GWARANCJI INTEGER NOT NULL, ILOSC INTEGER NOT NULL, ID_HURTOWNI INTEGER NOT NULL, ID_ZAOPATRZENIOWCA INTEGER NOT NULL ) / -- CREATE INDEXES FOR TABLE PRODUKTY CREATE INDEX IX_POSIADA_PRODUKT ON PRODUKTY (ID_HURTOWNI) / CREATE INDEX IX_DOSTARCZA ON PRODUKTY (ID_ZAOPATRZENIOWCA) / -- ADD KEYS FOR TABLE PRODUKTY ALTER TABLE PRODUKTY ADD CONSTRAINT UNIQUE_IDENTIFIER4 PRIMARY KEY (ID_PRODUKTU) / -- TABLE ZAMOWIENIA CREATE TABLE ZAMOWIENIA( ID_ZAMOWIENIA INTEGER NOT NULL, DATA_ZLOZENIA DATE NOT NULL, DATA_REALIZACJI DATE NOT NULL, STAN_WPLATY VARCHAR2(12 ) NOT NULL CHECK (STAN_WPLATY IN ('NIE WPLACONO','WPLACONO')), KOSZT_TRANSPOORTU NUMBER(10,2) NOT NULL, SPOSOB_DOSTAWY VARCHAR2(15 ) NOT NULL CHECK (SPOSOB_DOSTAWY IN ('ODBIOR OSOBISTY', 'WYSYLKA')), SPOSOB_PLATNOSCI VARCHAR2(8 ) NOT NULL CHECK (SPOSOB_WYNAGRODZENIA IN ('PRZELEW','GOTOWKA')), ID PODMIOTU INTEGER NOT NULL, ID_PRACOWNIKA INTEGER NOT NULL ) / -- CREATE INDEXES FOR TABLE ZAMOWIENIA CREATE INDEX IX_PODMIOT_SKLADA ON ZAMOWIENIA (ID_PODMIOTU) / CREATE INDEX IX_PRACOWNIK_REALIZUJE ON ZAMOWIENIA (ID_PRACOWNIKA) / -- ADD KEYS FOR TABLE ZAMOWIENIA ALTER TABLE ZAMOWIENIA ADD CONSTRAINT UNIQUE_IDENTIFIER5 PRIMARY KEY (ID_ZAMOWIENIA) / -- TABLE KLIENCI CREATE TABLE KLIENCI( ID_KLIENTA INTEGER NOT NULL, IMIE VARCHAR2(20 ) NOT NULL, NAZWISKO VARCHAR2(30 ) NOT NULL, NUMER_TELEFONU VARCHAR2(20 ) NOT NULL, EMAIL VARCHAR2(30 ) NOT NULL, ID_PODMIOTU INTEGER NOT NULL ) / -- ADD KEYS FOR TABLE KLIENCI ALTER TABLE KLIENCI ADD CONSTRAINT UNIQUE_IDENTIFIER2 PRIMARY KEY (ID_KLIENTA,ID_PODMIOTU) / -- TABLE POJAZDY CREATE TABLE POJAZDY( ID_POJAZDU INTEGER NOT NULL, RODZAJ_PALIWA VARCHAR2(7 ) NOT NULL CHECK (RODZAJ_PALIWA IN ('BENZYNA', 'DIESEL')), NUMER_REJESTRACYJNY VARCHAR2(30 ) NOT NULL, NUMER_VIN CHAR(17 ) NOT NULL, DATA_PRODUKCJI DATE NOT NULL, ID_HURTOWNI INTEGER NOT NULL, ID_MODELU INTEGER NOT NULL ) / -- CREATE INDEXES FOR TABLE POJAZDY CREATE INDEX IX_POSIADA_POJAZD ON POJAZDY (ID_HURTOWNI) / CREATE INDEX IX_RELATIONSHIP4 ON POJAZDY (ID_MODELU) / -- ADD KEYS FOR TABLE POJAZDY ALTER TABLE POJAZDY ADD CONSTRAINT UNIQUE_IDENTIFIER7 PRIMARY KEY (ID_POJAZDU) / -- TABLE PODMIOTY CREATE TABLE PODMIOTY( ID_PODMIOTU INTEGER NOT NULL, NAZWA VARCHAR2(30 ) NOT NULL, NIP CHAR(10 ) NOT NULL, REGON CHAR(9 ) NOT NULL, ID_HURTOWNI INTEGER NOT NULL, ID_ADRESU INTEGER NOT NULL ) / -- CREATE INDEXES FOR TABLE PODMIOTY CREATE INDEX IX_POSIADA_PODMIOT ON PODMIOTY (ID_HURTOWNI) / CREATE INDEX IX_RELATIONSHIP55 ON PODMIOTY (ID_ADRESU) / -- ADD KEYS FOR TABLE PODMIOTY ALTER TABLE PODMIOTY ADD CONSTRAINT UNIQUE_IDENTIFIER8 PRIMARY KEY (ID_PODMIOTU) / -- TABLE ZAOPATRZENIOWIECY CREATE TABLE ZAOPATRZENIOWIECY( ID_ZAOPATRZENIOWCA INTEGER NOT NULL, NAZWA VARCHAR2(30 ) NOT NULL, NR_TELEFONU VARCHAR2(20 ) NOT NULL, NIP CHAR(10 ) NOT NULL, ID_HURTOWNI INTEGER NOT NULL, ID_ADRESU INTEGER NOT NULL ) / -- CREATE INDEXES FOR TABLE ZAOPATRZENIOWIECY CREATE INDEX IX_KONTRAKTUJE ON ZAOPATRZENIOWIECY (ID_HURTOWNI) / CREATE INDEX IX_RELATIONSHIP11 ON ZAOPATRZENIOWIECY (ID_ADRESU) / -- ADD KEYS FOR TABLE ZAOPATRZENIOWIECY ALTER TABLE ZAOPATRZENIOWIECY ADD CONSTRAINT UNIQUE_IDENTIFIER9 PRIMARY KEY (ID_ZAOPATRZENIOWCA) / -- TABLE PRODUKT_ZAMOWIENIA CREATE TABLE PRODUKT_ZAMOWIENIA( ID_PRODUKTU INTEGER NOT NULL, ID_ZAMOWIENIA INTEGER NOT NULL ) / -- TABLE PRACOWNIK_POJAZD CREATE TABLE PRACOWNIK_POJAZD( ID_PRACOWNIKA INTEGER NOT NULL, ID_POJAZDU INTEGER NOT NULL ) / -- TABLE REALIZACJA_ZAMOWIENIA CREATE TABLE REALIZACJA_ZAMOWIENIA( ID_POJAZDU INTEGER NOT NULL, ID_ZAMOWIENIA INTEGER NOT NULL ) / -- TABLE POCZTY CREATE TABLE POCZTY( ID_POCZTY INTEGER NOT NULL, KOD_POCZTOWY CHAR(6 ) NOT NULL, MIASTO VARCHAR2(20 ) NOT NULL ) / -- ADD KEYS FOR TABLE POCZTY ALTER TABLE POCZTY ADD CONSTRAINT PK_POCZTY PRIMARY KEY (ID_POCZTY) / ALTER TABLE POCZTY ADD CONSTRAINT KOD POCZTOWY UNIQUE (KOD_POCZTOWY) / -- TABLE AND COLUMNS COMMENTS SECTION COMMENT ON COLUMN POCZTY.ID_POCZTY IS 'NUMER UNIKATOWY ID POCZTY' / COMMENT ON COLUMN POCZTY.KOD_POCZTOWY IS 'KOD POCZTOWY' / -- TABLE ADRESY CREATE TABLE ADRESY( ID_ADRESU INTEGER NOT NULL, MIASTO VARCHAR2(20 ) NOT NULL, ULICA VARCHAR2(30 ) NOT NULL, NR_BUDYNKU VARCHAR2(5 ) NOT NULL, NR_LOKALU VARCHAR2(5 ), ID_POCZTY INTEGER NOT NULL ) / -- CREATE INDEXES FOR TABLE ADRESY CREATE INDEX IX_RELATIONSHIP5 ON ADRESY (ID_POCZTY) / -- ADD KEYS FOR TABLE ADRESY ALTER TABLE ADRESY ADD CONSTRAINT PK_ADRESY PRIMARY KEY (ID_ADRESU) / -- TABLE AND COLUMNS COMMENTS SECTION COMMENT ON COLUMN ADRESY.ID_ADRESU IS 'NUMER UNIKATOWY ID ADRESU' / COMMENT ON COLUMN ADRESY.MIASTO IS 'MIASTO' / COMMENT ON COLUMN ADRESY.ULICA IS 'ULICA' / COMMENT ON COLUMN ADRESY.NR_BUDYNKU IS 'NUMER BUDYNKU' / COMMENT ON COLUMN ADRESY.NR_LOKALU IS 'NUMER LOKALU' / -- TABLE WłASCICIELE CREATE TABLE WłASCICIELE( ID_WLASCICIELA INTEGER NOT NULL, IMIE VARCHAR2(20 ) NOT NULL, NAZWISKO VARCHAR2(30 ) NOT NULL, ID_HURTOWNI INTEGER NOT NULL ) / -- CREATE INDEXES FOR TABLE WłASCICIELE CREATE INDEX IX_RELATIONSHIP7 ON WłASCICIELE (ID_HURTOWNI) / -- ADD KEYS FOR TABLE WłASCICIELE ALTER TABLE WłASCICIELE ADD CONSTRAINT PK_WłASCICIELE PRIMARY KEY (ID_WLASCICIELA) / -- TABLE AND COLUMNS COMMENTS SECTION COMMENT ON COLUMN WłASCICIELE.ID_WLASCICIELA IS 'NUMER UNIKATOWY ID WłAśCICIELA' / COMMENT ON COLUMN WłASCICIELE.IMIE IS 'IMIę' / COMMENT ON COLUMN WłASCICIELE.NAZWISKO IS 'NAZWISKO' / -- TABLE MODELE CREATE TABLE MODELE( ID_MODELU INTEGER NOT NULL, NAZWA VARCHAR2(30 ) NOT NULL, ID_MARKI INTEGER NOT NULL ) / -- CREATE INDEXES FOR TABLE MODELE CREATE INDEX IX_RELATIONSHIP3 ON MODELE (ID_MARKI) / -- ADD KEYS FOR TABLE MODELE ALTER TABLE MODELE ADD CONSTRAINT PK_MODELE PRIMARY KEY (ID_MODELU) / -- TABLE MARKI CREATE TABLE MARKI( ID_MARKI INTEGER NOT NULL, NAZWA VARCHAR2(30 ) NOT NULL ) / -- ADD KEYS FOR TABLE MARKI ALTER TABLE MARKI ADD CONSTRAINT PK_MARKI PRIMARY KEY (ID_MARKI) / -- CREATE FOREIGN KEYS (RELATIONSHIPS) SECTION ------------------------------------------------- ALTER TABLE PRACOWNICY ADD CONSTRAINT ZATRUDNIA FOREIGN KEY (ID_HURTOWNI) REFERENCES HURTOWNIE (ID_HURTOWNI) / ALTER TABLE WYNAGRODZENIA ADD CONSTRAINT OTRZYMUJE FOREIGN KEY (ID_PRACOWNIKA) REFERENCES PRACOWNICY (ID_PRACOWNIKA) / ALTER TABLE PRODUKTY ADD CONSTRAINT POSIADA_PRODUKT FOREIGN KEY (ID_HURTOWNI) REFERENCES HURTOWNIE (ID_HURTOWNI) / ALTER TABLE ZAOPATRZENIOWIECY ADD CONSTRAINT KONTRAKTUJE FOREIGN KEY (ID_HURTOWNI) REFERENCES HURTOWNIE (ID_HURTOWNI) / ALTER TABLE PRODUKTY ADD CONSTRAINT DOSTARCZA FOREIGN KEY (ID_ZAOPATRZENIOWCA) REFERENCES ZAOPATRZENIOWIECY (ID_ZAOPATRZENIOWCA) / ALTER TABLE POJAZDY ADD CONSTRAINT POSIADA_POJAZD FOREIGN KEY (ID_HURTOWNI) REFERENCES HURTOWNIE (ID_HURTOWNI) / ALTER TABLE PODMIOTY ADD CONSTRAINT POSIADA_PODMIOT FOREIGN KEY (ID_HURTOWNI) REFERENCES HURTOWNIE (ID_HURTOWNI) / ALTER TABLE ZAMOWIENIA ADD CONSTRAINT PODMIOT_SKLADA FOREIGN KEY (ID_PODMIOTU) REFERENCES PODMIOTY (ID_PODMIOTU) / ALTER TABLE ZAMOWIENIA ADD CONSTRAINT PRACOWNIK_REALIZUJE FOREIGN KEY (ID_PRACOWNIKA) REFERENCES PRACOWNICY (ID_PRACOWNIKA) / ALTER TABLE HURTOWNIE ADD CONSTRAINT ADRES_HURTOWNI FOREIGN KEY (ID_ADRESU) REFERENCES ADRESY (ID_ADRESU) / ALTER TABLE PRACOWNICY ADD CONSTRAINT ADRES_PRACOWNIKA FOREIGN KEY (ID_ADRESU) REFERENCES ADRESY (ID_ADRESU) / ALTER TABLE PODMIOTY ADD CONSTRAINT ADRES_PODMIOTU FOREIGN KEY (ID_ADRESU) REFERENCES ADRESY (ID_ADRESU) / ALTER TABLE ZAOPATRZENIOWIECY ADD CONSTRAINT ADRES_ZAOPATRZENIOWCA FOREIGN KEY (ID_ADRESU) REFERENCES ADRESY (ID_ADRESU) / ALTER TABLE ADRESY ADD CONSTRAINT ADRES_MA_POCZTE FOREIGN KEY (ID_POCZTY) REFERENCES POCZTY (ID_POCZTY) / ALTER TABLE WłASCICIELE ADD CONSTRAINT POSIADA_WłASCICIELA FOREIGN KEY (ID_HURTOWNI) REFERENCES HURTOWNIE (ID_HURTOWNI) / ALTER TABLE MODELE ADD CONSTRAINT MODEL_MA_MARKE FOREIGN KEY (ID_MARKI) REFERENCES MARKI (ID_MARKI) / ALTER TABLE POJAZDY ADD CONSTRAINT POJAZD_MA_MODEL FOREIGN KEY (ID_MODELU) REFERENCES MODELE (ID_MODELU) /