Documente Academic
Documente Profesional
Documente Cultură
Proiect realizat de: Burlacu Ana Maria Carp Irina Cotiug Diana
E-mail: editura_fidelia@yahoo.com
www.fidelia.com
Descrierea problemei
O editur editeaz crti tiinifice din diferite domenii. Crile sunt scrise de autori specializai ntr-un anumit domeniu. Firma are angajai mai muli editori care nu sunt neaprat specialiti n diferitele domenii, fiecare editor fiind responsabil pentru mai multe publicaii. O carte acoper unul dintre domeniile n care este specialist autorul, fiecare autor lucreaz cu un editor, dar poate avea spre publicare o alt carte de care este responsabil un alt editor.
EDITOR #id_editor
*nume
Rezolvarea diagramei
Observm o serie de probleme: -trebuie transformat relaia M:M; -carte este un atribut compus i poate avea valori multiple; Vom crea o entitate de intersecie numit DOMENIU ntre PUBLICATIE i AUTOR care va rezolva relaia M:M i astfel, entitatea AUTOR nu va mai avea entiti cu valori multiple sau compuse.
# id * nume
JURNAL
*data_inceput *data_sfarsit
CARTE REVISTA
CREATE TABLE IF NOT EXISTS `domeniu` ( `id_carte` int(11) NOT NULL, `domeniu` varchar(20) NOT NULL, PRIMARY KEY (`id_carte`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Numele coloanei
id_carte domeniu
Tip
Tip cheie
Optionalitatea
int varchar
pk
* *
Popularea cu date INSERT INTO `domeniu` (`id_carte`, `domeniu`) VALUES(1010, 'beletristica'),(1020, 'marketing'),(1030, 'medicina'),(1040, 'matematica'),(1050, 'beletristica');
CREATE TABLE IF NOT EXISTS `contract` ( `nume_aut` varchar(30) NOT NULL, `nume_edit` varchar(30) NOT NULL, `data` date NOT NULL, `clauze` varchar(50) NOT NULL, PRIMARY KEY (`nume_aut`,`nume_edit`);
Numele coloanei nume_aut nume_edit Tip varchar Varchar Cheie pk pk Optionalitatea * *
data
clauze
date
varchar
uk
*
*
INSERT INTO `contract` (`nume_aut`, `nume_edit`, `data`, `clauze`) VALUES('Allan Pease', 'Iliescu I.', '2012-1211', 'deadline-10.01.2012, cash-20.000 lei'),('Chiran A.', 'Craciun I.', '2012-12-03', 'deadline-10.01.2012, cash-20.000 lei');
Tip
Date Varchar2
Tip_cheie
PK -
Opt.
* #
Coloana
ID_editor nume
Tip
Number Varchar2
Tip_cheie
PK -
Opt.
# *
Tip cheie PK FK FK -
Opt * * * * *
Tip_cheie PK -
Opt. * #
Tip cheie PK pk FK -
Opt * * * *
Coloana id nume
Tip_cheie PK -
Opt. * #
Numele coloanei
Tip
Tip cheie
Opionalitatea
Id
Number
Pk
Nume
Varchar2
Tabela EDITORI
Numele coloanei Tip Tip cheie Opionalitatea
Pk
* * * * *
Fk1 Fk2
* *
Tip cheie
Opionalitatea * * *
Tabela PUBLICATII
Numele coloanei Id Nume Tip Number Varchar2 Pk Tip cheie Opionalitatea * *
Tabela AUTORI
Numele coloanei Id_autor Id_publicatie Data Clauze Tip Number Number Date Varchar2 Tip cheie Pk,Fk Pk,Fk Pk Opionalitatea * * * *
Tabela CONTRACTE Se observ n ultima diagram c n cazul relaiilor barate, cheia strin face parte din cheia primar a entitii respective
DESCRIBE AUTORI;
Popularea cu date
INSERT INTO AUTORI values ('Chiran A. ', Marketing'); INSERT INTO AUTORI values ('Allan Pease ', Psihologie'); INSERT INTO AUTORI values ('Alexe Fl. ', Biologie'); INSERT INTO AUTORI values ('Dinu M. ', Matematica'); INSERT INTO AUTORI values ('Coelho P. ', Beletristica/critica');
DESCRIBE EDITORI;
Popularea cu date
INSERT INTO EDITORI values (1001, 'Craciun I.'); INSERT INTO EDITORI values (1002, 'Ionescu M.'); INSERT INTO EDITORI values (1003, 'Popescu P.'); INSERT INTO EDITORI values (1004, 'Iliescu I.'); INSERT INTO EDITORI values (1005, 'Alexandrescu A.');
Popularea cu date
INSERT INTO PUBLICATII values (1010, 'Allan Pease', 1001, 'Limbajul trupului', to_date('180811','DDMMYY')); INSERT INTO PUBLICATII values (1020, 'Chiran A.', 1002, 'Marketing in agricultura', to_date('140710','DDMMYY')); INSERT INTO PUBLICATII values (1030, 'Alexe Fl.', 1003, 'Anatomia omului, to_date('210811','DDMMYY')); INSERT INTO PUBLICATII values (1040, 'Dinu M.', 1005, 'Matematica pentru performanta', to_date('241211','DDMMYY'));
INSERT INTO PUBLICATII values (1050, 'Coelho P.', 1004, 'Aleph', to_date('070512','DDMMYY'));
Interogarea tabelei
select C.ID_CARTE, C.TITLU, A.NUME_AUTOR, A.SPECIALIZARE, E.NUME from CARTE C, AUTOR A, EDITOR E where C.AUTOR=A.NUME_AUTOR and C.ID_EDITOR=E.ID_EDITOR;
Vom afia toate crile editate la firm (id-ul crii, titlul crii, autorul crii, domeniul crii i numele editorului)