Cuprins
- 1. Descrierea temei 3
- 2. Schema conceptuală 4
- 3. Crearea tabelelor 5
- 4. Exemple de comenzi LDD asupra tabelelor 6
- 5. Incărcarea tabelelor cu date 7
- 6. Exemple de comenzi de tip LMD asupra tabelelor 8
- 7. Exemple folosind clauze ale comenzii SELECT, funcţii, subcereri şi join-uri 10
- 8. Folosirea funcţiilor DECODE, NVL, CASE şi a operatorului GROUP BY 12
- 9. Folosirea operatorilor MINUS, UNION, INTERSECT 13
- 10. Gestiunea altor obiecte ale bazei de date 14
Extras din proiect
1. Descrierea temei
O societate de construcţii dispune de mai mulţi angajaţi pentru diversele sale puncte de lucru, ficare având o anumită funcţie şi fiind angajat pe baza unui contract individual de muncă, în care este specificat salariul.
La un punct de lucru lucreză mai mulţi angajaţi, iar un angajat nu poate lucra decât la un punct de lucru (1:M).
O funcţie poate fi deţinută de mai mulţi angajaţi, dar un angajat nu poate avea decât o funcţie(1:M).
Un angajat lucrează pe baza unui contract de muncă, iar contractul de muncă este individual (1:1).
Un angajat are propriul salariu (1:1).
Definite fiind legaturile dintre entitătăţi pot trece la descrierea fiecărei tabele in parte.
Tabela ANGAJATI, are drept atribute MARCA angajatului care este şi cheia primară a acestui obiect, NUMELE angajatului, PRENUMELE, CNP-UL, SERIA şi NUMĂRUL cărţii de identitate.
Tabela PUNCTE_LUCRU (corespunzătoare şantierelor firmei) are coloanele ID_PL cheia primară a acestei tabele, NUMELE punctului de lucru, LOCALITATEA în care se află, DATA de Inceput şi DATA de Sfârşit a şantierului.
Tabela FUNCTII cuprinde funcţiile din societate, cu DENUMIREA lor, NIVELUL DE STUDII necesar acelei funcţii şi salariul minim pe economie corespunzător ei. Cheia primară este ID_FUNCT.
Tabela CONTRACTE este alcătuită din MARCA, cheie primară ce se face legătura cu tabelele ANGAJATI şi SALARII, NUMARUL contractului individual de munca, DATA de INCEPUT a contractului, DATA de SFARSIT în caz că salariatul este angajat pe perioadă determinată sau parăseşte societatea, ID-ul functiei şi ID-ul punctului de lucru.
Tabela SALARII, cea mai complexă dintre toate, ajută la calculul salariului net, pornind de la salariul brut, normă, numărul de ore lucrat în acea lună şi procentele corespunzătoare impozitelor. Ea este formată din MARCA, atribut cheie primară şi cheie externă ce realizează legătura cu tabela CONTRACTE, SALARIUL DE BAZA, adică salariul înscris în contractul de muncă, NORMA zilnică a acelui angajat, ORELE LUCRATE în acea lună, SALARIUL BRUT corespunzător orelor lucrate, procentele ce se opresc din salariu pentru CAS, SANATATE şi SOMAJ, VENITUL NET, ce se obţine după scăderea acestor procente din salariu şi în cele din urmă SALARIUL NET, ce este VENITUL NET din care se scace IMPOZITUL pe salariu.
Acestea fiind spuse voi prezenta în continuare schema conceptuală ce ilustrează cele de mai sus.
2. Schema conceptuală
ANGAJATI
MARCA NUME PRENUME CNP SERIE_CI NR_CI
PUNCTE_LUCRU
ID PL
NUME_PL LOCALITATE DATAI DATASF
FUNCTII
ID_FUNCT
DEN_FUNCT NIVEL_STUDII SAL_MIN
CONTRACTE
MARCA NR_CM DATA_INCEPUT DATA_SFARSIT ID_FUNCT ID_PL
SALARII
MARCA
SAL_BAZA NORMA ORE_LUCRATE SAL_BRUT CAS SOMAJ SANATATE
VENIT_NET IMPOZIT SAL_NET
3. Crearea tabelelor
Crearea tabelei FUNCTII:
create table functii
(id_funct number(3) constraint pk_functii primary key,
den_funct varchar2(20),
nivel_studii varchar2(20),
sal_min number(5) not null);
Crearea tabelei PUNCTE_LUCRU:
create table puncte_lucru
(id_pl number(3) constraint pk_puncte primary key,
nume_pl varchar2(20) not null,
localitate varchar2(20) constraint ck_loc check (localitate in ('Bucuresti','Slobozia','Targoviste','Urziceni','Ploiesti')),
datai date default sysdate,
datasf date);
Crearea tabelei CONTRACTE:
create table contracte
(marca number(3) constraint pk_contracte primary key,
nr_cm number(6) not null,
data_inceput date not null,
data_sfarsit date,
id_funct number(3),
constraint fk_functii foreign key (id_funct) references functii(id_funct),
id_pl number(3),
constraint fk_puncte_lucru foreign key (id_pl) references puncte_lucru (id_pl));
Crearea tabelei ANGAJATI:
create table angajati
(marca number(3) constraint pk_angajati primary key,
nume varchar2(20) not null,
prenume varchar2(30) not null,
cnp number(13) not null,
serie_ci varchar2(2),
nr_ci number(6),
constraint fk_contracte_angajati foreign key (marca) references contracte(marca));
Crearea tabelei SALARII
create table salarii
(marca number(3) constraint pk_salarii primary key,
sal_baza number(6) not null,
norma number(1) not null,
ore_lucrate number(3) not null,
sal_brut number(5),
cas number(5),
somaj number(5),
sanatate number(5),
venit_net number(6),
impozit number(5),
sal_net number(6),
constraint fk_contracte_salarii foreign key (marca) references contracte(marca));
4. Exemple de comenzi LDD asupra tabelelor
• Să se adauge în tabela SALARII încă un atribut corespunzător zilelor de concediu.
alter table salarii add zile_co number(2);
• Să se modifice domeniul de valori al câmpului sal_brut din tabela SALARII astfel încât să poată avea valori cuprinse intre 0 şi 999999.
alter table salarii modify sal_brut number(6);
• Să se şteargă coloana zile_co anterior adăugată.
alter table salarii drop column zile_co;
• Să se redenumească tabela functii cu numele de meserii, apoi sa se steargă.
alter table functii rename to meserii;
drop table meserii cascade constraints;
Preview document
Conținut arhivă zip
- Baza de Date privind Activitatea de Salarizare dintr-o Societate.doc