Sunteți pe pagina 1din 14

PROIECTAREA BAZELOR DE DATE

Sa se proiecteze o baza de date pentru un aeroport international GNU Airlines, care face transport de pasageri in diferite tari,ofera confort ,facilitati si discount in cele mai multe din cazuri

Cerintele clientului sunt:

sa se retina toate avioanele pe care compania le are in posesie sa se retina toti angajatii companiei cu rangurile pilot , copilot sa se retina toate zborurile (numai plecare si destinatie , ora

plecare si ora sosire) sa se retina biletele care au fost taiate , pentru ce cursa si ce persoana sa se retina biletele care au fost cumparate online sau cash

Regulile structurale sunt determinate de entitatile: angajat, zbor,bilet, avion,program,servicii si legaturile dintre acestea.
ANGAJAT_ZBOR

ANGAJAT
# id *nume *prenume *CNP *adresa *nr_telefon *functie *salariu O id_manager

#id *pilot *stuardeza

PROGRAM *data *ora_i *ora_s

SERVICII #id_a *cnp

BILET #id *pret *clasa *loc *prezenta

ZBOR # nr_zbor o oras_sosire o oras_plecare o ora_sosire *durata *data_plecare *data_sosire o escala o durata_escala *poarta *pista AVION #id *model *locuri *firma

ERD-Diagrama entitate-relatie
ERD-ul este modelul conceptual al bazei de date. In ERD exista 3 tipuri de relatie: *1:1 *1:m *m:m Relatiile in ERD pot fi mandatorii sau obligatorii. Caracteristicile unei relatii sunt optionalitatea si cardinalitatea. 1.Optionalitate-desemneaza daca fiecarei relatii din tabela A ii corespund sau nu instante din tabela B 2.Cardinalitatea unei relatii de la entitatea A catre entitatea B. Intervin 3 situatii: - cardinalitate 1:1 - cardinalitate 1:m - cardinalitate m:m

ZBOR
# nr_zbor o oras_sosire o oras_plecare o ora_plecare *durata *data_plecare *data_sosire o escala o durata_escala *poarta *pista
are

ANGAJAT
# id *nume *prenume *CNP *adresa *nr_telefon *functie *salariu O id_manager

Pentru inceput se obtin entitatile si relatiile urmatoare :

m:m 1:m

1:m

are

SERVICII #id_a *cnp

BILET #id *pret *loc *clasa

AVION
#id *model *locuri *firma

ANGAJAT
# id *nume presteaza *prenume *CNP *adresa este *nr_telefon prestat *functie m:m *salariu O id_manager

SERVICII
#id_a *cnp

respectat de

PROGRAM
*data *ora_i *ora_s

ANGAJAT
# id *nume *prenume *CNP *adresa *nr_telefon *functie *salariu O id_manager

1:m

are

1:m
urmeaza

are

SERVICII #id_a *cnp

Rezolvarea relatiei m:m

ANGAJAT # id *nume *prenume *CNP *adresa *nr_telefon *functie *salariu O id_manager

ANGAJAT # id *nume *prenume *CNP *adresa *nr_telefon *functie *salariu O id_manager

ondus de

conduce

Avand in vedere faptul ca fiecare angajat poate fi condus de un alt angajat sau fiecare angajat poate conduce un alt angajat se poate realiza o relatie recursiva de la angajat catre angajat ca in figura de mai sus.

Istoricul zborurilor se realizeaza prin modelarea timpului


ZBOR
# nr_zbor o oras_sosire o oras_plecare o ora_sosire o ora_plecare *durata *data_plecare *data_sosire o escala o durata_escala *poarta *pista

ISTORIC_ZBOR ZBOR
# nr_zbor o oras_sosire o oras_plecare *poarta *pista
are

este asociat

# zbor o ora_sosire o ora_plecare *durata *data_plecare *data_sosire o escala o durata_escala

ZBOR
# nr_zbor o oras_sosire o oras_plecare *poarta *pista are

ISTORIC_ZBOR
# zbor o ora_sosire o ora_plecare *durata *data_plecare *data_sosire o escala o durata_escala

Se obtine diagrama entitate-relatie alaturata


ANGAJAT
# id *nume *prenume *CNP *adresa *nr_telefon *functie *salariu O id_manager 1:m are

apartine

PROGRAM
*data *ora_i *ora_s
are

are

1:m

are

1:m

este respectat

condus de

1:m
urmeaza

SERVICII
are realizeaza

conduce

BILET #id *pret *loc *clasa


este platit este platit

AVION
#id *model *locuri *firma

#id_a *cnp

ONLINE *site

CASH *ag_tur

BILET #id *pret *loc *clasa

este platit

ONLINE *site

CASH *ag_tur

Se observa ca peste cele 2 relatii care pornesc din entitatea BILET s-a trasat un cerc. Acesta desemneaza faptul ca un bilet fie este platit ONLINE, fie este platit CASH.

- fiecare atribut memoreaza o valoare singulara deci cele doua entitati se gasesc in FN1 - entitatea ANGAJAT contine un UID simplu, fiind in FN1 este implicit si in FN2 - entitatea ISTORIC_ZBOR contine un UID compus: (zbor,nr_zbor) determinat de o relatie barata. Atributele ora sosire,ora plecare,durata,etc depind de intreg UID, deci este in FN2 - entitatea ISTORIC_ZBOR contine atributul non UID data_sfarsit. Acesta depinde doar de UID si nu de atributul nonUID pret. Acelasi lucru e valabil si pentru atributul nonUID pret care depinde doar de UID, prin urmare entitatea este si in FN3 -pentru entitatea ISTORIC atributele nonUID: denumire_produs, unitate_de_masura, stoc depind de UID (nu depind de atribute nonUID) deci entitatea se gaseste in FN3 ISTORIC_ZBOR ZBOR
# nr_zbor o oras_sosire o oras_plecare *poarta *pista 1:m
are

este

asociat

# zbor o ora_sosire o ora_plecare *durata *data_plecare *data_sosire o escala o durata_escala

Se vor realiza proceduri pentru: - determinarea valorii numarului de bilete vandute - afisarea orarului de lucru al angajatilor (casieri/computere, piloti/avioane etc.)

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