Witam, jestem początkującym programistą (w sumie to juniorkiem), na stud. podyplomowych z "Aplikacji biznesowych w JAVA EE". Realizuje temat, zadanie zaliczeniowe "System ewidencji kompetencji pracownika" - wiadomo wymagań specjalnych nie ma, prosta aplikacja CRUD. W końcu się trenuje jeszcze. No i teraz start - uczyli nas pracy w NetBeans, zaczynam od stworzenia sobie bazy danych (nie pytam jakich komend użyć, co kliknąć to łatwo odszukać). Myślę nad zaprojektowaniem dobrej, możliwie jak najbardziej optymalnej bazy pod mój program:
CREATE TABLE "CECHERZ".USERS
(
"ID_USER" INTEGER default 321 not null,
check ("ID_USER" >= 321),
"LOGIN" VARCHAR(12) not null unique,
"PASSWORD" VARCHAR(20) not null,
"E_MAIL" VARCHAR(40) not null unique,
"ISADMIN" BOOLEAN default false not null,
primary key ("ID_USER")
);
CREATE TABLE "CECHERZ".WORKERS
(
"NAME" VARCHAR(30) not null,
"SURNAME" VARCHAR(60) not null,
"DATE_OF_BIRTH" DATE not null,
"ADDRESS" VARCHAR(120) not null,
"E_MAIL" VARCHAR(40) not null,
"PHONE_NUMBER" VARCHAR(15) not null,
"ACTIVATION_DATE" DATE not null,
FOREIGN KEY ("E_MAIL") REFERENCES USERS("E_MAIL")
);
CREATE TABLE "CECHERZ".QUALIFICATION
(
"ID_USER" INTEGER default 321 not null,
check ("ID_USER" >= 321),
"PROGRAMMING_LANGUAGE" VARCHAR(120),
"FRAMEWORKS" VARCHAR(300),
"FOREIGN LANGUAGES" VARCHAR(120),
"SOFTWARE" VARCHAR(300),
"OTHER SKILLS" VARCHAR(500),
FOREIGN KEY ("ID_USER") REFERENCES USERS("ID_USER")
)
CREATE TABLE "CECHERZ".EDUCATION
(
"ID_USER" INTEGER default 321 not null,
check ("ID_USER" >= 321),
"BEGIN_EDUCATION" DATE,
"END_EDUCATION" DATE,
"NAME_OF_SCHOOL" VARCHAR(120),
"KIND_OF_SCHOOL" VARCHAR(120),
"SPECIALIZATION" VARCHAR(120),
FOREIGN KEY ("ID_USER") REFERENCES USERS("ID_USER")
);
CREATE TABLE "CECHERZ".TRAININGS
(
"ID_USER" INTEGER default 321 not null,
check ("ID_USER" >= 321),
"BEGIN_OF_TRAINING" DATE,
"END_TRAINING" DATE,
"CONTENT_TRAINING" VARCHAR(500),
"HOWLONG_TRAINING" SMALLINT,
FOREIGN KEY ("ID_USER") REFERENCES USERS("ID_USER")
);
CREATE TABLE "CECHERZ".HISTORY_OF_WORK
(
"ID_USER" INTEGER default 321 not null,
check ("ID_USER" >= 321),
"BEGIN_WORK" DATE,
"END_WORK" DATE,
"COMPANY" VARCHAR(60),
"POSITION" VARCHAR(60),
"CHARACTER_OF_WORK" VARCHAR(120),
"ACQUIRED_SKILLS" VARCHAR(500),
FOREIGN KEY ("ID_USER") REFERENCES USERS("ID_USER")
);
Środowisko mi łyka tabelki (niby nie ma problemu), nie trudno jednak zauważyć, że można by to lepiej zaprojektować. Nie mieliśmy zajęć z projektowania baz, a nie mogę zacząć tworzenia aplikacji bez dobrze skonstruowanych tabel. Przepraszam, że nie ma ładnych diagramów ale nie chciałem tracić czasu na nowe aplikacje. Proszę o uwagi, każda będzie dla mnie na wagę złota.