--BD PROJEKT MODEL LOGICZNY--
DROP TABLE uzytkownik;
DROP TABLE uprawnienia_adminow;
DROP TABLE admin;
DROP TABLE ban;
DROP TABLE dotacja;
DROP TABLE rozgrywka;
DROP TABLE tlumaczenie;
DROP TABLE opis;
DROP TABLE gra;
DROP TABLE tryb_gry;
DROP TABLE poziom_uzytkownika;
DROP TABLE znajomosc;
DROP TABLE trofeum;
DROP TABLE trofeum_uzytkownika;
DROP TABLE stat_przeciw_znaj;
CREATE TABLE poziom_uzytkownika (
id_poz_uzyt NUMBER(6) NOT NULL PRIMARY KEY,
nazwa_poziomu varchar2(20) NOT NULL,
kolor varchar2(20) NOT NULL,
min_wiek NUMBER(2) NOT NULL,
wymag_liczba_rozeg NUMBER(6) NOT NULL,
wymag_liczba_wygr NUMBER(6) NOT NULL
);
CREATE TABLE uzytkownik (
id_uzytkownika NUMBER(6) PRIMARY KEY,
login VARCHAR2(10) UNIQUE NOT NULL,
hash_hasla, --?
id_poziomu_uzytkownika NUMBER(6) NOT NULL REFERENCES poziom_uzytkownika,
imie VARCHAR2(20) NOT NULL,
nazwisko VARCHAR2(20) NOT NULL,
data_urodzenia DATE NOT NULL,
data_rejestracji DATE NOT NULL,
ostatnie_logowanie TIME,
ostatnie_wylogowanie TIME
);
--trigger data rejestracji wypełniana automatycznie?
CREATE TABLE uprawnienia_adminow (
rang_admina NUMBER(2) PRIMARY KEY,
zasieg_admina NUMBER(6) NOT NULL REFERENCES poziom_uzytkownika
);
CREATE TABLE admin (
id_admina NUMBER(6) PRIMARY KEY,
id_uzytkownika NUMBER(6) NOT NULL REFERENCES uzytkownik,
id_zwierzchnika NUMBER(6) REFERENCES admin,
ranga_admina NUMBER(2) NOT NULL REFERENCES uprawnienia_adminow
);
CREATE TABLE ban (
id_bana NUMBER(6) PRIMARY KEY,
id_uzytkownika NUMBER(6) NOT NULL REFERENCES uzytkownik,
id_admina NUMBER(6) REFERENCES admin,
data_zbanowania DATE NOT NULL,
data_wygasniecia DATE NOT NULL
);
--trigger data zbanowania wypełniana automatycznie?
CREATE TABLE dotacja (
id_dotacji NUMBER(6) PRIMARY KEY,
id_uzytkownika NUMBER(6) NOT NULL REFERENCES uzytkownik,
kwota NUMBER(7) NOT NULL CHECK (kwota > 0),
data_wplaty DATE NOT NULL
);
--trigger data wpłaty wypełniana automatycznie?
CREATE TABLE tlumaczenie (
slowo VARCHAR2(20) PRIMARY KEY,
przetlumaczone VARCHAR2(20) NOT NULL,
jezyk VARCHAR(10) NOT NULL
);
CREATE TABLE opis (
id_opisu NUMBER(6) NOT NULL PRIMARY KEY,
opis varchar2(1024) NOT NULL
);
CREATE TABLE gra (
id_gry NUMBER(6) NOT NULL PRIMARY KEY,
nazwa_gry varchar2(20) NOT NULL,
id_opisu NUMBER(6) NOT NULL REFERENCES opis
);
CREATE TABLE tryb_gry (
id_trybu NUMBER(6) NOT NULL PRIMARY KEY,
nazwa_trybu varchar2(20) NOT NULL,
wymagany_poziom NUMBER(6) NOT NULL REFERENCES poziom_uzytkownika
);
CREATE TABLE rozgrywka (
id_rozgrywki NUMBER(6) PRIMARY KEY,
id_gry NUMBER(6) NOT NULL REFERENCES gra,
id_trybu NUMBER(6) NOT NULL REFERENCES tryb_gry,
id_zwyciezcy NUMBER(6) NOT NULL REFERENCES uzytkownik,
id_przegranego NUMBER(6) NOT NULL REFERENCES uzytkownik
);
CREATE TABLE znajomosc (
id_uzyt NUMBER(6) NOT NULL REFERENCES uzytkownik,
id_znaj NUMBER(6) NOT NULL REFERENCES uzytkownik,
PRIMARY KEY (id_uzyt, id_znaj)
)
CREATE TABLE trofeum (
id_trofeum NUMBER(6) NOT NULL PRIMARY KEY,
nazwa_trofeum varchar2(20) NOT NULL,
id_gry NUMBER(6) NOT NULL REFERENCES gra,
id_trybu NUMBER(6) NOT NULL REFERENCES tryb_gry,
wym_poziom NUMBER(6) NOT NULL REFERENCES poziomy_uzytkownika,
wym_liczba_zwyciestw NUMBER(6) NOT NULL,
wym_proc_zwyciestw NUMBER(0, 2) NOT NULL
);
CREATE TABLE trofeum_uzytkownika (
id_uzytkownika NUMBER(6) NOT NULL REFERENCES uzytkownik,
id_trofeum NUMBER(6) NOT NULL REFERENCES trofeum
PRIMARY KEY (id_uzytkownika, id_trofeum)
);
CREATE TABLE stat_przeciw_znaj (
id_znajmomosci NUMBER(6) NOT NULL PRIMARY KEY,
id_gry NUMBER(6) NOT NULL REFERENCES
);