Sunteți pe pagina 1din 23

ACADEMIA DE STUDII ECONOMICE BUCUREŞTI

FACULTATEA DE CIBERNETICĂ STATISTICĂ ȘI


INFORMATICĂ ECONOMICĂ

PROIECT BAZE DE DATE

Anul: II Cibernetica Economică

București, 2023

Page 1 of 23
Cerință proiect:

 schema bazei de date proiectată;


 crearea tabelelor;
 exemple de actualizare;
 exemple de interogare;
 exemple cu subcereri;
 exemple de parcurgerea structurilor ierahice;
 exemple de gestiunea tabelelor derivate, indecsilor.

 DESCRIEREA BAZEI DE DATE

Baza de date proiectată are ca scop principal de a ţine evidenţa personalului unei instituţii în

ceea ce privește locația (clădire, cameră, etaj) în care își desfășoară activitatea, funcția pe care o

deține, atribuțiile conform fișei postului, cererile de concediu, rapoartele de activitate.

Tema aleasă are ca scop organizarea, evidența personalului unei instituții.

Această bază de date conține informații despre personalul angajat ( id, nume, cod

oraganizatoric, tip, sex, etaj, cameră, e-mail, marcă), structură organizatorică, postul

ocupat( denumire post), personal funcții ( nume, post, serviciu, clasă, grad profesional,

gradație, ), cereri de concediu ( număr de înregistrare, număr de zile de concediu, data de

început și dată de sfârșit, responsabil), rapoarte

Page 2 of 23
 SCHEMA BAZEI DE DATE

Page 3 of 23
 CREAREA TABELELOR

 Tabela LOCATIE
create table LOCATIE
(
ID_LOCATIE NUMBER not null,
DENUMIRE VARCHAR2(100),
ID_CLADIRE NUMBER,
ID_ETAJ NUMBER,
ID_CAMERA NUMBER
)
tablespace APEX
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 4M
minextents 1
maxextents unlimited
);

 Tabela CLADIRE
create table CLADIRE
(
ID_CLADIRE NUMBER not null,
DENUMIRE VARCHAR2(100)
)
tablespace APEX
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 4M
minextents 1
maxextents unlimited
);

 Tabela CAMERA
create table CAMERA
(
ID_CAMERA NUMBER not null,
DENUMIRE VARCHAR2(100)
)
Page 4 of 23
tablespace APEX
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 4M
minextents 1
maxextents unlimited
);

 Tabela ETAJ
create table ETAJ
(
ID_ETAJ NUMBER not null,
DENUMIRE VARCHAR2(100)
)
tablespace APEX
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 4M
minextents 1
maxextents unlimited
);

alter table ETAJ


add constraint PK_ETAJ primary key (ID_ETAJ)
using index
tablespace APEX
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 4M
next 4M
minextents 1
maxextents unlimited
);

Page 5 of 23
 Tabela PERSONAL
create table PERSONAL
(
ID_PERSONAL NUMBER(4) not null,
NUME VARCHAR2(50),
ORD VARCHAR2(10),
COD_SITE VARCHAR2(20) not null,
TIP VARCHAR2(1),
SEX VARCHAR2(1),
ETAJ NUMBER,
CAMERA NUMBER,
TELEFON VARCHAR2(15),
EMAIL VARCHAR2(50),
MARCA NUMBER
)
tablespace APEX
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 4M
minextents 1
maxextents unlimited
);
alter table PERSONAL
add constraint ID_PERSONAL_PK primary key (ID_PERSONAL)
using index
tablespace APEX
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 4M
next 4M
minextents 1
maxextents unlimited
);
alter table PERSONAL
add constraint PERSONAL_STRUCT_ORG_FK foreign key (COD_SITE)
references STRUCT_ORG (COD_SITE);

Page 6 of 23
 Tabela POST
create table POST
(
ID_POST NUMBER not null,
DENUMIRE_POST VARCHAR2(100)
)
tablespace APEX
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 4M
minextents 1
maxextents unlimited
);

alter table POST


add constraint PK_POST primary key (ID_POST)
using index
tablespace APEX
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 4M
next 4M
minextents 1
maxextents unlimited
);

 Tabela PERSONAL_FUNCTII
create table PERSONAL_FUNCTII
(
ID_PER_FUN NUMBER not null,
NUME NUMBER,
POST NUMBER,
SERVICIU VARCHAR2(300),
CLASA VARCHAR2(3),
GR_PROFESIONAL VARCHAR2(15),
GRADATIA NUMBER,
NR_ZILE_CONCEDIU NUMBER,
ORD NUMBER,
TIP VARCHAR2(2)
)
tablespace APEX
pctfree 10

Page 7 of 23
initrans 1
maxtrans 255
storage
(
initial 64K
next 4M
minextents 1
maxextents unlimited
);

alter table PERSONAL_FUNCTII


add constraint PK_PER_FUN primary key (ID_PER_FUN)
using index
tablespace APEX
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 4M
next 4M
minextents 1
maxextents unlimited
);
alter table PERSONAL_FUNCTII
add constraint NUME_PER_FUN_FK foreign key (NUME)
references PERSONAL (ID_PERSONAL);
alter table PERSONAL_FUNCTII
add constraint POST_PER_FUN_FK foreign key (POST)
references POST (ID_POST);

tablespace APEX
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 4M
minextents 1
maxextents unlimited
);

 Tabela STRUCT_ORG
create table STRUCT_ORG
(
COD_SITE VARCHAR2(25) not null,
NIVEL NUMBER(2) not null,
SUP VARCHAR2(10),
ORD NUMBER(6),

Page 8 of 23
NUME VARCHAR2(100) not null,
NUME_SUP VARCHAR2(200)
)
tablespace APEX
pctfree 0
initrans 1
maxtrans 255
storage
(
initial 64K
next 4M
minextents 1
maxextents unlimited
);

alter table STRUCT_ORG


add constraint COD_SITE_PK primary key (COD_SITE)
using index
tablespace APEX
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 4M
next 4M
minextents 1
maxextents unlimited
);

 Tabela CO
create table CO
(
ID_CO NUMBER not null,
NR_ZILE NUMBER,
DATA_INCEPUT DATE,
DATA_SFARSIT DATE,
PRELUAT_DE NUMBER,
NUME_PERSOANA NUMBER,
DATA_CO DATE,
NR_INREG NUMBER
)
tablespace APEX
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
Page 9 of 23
next 4M
minextents 1
maxextents unlimited
);

alter table CO
add constraint PK_CO primary key (ID_CO)
using index
tablespace APEX
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 4M
next 4M
minextents 1
maxextents unlimited
);
alter table CO
add constraint NUME_PERSOANA_FK foreign key (NUME_PERSOANA)
references PERSONAL (ID_PERSONAL);
alter table CO
add constraint PRELUAT_FK foreign key (PRELUAT_DE)
references PERSONAL (ID_PERSONAL);

 Adăugarea unei noi coloane post în tabela PERSONAL:


ALTER TABLE personal add post varchar2(20);

 Adăugarea unei noi coloane id_post în tabela PERSONAL:


ALTER TABLE personal add id_post number(2);

Page 10 of 23
 Modificarea coloanei id_post în tabela PERSONAL:
ALTER TABLE personal modify id_post number(1);

 Ştergerea coloanei post din tabela PERSONAL:

 Ştergerea coloanei id_ post din tabela PERSONAL:

 ACTUALIZAREA STRUCTURII TABELELOR ȘI MODIFICAREA


RESTRICȚIILOR DE INTEGRITATE

ACTUALIZAREA TABELELOR - COMENZI LMD


(Data Manipulation Language – Limbaj de Manipulare a Datelor)

Comanda Scop
INSERT Adauga o noua inregistrare in tabela
UPDATE Modifica valorile unor inregistrari din tabele
DELETE Sterge inregistrari din tabele
MERGE Actualizeaza o tabela in functie de anumite conditii
SELECT Regaseste inregistrari in tabele sau vederi (view).

Page 11 of 23
 Adăugare înregistrare în tabela PERSONAL:
INSERT INTO personal(id_personal,nume,ord,cod_site,etaj,camera,telefon,marca) VALUES
(6,'Costoiu','EUBAM','DGV',4,80,318,6900);
SELECT * FROM personal;

INSERT INTO personal(id_personal,nume,cod_site,etaj,camera,telefon,marca) VALUES


(7,'COSTOIU_ID','DGV',4,81,328,6901);
SELECT * FROM personal;

 Actualizarea numelui al cărui ID=6 în tabela PERSONAL:


UPDATE personal
SET nume='Costoiu Andreea'
WHERE id_personal=6;
SELECT * FROM personal;

Page 12 of 23
SELECT * FROM co;

 Actualizarea codului persoanei responsabile cu înregistrarea cererile de concediu cu


data egală sau mai mare decât data de 29.01.2016 în tabela CO:

UPDATE co set preluat_de=241 WHERE


data_inceput<=TO_DATE('29.01.2016','DD.MM.YYYY');
SELECT * FROM co;

Page 13 of 23
 Ștergerea numelui al cărui ID are valoarea 6 în tabela PERSONAL. Să se anukeze
tranzacția:

DELETE FROM personal


WHERE id_personal IN (6);
SELECT * FROM personal;
ROLLBACK;
SELECT * FROM personal;

 Ștergerea numelui care are marca egală cu 6900 în tabela PERSONAL:


DELETE FROM personal
WHERE marca=6900;
SELECT * FROM personal;

 INTEROGAREA TABELELOR

 Selectarea numelor care au inclusă litera “B” în numele lor din tabela PERSONAL:

SELECT * FROM personal


WHERE upper(nume) LIKE '%B%';

 Selectarea personalului de la etajul 1 în ordinea id-ului din tabela PERSONAL:


SELECT * FROM personal
WHERE etaj = 1
ORDER BY id_personal;

Page 14 of 23
 Selectare minim data început și maxim data sfârșit din tabela CO:
SELECT MIN(data_inceput), MAX(data_sfarsit) FROM co;

 Afişare numărului total de coduri din tabela PERSONAL:


SELECT COUNT (cod_site) FROM personal;

Page 15 of 23
 Afişare numărului distinct de coduri din tabela PERSONAL:

SELECT COUNT (DISTINCT cod_site) FROM personal;

 Afişarea id-ului, numelui, sexului, camerei si etajului a personalului care nu lucrează la


etajele 1 şi 2 din tabela PERSONAL:

SELECT id_personal,nume,sex, camera, etaj


FROM personal
WHERE etaj NOT BETWEEN 1 AND 2;

 Afişarea structurilor organizatorice( nume și cod) descrescător după nivel din tabela
STRUCT_ORG:
SELECT nume, cod_site
FROM struct_org
ORDER BY nivel DESC ;

Page 16 of 23
 Afişarea cererilor de concediu începute în lunile ianuarie și februarie din tabela CO:

SELECT id_co, data_inceput


FROM co
WHERE EXTRACT(MONTH FROM data_inceput) IN (1,2);

 Afişarea personalului care lucrează pe un etaj superior etajului unde se află camera
numărul 55 din tabela PERSONAL:
SELECT nume, camera,etaj
FROM personal
WHERE etaj>ANY
(SELECT etaj FROM personal where camera=55);

 Înregistrările comune din tabelele LOCATIE şi CLADIRE:

Page 17 of 23
SELECT id_locatie, l.denumire,c.denumire FROM locatie l
INNER JOIN cladire c on l.id_cladire=c.id_cladire;

 Înregistrările care se regăsesc în tabela LOCATIE şi cele care se intersectează cu tabela


CLADIRE:
SELECT id_locatie, l.denumire,c.denumire FROM locatie l
LEFT OUTER JOIN cladire c on l.id_cladire=c.id_cladire;

 Înregistrările care se regăsesc în tabela CLADIRE şi cele care se intersectează cu tabela


LOCATIE:
SELECT id_locatie, l.denumire,c.denumire FROM locatie l
RIGHT OUTER JOIN cladire c on l.id_cladire=c.id_cladire;

 Toate înregistrările din tabelele LOCATIE și CLADIRE:


SELECT id_locatie, l.denumire,c.denumire FROM locatie l
FULL OUTER JOIN cladire c on l.id_cladire=c.id_cladire;

Page 18 of 23
 INTEROGĂRI IERARHICE

SELECT DISTINCT id_locatie,denumire, id_cladire,


LEVEL FROM locatie
CONNECT BY PRIOR id_locatie=id_cladire
START WITH id_cladire= 2;

SELECT id_locatie,denumire, id_cladire,


LEVEL FROM locatie
CONNECT BY PRIOR id_locatie=id_cladire
START WITH id_cladire=5;

SELECT LEVEL, LPAD(' ', LEVEL)|| denumire FROM locatie


CONNECT BY PRIOR id_locatie=id_cladire
START WITH id_cladire=5
ORDER BY LEVEL;

Page 19 of 23
 GESTIUNEA TABELELOR, VEDERI, SINONIME, INDECŞI, SECVENŢE

CREATE OR REPLACE VIEW v_locatie


AS SELECT * FROM locatie
WHERE id_cladire=3;

CREATE OR REPLACE VIEW v_locatie


AS SELECT * FROM locatie
WHERE id_cladire=3;
SELECT * FROM v_locatie;
UPDATE v_locatie
SET id_cladire = 1;

DROP VIEW v_locatie;

create sequence PERSONAL_SEQ


minvalue 1
maxvalue 9999999999999999999999999999
start with 881
increment by 1
cache 20;

Page 20 of 23
create sequence LOCATIE_SEQ
minvalue 1
maxvalue 9999999999999999999999999999
start with 321
increment by 1
cache 20;

create sequence RAPORT_SEQ


minvalue 1
maxvalue 9999999999999999999999999999
start with 23
increment by 1
nocache;

SELECT * FROM locatie WHERE denumire = 'Sala server DTICSV';


CREATE INDEX idx_locatie ON locatie(denumire);

CREATE INDEX MARCA


Page 21 of 23
ON PERSONAL (MARCA);

CREATE SYNONYM loc FOR locatie;

DROP SYNONYM loc;

create table SYS.TSQ$


(
TS# NUMBER not null,
USER# NUMBER not null,
GRANTOR# NUMBER not null,
BLOCKS NUMBER not null,
MAXBLOCKS NUMBER,
PRIV1 NUMBER not null,
PRIV2 NUMBER not null,
PRIV3 NUMBER not null
)
cluster C_USER# ();

create table SYS.USER$


(
USER# NUMBER not null,
NAME VARCHAR2(128) not null,
TYPE# NUMBER not null,
PASSWORD VARCHAR2(4000),
DATATS# NUMBER not null,
TEMPTS# NUMBER not null,
CTIME DATE not null,
PTIME DATE,
EXPTIME DATE,
LTIME DATE,
RESOURCE$ NUMBER not null,
AUDIT$ VARCHAR2(38),
DEFROLE NUMBER not null,
DEFGRP# NUMBER,
DEFGRP_SEQ# NUMBER,
ASTATUS NUMBER default 0 not null,
LCOUNT NUMBER default 0 not null,
DEFSCHCLASS VARCHAR2(128),
EXT_USERNAME VARCHAR2(4000),
SPARE1 NUMBER,

Page 22 of 23
SPARE2 NUMBER,
SPARE3 NUMBER,
SPARE4 VARCHAR2(1000),
SPARE5 VARCHAR2(1000),
SPARE6 DATE,
SPARE7 VARCHAR2(4000),
SPARE8 VARCHAR2(4000),
SPARE9 NUMBER,
SPARE10 NUMBER,
SPARE11 TIMESTAMP(6)
)
cluster C_USER# ();

Page 23 of 23

S-ar putea să vă placă și