SPECIFICAREA PROBLEMEI
Aplicatia prezinta gestionarea informatiilor referitoare la o familie formata din mai multi frati care detine o colectie impresionanta de DVD-uri cu filme. Acestia s-au hotarat sa le imprumute intre ei sau persoanelor apropiate, cum ar fi:prieteni, cunostinte, rude.
Avem nevoie de o baza de date pentru a tine evidenta DVD-urilor pe care le detin, precum si a persoanelor care le-au imprumutat s-au care le vor imprumuta.
Un DVD se incadreaza intr-un anumit GEN care contine:
id_gen
categoria
DVD-ul se identifica prin:
id_dvd
regizor
titlul
an_aparitie
PERSOANA va fi identificata prin urmatoarele caracteristici:
id_persoana
nume
prenume
adresa
telefon
O persoana poate sa fie proprietarul mai multor DVD-uri si in acelasi timp sa imprumute DVD-uri de la alti proprietari. Fiecare proprietar are DVD-uri diferite fata de ceilalti proprietari si nu exista dubluri. De asemenea persoana poate fi doar client, adica doar sa imprumute DVD-uri nu sa le si detina. O persoana poate imprumuta DVD-uri de genuri diferite si un DVD poate fi imprumutat de mai multe persoane in timp.Un DVD poate apartine unui singur gen.Un DVD are acelasi titlu ca si titlul filmului.Un film intra pe un DVD.
Se cere:
sa se afiseze, regizorul, titlul, categoria din care face parte DVD;
sa se afiseze DVD-urile care apartin fiecarui proprietar, ordonate dupa titlu;
sa se afiseze care sunt persoanele care au imprumutat DVD-ul cu un anumit titlu si la ce data;
sa se afiseze pentru fiecare proprietar titlul filmului ce a fost imprumutat de cele mai putin si multe ori;
sa se afiseze id_dvd, titlul filmului, anul aparitiei, cu conditia ca anul de aparitie sa fie cuprins intre 1980 - 2003, ordonat dupa anul aparitiei;
sa se afiseze cate filme sunt in colectie regizate de: Steven Spielberg;
ANALIZA PROBLEMEI
2.1. MODELUL ENTITATE - ASOCIERE
Pentru a realiza baza de date astfel incat sa satisfaca cerintele familiei, vom avea 3 clase de entitati si 3 clase de asociere.
Cele 3 clase de entitati vor fi urmatoarele:
GEN cu 2 atribute:
id_gen care va fi cheie primara (PK) pentru entitatea GEN;
categoria care va fi numele genului;
PERSOANA cu 5 atribute:
id_persoana care va fi cheie primara (PK) pentru entitatea PERSOANA;
nume - numele persoanei;
prenume - prenumele persoanei;
adresa - adresa domiciliului persoanei;
telefon - reprezinta telefonul persoanei;
DVD cu 4 atribute:
id_dvd care va fi cheie primara (PK) pentru entitatea DVD;
regizor care va fi regizorul filmului de pe DVD;
titlul care va fi titlul filmului;
an_aparitie care va reprezenta anul de aparitie al filmului;
Cele 3 clase de asociere vor fi urmatoarele:
INCADRARE - intre GEN si DVD. Clasa de asociere incadrare nu are atribute proprii;
IMPRUMUTARE - intre DVD si PERSOANA. Clasa de asociere imprumutare are ca atribut: data( =data imprumutarii DVD-ului);
PROPRIETATE - intre DVD si PERSOANA. Clasa de asociere proprietate nu are atribute proprii;
2.2. STABILIREA CARDINALITATILOR
1. In cazul asocierii INCADRARE:
- Un gen poate sa contina mai multe DVD-uri => card.max = n.
- Un gen trebuie sa contina 0 DVD-uri => card.min = 0.
- Un DVD poate sa apartina unui singur gen => card.max = 1.
- Un DVD trebuie sa apartina unui gen => card.min = 1.
2. In cazul asocierii IMPRUMUTARE:
- Un DVD poate fi imprumutat la mai multe persoane => card.max = n.
- Un DVD trebuie imprumutat la 0 persoane => card.min = 0.
- O persoana poate sa imprumute mai multe DVD-uri => card.max = n.
- O persoana trebuie sa imprumute 0 DVD-uri => card.min = 0.
3. In cazul asocierii PROPRIETATE:
- Un DVD poate sa apartina la o singura persoana => card.max = 1.
- Un DVD trebuie sa apartina unei persoane => card.min = 1.
- O persoana poate sa detina mai multe DVD-uri => card.max = n.
- O persoana trebuie sa detina 0 DVD-uri => card.min = 0.
2.3. MODELUL RELATIONAL
Pentru fiecare clasa de entitati se construieste cate o tabela cu acelasi nume cu al clasei de entitati si aceeasi cheie primara. Deci se vor construi pentru inceput tabelele: GEN, DVD, PERSOANA cu atributele mentionate mai sus.
GEN - DVD:
Intre aceste 2 tabele clasa de asociere este INCADRARE si nu are atribute proprii.
De aici rezulta ca ne aflam in situatia A( = clasa de asociere nu are atribute proprii), cazul 2( = cel putin o entitate are cardinalitatea maxima 1).In acest caz nu se creeaza o tabela noua pentru relatia de asociere, dar migreaza in entitatea cu cardinalitate maxima 1 toate cheile primare (PK) din celelalte clase de entitati si acestea devin chei straine (FK). In cazul nostru clasa de entitati DVD are cardinalitatea maxima 1, deci primeste intre atributele sale, ca cheie straina, cheia primara id_gen din clasa de entitati GEN cu care se afla in relatie. Astfel vom avea tabelele:
GEN (id_gen (PK), categoria)
DVD (id_dvd (PK), regizor, titlul, an_aparitie, id_gen (FK))
DVD - PERSOANA:
Intre aceste 2 tabele exista 2 clase de asociere si anume:
a) IMPRUMUTARE
b) PROPRIETATE
a) Pentru clasa de asociere IMPRUMUTARE care are atributul propriu data ne aflam in situatia B( = clasa de asociere are atribute proprii), cazul 1( = toate entitatile intra in relatia de asociere cu cardinalitatea maxima n). In acest caz se creeaza o noua tabela care va avea acelasi nume cu cel al clasei de asociere, iar atributele tabelei vor fi cele initiale + cheile primare ale tuturor entitatilor implicate in relatia de asociere care vor deveni in aceasta noua tabela chei straine. Astfel vom avea tabelele:
DVD (id_dvd (PK), regizor, titlul, an_aparitie,)
PERSOANA (id_persoana (PK), nume, prenume, adresa, telefon)
IMPRUMUTARE (id_dvd (FK), id_persoana (FK), data)
b) Pentru clasa de asociere PROPRIETATE ne aflam in situatia A( = clasa de asociere nu are atribute proprii), cazul 2( = cel putin o entitate are cardinalitatea maxima 1). In acest caz clasa de entitati DVD are cardinalitatea maxima 1, deci primeste intre atributele sale ca cheie straina, cheia primara id_persoana din clasa de entitati PERSOANA cu care se afla in relatie. Astfel vom avea tabelele:
DVD (id_dvd (PK), regizor, titlul, an_aparitie, id_persoana (FK))
PERSOANA (id_persoana (PK), nume, prenume, adresa, telefon)
In final vom avea urmatoarele tabele ce reprezinta Modelul Relational:
GEN (id_gen (PK), categoria)
DVD (id_dvd (PK), regizor, titlul, an_aparitie, id_gen (FK), id_persoana (FK))
IMPRUMUTARE (id_dvd (FK), id_persoana (FK), data)
PERSOANA (id_persoana (PK), nume, prenume, adresa, telefon)
2.4. SPECIFICATII DE IMPLEMENTARE
Pentru realizarea bazei de date se vor crea urmatoarele 4 tabele:
Tabela GEN cu coloanele:
id_gen valoare numerica de cel mult 2 cifre, cu restrictia ca valoarea sa nu fie null;
categoria sir de caractere de cel mult 20 de cifre, cu restrictia ca valoarea sa nu fie null;
Se mai adauga restrictia de cheie primara pentru id_gen.
G E N
Nume |
id_gen |
categoria |
Tip cheie |
PK | |
Null |
Not Null |
Not Null |
Tip Data |
Number |
Varchar2 |
Lungime |
2 |
20 |
Tabela DVD cu coloanele:
id_dvd valoare numerica de cel mult 4 cifre, cu restrictia ca valoarea sa nu fie null;
regizor sir de caractere de cel mult 30 de caractere, cu restrictia ca valoarea sa nu fie null;
titlul sir de caractere de cel mult 40 de caractere, cu restrictia ca valoarea sa nu fie null;
an_aparitie valoare numerica de cel mult 4 cifre, cu restrictia ca valoarea sa nu fie null;
id_gen valoare numerica de cel mult 2 cifre, cu restrictia ca valoarea sa nu fie null;
id_persoana valoare numerica de cel mult 3 cifre, cu restrictia ca valoarea sa nu fie null;
Se adauga urmatoarele restrictii:
- cheia primara va fi id_dvd;
- cheie straina va fi id_gen care se refera la
id_gen din tabela GEN;
- cheie straina va fi id_persoana care se refera la
id_persoana din tabela PERSOANA;
D V D
Nume |
id_dvd |
regizor |
titlul |
an_aparitie |
id_gen |
id_persoana |
Tip cheie |
PK |
FK |
FK |
|||
Null |
Not Null |
Not Null |
Not Null |
Not Null |
Not Null |
|
Tip Data |
Number |
Varchar2 |
Varchar2 |
Number |
Number |
Number |
Lungime |
4 |
30 |
40 |
4 |
2 |
3 |
Tabela IMPRUMUTARE cu coloanele:
id_dvd valoare numerica de cel mult 4 cifre, cu restrictia ca valoarea sa nu fie null;
id_persoana valoare numerica de cel mult 3 cifre, cu restrictia ca valoarea sa nu fie null;
data de tip Date, cu restrictia ca valoarea sa nu fie null;
Se mai adauga restrictiile de cheie straina pentru id_dvd si id_persoana.
IMPRUMUTARE
Nume |
id_dvd |
id_persoana |
data |
Tip cheie |
FK |
FK | |
Null |
Not Null |
Not Null |
Not Null |
Tip Data |
Number |
Number |
Date |
Lungime |
4 |
3 |
Tabela PERSOANA cu coloanele:
id_persoana valoare numerica de cel mult 3 cifre, cu restrictia ca valoarea sa nu fie null;
nume sir de caractere de cel mult 15 caractere, cu restrictia ca valoarea sa nu fie null;
prenume sir de caractere de cel mult 15 caractere, cu restrictia ca valoarea sa nu fie null;
adresa sir de caractere de cel mult 60 de caractere,
telefon valoare numerica de cel mult 15 cifre;
Se adauga restrictia de cheie primara pentru id_persoana;
PERSOANA
Nume |
id_persoana |
nume |
prenume |
adresa |
telefon |
Tip cheie |
PK | ||||
Null |
Not Null |
Not Null |
Not Null | ||
Tip Data |
Number |
Varchar2 |
Varchar 2 |
Varchar 2 |
Number |
Lungime |
3 |
15 |
15 |
60 |
15 |
IMPLEMENTAREA PROBLEMEI
3.1. CREAREA TABELELOR
CREATE TABLE gen(
id_gen NUMBER(2) NOT NULL,
categoria VARCHAR2(20) NOT NULL,
CONSTRAINT gen_id_gen_pk PRIMARY KEY(id_gen));
CREATE TABLE persoana(
id_persoana NUMBER(3) NOT NULL,
nume VARCHAR2(15) NOT NULL,
prenume VARCHAR2(15) NOT NULL,
adresa VARCHAR2(40),
telefon NUMBER(15),
CONSTRAINT persoana_id_persoana_pk PRIMARY KEY(id_persoana));
CREATE TABLE dvd(
id_dvd NUMBER(4) NOT NULL,
regizor VARCHAR2(30) NOT NULL,
titlul VARCHAR2(40) NOT NULL,
an_aparitie NUMBER(4) NOT NULL,
id_gen NUMBER(2) NOT NULL,
id_persoana NUMBER(3) NOT NULL,
CONSTRAINT dvd_id_dvd_pk PRIMARY KEY(id_dvd),
CONSTRAINT dvd_id_gen_fk FOREIGN KEY(id_gen)
REFERENCES gen(id_gen),
CONSTRAINT dvd_id_persoana_fk FOREIGN KEY(id_persoana)
REFERENCES persoana(id_persoana));
CREATE TABLE imprumutare(
id_dvd NUMBER(4) NOT NULL,
id_persoana NUMBER(3) NOT NULL,
data DATE NOT NULL,
CONSTRAINT imprumutare_id_dvd_fk FOREIGN KEY(id_dvd)
REFERENCES dvd(id_dvd),
CONSTRAINT imprumutare_id_persoana_fk FOREIGN KEY(id_persoana)
REFERENCES persoana(id_persoana));
3.2. INSERAREA DATELOR IN TABELE
Inserarea datelor in tabela GEN:
INSERT INTO gen
VALUES (1,'SF');
INSERT INTO gen
VALUES (2,'ACTIUNE');
INSERT INTO gen
VALUES (3,'COMEDIE');
INSERT INTO gen
VALUES (4,'THRILLER');
INSERT INTO gen
VALUES (5,'DRAMA');
INSERT INTO gen
VALUES (6,'HORROR');
INSERT INTO gen
VALUES (7,'ANIMATIE');
INSERT INTO gen
VALUES (8,'AVENTURA');
INSERT INTO gen
VALUES (9,'FANTASTIC');
INSERT INTO gen
VALUES (10,'ROMANTIC');
Inserarea datelor in tabela PERSOANA:
INSERT INTO persoana
VALUES (1,'Ardelean','Cosmin','str.Predeal nr.13 loc.Tg.Mures',214576);
INSERT INTO persoana
VALUES (2,'Manea','Alexandru','str.Aleea Carpati nr.31 loc.Tg.Mures',217659);
INSERT INTO persoana
VALUES (3,'Bleoca','Silviu','str.Cornisa nr.7 loc.Tg.Mures',215872);
INSERT INTO persoana
VALUES (4,'Bleoca','Tiberiu','str.Cornisa nr.7 loc.Tg.Mures',215872);
INSERT INTO persoana
VALUES (5,'Bleoca','Sorana','str.Cornisa nr.7 loc.Tg.Mures',215872);
INSERT INTO persoana
VALUES (405,'Vancu','Diana','str.Sarguintei nr.25 loc.Tg.Mures',254091);
INSERT INTO persoana
VALUES (11,'Rusu','Serban','str.Stramba nr.12 loc.Brasov',NULL);
INSERT INTO persoana
VALUES (55,'Libeg','Claudiu','str.Stelelor nr.37 loc.Cluj-Napoca',340786);
INSERT INTO persoana
VALUES (120,'Coita','Mihai','str.Bordeni nr.56 loc.Ploiesti',NULL);
Inserarea datelor in tabela DVD:
INSERT INTO dvd
VALUES (1,'Steven Spielberg','Jurassic Park',1993,8,4);
INSERT INTO dvd
VALUES (2,'Peter Jackson','The Lord Of The Rings',2003,9,3);
INSERT INTO dvd
VALUES (3,'Walt Becker','Van Wilder',2002,2,5);
INSERT INTO dvd
VALUES (4,'Clint Eastwood','Absolute Power',1997,4,3);
INSERT INTO dvd
VALUES (5,'Woody Allen','Annie Hall',1977,3,5);
INSERT INTO dvd
VALUES (6,'Steven Spielberg','E.T',1982,1,4);
INSERT INTO dvd
VALUES (7,'Steven Spielberg','A.I.',2002,1,3);
INSERT INTO dvd
VALUES (1024,'Tim Burton','Edward Scissorhands
INSERT INTO dvd
VALUES (356,'Don Bluth','Anastasia',1997,7,4);
INSERT INTO dvd
VALUES (43,'Peter Chelsom','Serendipity',2001,10,3);
Inserarea datelor in tabela IMPRUMUTARE:
INSERT INTO imprumutare
VALUES (1,405,TO_DATE('APR 20,1999','MON DD,YYYY'));
INSERT INTO imprumutare
VALUES (2,2,TO_DATE('IUN 10,1993','MON DD,YYYY'));
INSERT INTO imprumutare
VALUES (3,4,TO_DATE('SEP 18,2000','MON DD,YYYY'));
INSERT INTO imprumutare
VALUES (43,5,TO_DATE('DEC 25,2001','MON DD,YYYY'));
INSERT INTO imprumutare
VALUES (356,11,TO_DATE('MAI 27,1994','MON DD,YYYY'));
INSERT INTO imprumutare
VALUES (1024,120,TO_DATE('IAN 03,2002','MON DD,YYYY'));
INSERT INTO imprumutare
VALUES (7,405,TO_DATE('FEB 12,2001','MON DD,YYYY'));
INSERT INTO imprumutare
VALUES (7,4,TO_DATE('FEB 15,2002','MON DD,YYYY'));
INSERT INTO imprumutare
VALUES (1,5,TO_DATE('IUL 25,1997','MON DD,YYYY'));
INSERT INTO imprumutare
VALUES (2,5,TO_DATE('AUG 12,2003','MON DD,YYYY'));
INSERT INTO imprumutare
VALUES (5,3,TO_DATE('OCT 19,2003','MON DD,YYYY'));
3.3. INTEROGARI
SELECT d.regizor, d.titlul, g.categoria
FROM dvd d, gen g
WHERE d.id_gen=g.id_gen;
SELECT d.titlul, p.nume ||' '|| p.prenume persoana
FROM dvd d, persoana p
WHERE d.id_persoana=p.id_persoana
ORDER BY d.titlul;
SELECT p.nume, p.prenume, i.data, i.id_persoana
FROM persoana p, imprumutare i, dvd d
WHERE p.id_persoana=i.id_persoana
AND i.id_dvd=d.id_dvd
AND d.titlul=( SELECT titlul
FROM dvd
WHERE titlul='&titlul');
SELECT p.nume, p.prenume, min(d.titlul) Minim, max(d.titlul) Maxim
FROM persoana p, dvd d
WHERE p.id_persoana=d.id_persoana
GROUP BY p.nume, p.prenume;
SELECT id_dvd, titlul, an_aparitie
FROM dvd
WHERE an_aparitie BETWEEN 1980 AND 2003
ORDER BY an_aparitie;
SELECT regizor, count(titlul)
FROM dvd
WHERE regizor='Steven Spielberg'
GROUP BY regizor;
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |