Sunteți pe pagina 1din 25

FIDELIA

Proiect realizat de: Burlacu Ana Maria Carp Irina Cotiug Diana

Suntem fideli clienilor notri prin calitate i precizie


DATE DE CONTACT:

IASI ROMANIA, Str. Sos. Pacurari


Phone: +40(0)332/108 858 Fax: +40(0)332/108 859 Mobile: +40(0)728/859 106

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.

Analizarea situaiei ????


n prima instan vom avea dou entiti numite PUBLICATIE i EDITOR ce vor reine date despre autori i crtile acestora,respectiv date despre editorii firmei. ntre cele dou entiti se va stabili o relaie M:M (many to many) deoarece un autor poate lucra cu unul sau mai multi editori i un editor poate publica cri pentru unul sau mai multi autori.

Prima diagram ERD

EDITOR #id_editor

*nume

PUBLICATIE #ISBN *titlu *data_pub *nr_pagini

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.

Diagrama ERD in faza final


AUTOR

CONTRACT *nume_aut *nume_edit #data *clauze


EDITOR # id_editor *nume
DOMENIU # data *specializare

# id * nume

PUBLICATIE #ISBN #id_editor *titlu *data_pub *nr_pagini

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');

Maparea diagramei ERD- de modificat!


Coloana
data Specializare

Tip
Date Varchar2

Tip_cheie
PK -

Opt.
* #

Coloana
ID_editor nume

Tip
Number Varchar2

Tip_cheie
PK -

Opt.
# *

Coloana ISBN nr_pagini ID_editor Titlu Data_pub

Tip Number Varchar2 Number Varchar2 Date

Tip cheie PK FK FK -

Opt * * * * *

Coloana Data_inceput data_sfarsit

Tip Date Date

Tip_cheie PK -

Opt. * #

Coloana nume_aut nume_edit data clauze

Tip Varchar Varchar2 Date Varchar2

Tip cheie PK pk FK -

Opt * * * *

Coloana id nume

Tip Number Varchar2

Tip_cheie PK -

Opt. * #

Numele coloanei

Tip

Tip cheie

Opionalitatea

Id

Number

Pk

Nume

Varchar2

Tabela EDITORI
Numele coloanei Tip Tip cheie Opionalitatea

Diagramele de tabel corespunztoare fiecrei entiti sunt urmtoarele:

ISBN Data_aparitiei Nr_pagini Pret_afisat Format Id_editor Id_publicatie

Number Date Number Number Varchar2 Number Number

Pk

* * * * *

Fk1 Fk2

* *

Numele coloanei Id Subiect Titlu

Tip Number Varchar2 Varchar2 Pk

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

Crearea tabelei AUTORI


CREATE TABLE AUTORI ( NUME_AUTOR varchar2(20) primary key, SPECIALIZARE varchar2(20) );

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');

Afiarea datelor tabelei


select NUME_AUTOR, SPECIALIZARE from AUTOR

Crearea tabelei EDITORI


CREATE TABLE EDITORI ( ID_EDITOR number(4) primary key, NUME varchar2 (20) );

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.');

Afiarea datelor tabelei


select ID_EDITOR, NUME from EDITORI

Crearea tabelei PUBLICATII


CREATE TABLE PUBLICATII ( ID_CARTE number(4) primary key, AUTOR varchar2(20), ID_EDITOR number(4), TITLU varchar2(30), DATA_PUB date, CONSTRAINT PUBLICATIE_AUTOR foreign key (AUTOR) references AUTORI (NUME_AUTOR), CONSTRAINT PUBLICATIE_EDITOR foreign key (ID_EDITOR) references EDITORI (ID_EDITOR) );

Afiarea structurii tabelei


DESCRIBE PUBLICATIE;

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'));

Afiarea datelor tabelei


select ID_CARTE, AUTOR, ID_EDITOR, TITLU, DATA_PUB from PUBLICATII

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)

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