Вы находитесь на странице: 1из 10

UNIVERSITATEA DIN CRAIOVA, FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA

PROIECT
BAZE DE DATE
ORACLE

PROFESOR: STOICA SPAHIU COSMIN STUDENT: IVASCU SORIN GRUPA: 10306 A

ENUNT:

S se creeze o baz de date care s in evidena unei firme care nchiriaz maini. Firma are pe stoc un numr de maini ce au un numr de nmatriculare, nr. de km parcuri, data fabricaiei, o marc, tip i pre pe or. Fiecare marc are nume i detalii. Fiecare tip are nume i detalii. Fiecare main se afl ntr-o clas (compact, limuzin etc.). Fiecare clas are nume i descriere. Exist o list de clieni care au nume prenume, email, telefon, adres. Se pstrez o istorie a nchirierilor (ce client a nchiriat ce main, de cnd i pn cnd). Pentru fiecare main se va pstra statusul su actual (nchiriat, nenchiriat).

OBIECTIVUL:
Implementarea unei baze de date in ORACLE

CERINTE:

1. S se realizeze modelul entitate-legtur 2. S se fac trecerea la modelul relaional (s se detalieze operaiile effectuate pentru fiecare entitate n parte) 3. S se creeze o baz de date care s conin: a. Legturi ntre tabele; b. Integritatea referenial pentru a efectua corect operaiile de actualizare (adugare, tergere, modificare); c. Chei primare i chei externe; d. Reguli de tergere i modificare n cascad pentru entitile cu chei externe. 4. S se verifice calitatea proiectrii bazei de date cu ajutorul formelor normale (se va normaliza baza de date pn la FNBC - inclusiv). 5. S se indexeze baza de date creat (crearea minim a unui index). 6. S se fac testarea bazei de date prin efectuarea de diferite operaii asupra ei. Trebuie s existe cel puin o interogare din fiecare tip (n total minim 15 interogri), 2 funcii diferite (care s nu fac un simplu select), 2 proceduri stocate, i 1 trigger.

Pentru realizarea proiectului s-au creat 10 tabele: PERSOANA MASINA INCHIRIERI MANAGEMENT COMPANIE MARCA TIP CLASA STATUS ADRESA

Fiecare dintre aceste tabele contine informatiile cerute (cerinte proiect) si campuri suplimentare adaugate pentru a se realiza legaturile dintre tabele.

Tabelul PERSOANA: ID nume prenume email telefon NUMBER varchar varchar varchar varchar

Campul ID este cheia primara a tabelului, reprezentand un numarul unic asociat fiecarei persoane din baza de date. In campul nume se retine numele persoanei (ex: Popescu). In campul prenume se retine prenumle persoanei (ex: Mihai). In campul email se retine adresa de email a persoanei (ex: mihai@email.com) In campul telefon se va retine un numar de telefon al persoanei.

Tabelul MASINA: NR_INMATRICULARE id_tip id_marca id_clasa nr_km data_fabr id_comp pret_ora

varchar number number number number date number number

Cheaia primara a acestui tabel este nr_inmatriculare, camp ce reprezinta numarul de inmatriculare al unei masini (numar ce este unic). id_tip este o cheie exterioara ce indica catre o cheie primara a tabelul TIP, reprezentand tipul masinii (ex: Logan). id_marca este o cheie exterioara ce indica catre o cheie primara a tabelul MARCA, reprezentand marca masinii (ex: Dacia). id_clasa este o cheie exterioara ce indica catre o cheie primara a tabelul CLASA, reprezentand clasa masinii (ex: limuzina). id_comp este o cheie exterioara ce indica catre o cheie primara a tabelul COMPANIE, reprezentand compania de care apartine masina (ex: Company1). Campul nr_km specifica numarul de km ai unei masini. Campul data_fabr specifica data de fabricatie a unei masini (ex: 12-05-2002); Capul pret_ora specifica pretul practicat de companie pe ora de inchiriere a masinii respective.

Tabelul COMPANIE: ID_COMPANIE nume profil number varchar(50) varchar(50)


4

ID_COMPANIE este cheia primara a acestui tabel. Acest numar reprezinta codul unci al fiecarei companii. Campul nume reprezinta numele companiei. Campul profil indica profilul companiei (ex: auto). Tabelul ADRESA: ADDRESS_ID country city street no

number varchar(20) varchar varchar number

ADDRESS_ID este cheia primara a acestui tabel, reprezentand un cod unic prin care este identificata fiecare adresa din tabel. Campul country reprezinta tara. Campul city reprezinta orasul. Campul street reprezinta strada. Campul no reprezinta numarul strazii.

Tabelul CLASA: ID nume descriere

numbers varchar(20) varchar(200)

ID este cheia primara a acestui tabel, reprezentand un numar unic prin care este identificata fiecare clasa. Campul nume indica numele clasei (ex: limuzina). Campul descriere contine o descriere a unei clase.

Tabelul MARCA: ID nume detalii number varchar(40) varchar(100)

ID este cheia primara a acestui tabel, reprezentand un numar unic prin care este identificata fiecare marca.
5

Campul nume indica numele marcii de autoturisme (ex: OPEL). Campul detalii contine cateva detalii despre marca respectiva. Tabelul TIP: ID nume detalii

number varchar(20) varchar(100)

ID este cheia primara a acestui tabel, reprezentand un numar unic prin care este identificata fiecare tip de masina. Campul nume indica numele autoturismului (ex: Logan). Campul detalii contine cateva detalii despre tipul respectiv.

Tabelul STATUS: nr_inmatr status

number varchar(40)

nr_inmatr este cheia primara a acestui tabel. Se face referinta la tabelul de masini. Campul status ofera detalii despre statusul unei masini (ex: inchiriata).

Tabelul EVIDENTA_ADRESA: address_id person_id


number number

address_id face legatura cu tabelul address. person_id face legatura cu tabelul persoana. Ambele chei alcatuiesc cheia primara a tabelului.

Tabelul INCHIRIERI: ID_CLIENT NR_INMATRICULARE data_inceput data_sfarsit number varchar(80) date date

Campul ID_CLIENT reprezinta o cheie externa ce face legatura cu tabelul Persoana. Face parte din cheia primara a acestui tabel. Campul nr_inmatriculare reprezinta o cheie externa ce face legatura cu tabelul masina. Face parte din cheia primara a acestui tabel. Campurile data_inceput si data_sfarsit contin data de inceput a inchirierii, respectiv data la care masina va fi predata (sfarsitul perioadei de inchiriere).

Tabelul MANAGEMENT: COMP_ID PERSON_ID number number

comp_id reprezinta o cheie externa care face legatura cu tabelul companie. person_id reprezinta o cheie externa ce face legatura cu tabelul persoana. Ambele campuri alcatuiesc cheia primara.

Tabelele prezentate anterior au fost legate conform schemei de mai jos:


descrier e

Pret_ora Data_fa br MASINA

Nr_inmatriculare

aparti ne

CLASA

ID

detalii

Nr_km
est e

MARCA

ID

detali i

inchiria za

est e

TIP
ID

NUME

PRENU ME TELEF ON

ID

NUME

EMAIL PERSOANA

condu ce

COMPANIE

PROFIL ID
ar e

ID TARA ADRESA ORAS NR STRAD A

PERSOANA PK ID NUME PRENUME EMAIL TELEFON PK COMPANIE ID_COMPANIE NUME PROFIL

MANAGEMENT ADRESA PK ADDRESS_ID COUNTRY CITY STREET NO PK MARCA ID NUME DETALII PK,FK2 PK,FK1 COMP_ID CLIENT_ID PK

CLASA ID NUME DESCRIERE PK

TIP ID NUME DETALII

EVIDENTA_ADRESA PK,FK1 PK,FK2 ADDRESS_ID PERSON_ID PK FK1 FK2

MASINA NR_INMATRICULARE ID_TIP ID_MARCA NR_KM DATA_FABR ID_COMP PRET_ORA ID_CLASA

FK3 FK4

INCHIRIERI PK,FK1 PK,FK2 ID_CLIENT NR_INMATRICULARE DATA_INCEPUT DATA_SFARSIT PK,FK1

STATUS NR_INMATR STATUS_MASINA

Legaturile sunt:
Intre persoana si adresa exista o legatura mai multi la mai mai multi.

O persoana poate avea mai multe adrese si mai multe persoane pot avea aceeasi adresa. Aceasta legatura este reprezentata in modelul relational prin tabelul evidenta_adresa. Intre masina si model exista o legatura una la una. Fiecare masina este reprezentata de un singur model. Acelasi tip de legatura exsita si intre masina si tip si intre masina si clasa. Intre companie si persoana exista o legatura mai multi la mai multi. O persona poate fi director la mai multe firme si o firma poate avea mai multi directori. Aceasta legatura este reprezentata in modelul relational prin tabelul management. Intre masina si persoana exista o legatura mai multi la mai multi. Fiecare masina poate fi inchiriata de mai multe persoane si o persoana poate inchiria mai multe masini. Aceasta legatura este reprezentata in modelul relational de tabelul inchirieri.

Modelul relational: PERSOANA(ID, nume, prenume, mail, telefon) MASINA(nr_inmatriculare, id_tip, id_marca, nr_km, data_fabr, id_comp, pret_ora, id_clasa) ADDRESS(address_id, country, city, street, no) MANAGEMENT(comp_id, person_id) INCHIRIERI(id_client, nr_inmatriculare, data_inceput, data_sfarsit) STATUS(nr_inmatr, status) MARCA(id, nume, detalii) TIP(id, nume, detalii) CLASA(id, nume, descriere) COMPANIE(id_companie, nume, profil) EVIDENTA_ADRESA(address_id, person_id)

Normalizarea relatiilor Tabelele prezentate mai sus sunt deja normalizate si nu mai prezinta anomalii deoarece: - relatiile respecta FN1 deoarece toate atributele au valori atomice(nu exitsta atribute compuse sau multivaloare); - relatiiile respecta FN2 deoarece contin un singur atribut ca si cheie primara si deci nu au cum sa existe dependente functionale partiale; - relatiile respecta FN3 deoarece nu exista dependente functionale tranzitive;

10

Вам также может понравиться