Documente Academic
Documente Profesional
Documente Cultură
Parameters
Reducere Percent,
Introduceti_Numar_factura LongInteger
Introduceti_Cod_ISBN LongInteger
SGBD Access : SQL: Crearea tabelelor
CREATE TABLE nume_tabelă
( nume-atribut1 tip_dată(mărime) [NOT NULL]
[,nume-atribut2 tip_dată(mărime) [NOT NULL]..]
[CONSTRAINT nume-atribut CHECK (nume-atribut <condiţie>…)]
[CONSTRAINT nume_index] {PRIMARY KEY|UNIQUE|NOT
NULL }]);
DELETE *
FROM nume_tabelă
[WHERE criteriu de ştergere a înregistrărilor];
DELETE *
FROM [Clienti Arad]
WHERE Telefon IS NULL;
SGBD Access : SQL: Manipularea datelor:
Interogări cu acţiune de MODIFICARE a valorilor
UPDATE nume_tabelă
SET nume_câmp=valoare_1
[,nume_câmp=valoare_2].....
[WHERE criteriu de actualizare a valorilor tuplurilor];
UPDATE Carti
SET [Pret baza] = [Pret baza]*1.15
WHERE (([Denumire Carte])="Baze de date")
AND ((Year([Data Aparitiei]))=2009);
Algebra relaţională
Relaţie2
a1 b1 c1 a3 b3 c3 a1 b1 c1
a2 b2 c2
a4 b4 c4
a2 b2 c2
a5 b5 c5
a3 b3 c3
a1 b1 c1 a3 b3 c3 a4 b4 c4
a2 b2 c2 a4 b4 c4
SELECT DISTINCT A, B, C FROM R
a4 b4 c4 a5 b5 c5 WHERE
A IN (SELECT A FROM S) AND
B IN (SELECT B FROM S) AND
Ex. Care sunt furnizorii care au
C IN (SELECT C FROM S)
livrat şi produsul A şi produsul B
Relaţia T RxS
Relaţia R Relaţia S
A B C D E
C D E
A B
a1 b1 c1 d1 e1
a1 b1 c1 d1 e1
c2 d2 e2 a1 b1 c2 d2 e2
a2 b2
c3 d3 e3 a1 b1 c3 d3 e3
Operatori
Unari
Relaţie1 Relaţie2
27
Algebra relaţională: Operatori de
•Produsul cartezian era oExtensie: Joina două tabele.
fuziune necondiţionată
•COMPUNEREA reprezintă fuziunea a două relaţii care au o proprietate
comună.
Fie 2 relaţii R1(A1, A2, ...., An) şi R2(B1,B2,......Bm), care au 2 atribute
(comune) Ai şi Bj, definite pe acelaşi domeniu de valori, şi θ ansamblul
operatorilor de comparaţie {=, >, <, >=, <=, <>}ce pot fi aplicaţi celor
două atribute Ai şi Bj.
Theta-Compunerea relaţiei R1, prin Ai, cu relaţia R2, prin Bj (R1
►◄ θR2) este relaţia R3 ale cărei tupluri sunt obţinute prin concatenarea
fiecărui tuplu al relaţiei R1, cu tuplurile relaţiei R2, pentru care este
verificată condiţia θ instituită între Ai şi Bj.
Un caz particular al theta-compunerii este echi-compunerea, atunci când
operatorul de comparaţie θ este “=“
Echi-comp. pentru care există o denumire identică a atributelor de
28
legătură dintre cele 2 tabele compunere naturală
Algebra relaţională: Operatori de Extensie: Join
Relaţia R3R1R2
Relaţia R1
A R1.B C R2.B D
A B C
a1 b1 c1 b1 d1
a1 b1 c1
a1 b1 c1 b2 d2
Relaţia R2 a1 b1 c1 b3 d3
B D
b1 d1 R4=Selecţie(R3, R1.B=R2.B)
b2 d2 A B C D
b3 d3 a1 29 b1 c1 d1
Algebra relaţională: Operatori de Extensie: Join
R1 R2 R3(R1,R1.C=R2.C,R2)
A B C C D E A B R1.C R2.C D E
a1 b1 c1 c1 d1 e1 a1 b1 c1 c1 d1 e1
a3 b3 c3 c3 d2 e2
a2 b2 c2 c3 d2 e2
a3 b3 c3 c5 d3 e3 A B R1.C R2.C D E
a1 b1 c1 c1 d1 e1
Left Outer JOIN
a2 b2 c2 Null Null Null
a3 b3 c3 c3 d2 e2
31
Algebra relaţională: Operatori de
Extensie: Join
Semicompunerea a 2 tabele presupune selectarea tuplurilor din
prima tabelă care apar în joncţiune cu tuplurile din a doua tabelă
R1 R2 SemiCompunere
A B C C D E
A B C
a1 b1 c1 c1 d1 e1
a2 b2 c2 c3 d2 e2 a1 b1 c1
a3 b3 c3 c5 d3 e3 a3 b3 c3
R3(R1,R1.C=R2.C,R2)
A B R1.C R2.C D E
a1 b1 c1 c1 c1 d1
a3 b3 c3 c3 d2 e2
32
Algebra relaţională: Operatori de Extensie: Div
R1 Diviziunea relaţiei R1 prin relaţia R2 este relaţia R3 formată din
A B toate tuplurile care, concatenate cu fiecare tuplu din R2,
a1 b1 returnează întotdeauna un tuplu din R1 (R3 = R1 ÷ R2).
a2 b1
a3 b1
a1 b2 R2 Care dintre valorile
a3 b2
a4 b2
B R3
a1, a2, a3, a4 şi a5
a1 b3 b1 apar în relaţia R1, în
A
a3 b3 /
b2
tupluri, împreună cu
a5 b3 a1
toate valorile
a1 b4 b3 a3
a3 b4
atributului B
a4 b4
b4 (împărţitor) din R2,
a1 b5 b5 respectiv b1, b2, b3,
a2 b5
b4, b5 ?
a3
33 b5
a5 b5
Algebra relaţională: Operatori de Extensie: Div
Varianta de realizare prezentată presupune în prima etapă compunerea
R1 naturală a tabelelor „R1” și “R2” dupa elementul comun aferent
A B campului B.
a1 b1 Urmează apoi, obținerea printr-o proiecție doar a valorilor câmpului
a2 b1 A și reținerea, cu ajutorul selecției, doar a acelor înregistrări pentru
care numărul de duplicate este egal cu numărul de înregistrări din
a3 b1
tabelul împărțitor
a1 b2
a3 b2 SELECT A
R2
a4 b2 R3
B
FROM R1,R2
a1 b3
A WHERE R1.B=R2.B
a3 b3 /
b1
a5 b3 a1 GROUP BY A
a1 b4 b2
a3 HAVING
a3 b4
a4 b4
b3 Count(R1.B)=(SELECT
a1 b5 b4 COUNT(R2.B) FROM
a2 b5 R2;
b5
a3
34 b5
a5 b5
SQL - II
O compunere internă
(INNER) sau echivalentă
(echicompunere) este aceea în
care liniile unui tabel sunt
combinate cu liniile altui tabel,
rezultând un număr total de
linii egal cu numarul de perechi
de inregistrari care au aceeasi
valoare in campul de legatura
(cazul 1 din Join Properties).
SGBD Access 2010: SQL ➔ SELECT: JOIN
LMD: Interogări de asociere (joncţiune / compunere) internă
Tabela A Tabela B Tabela C
a1 a2 a3 a4 a5 a6 b1 b2 b3 b4 b5 a1 c1 c2 c3 c4 C5 a1
a1 a2 a3 a4 a5 a6 b1 b2 b3 b4 b5 a1 c1 c2 c3 c4 c5 b1
SELECT
Facturi.[Numar Factura],
Carti.[Denumire Carte], Compunerea a 3 tabele
[Continut Factura].Cantitate, (WHERE)
Carti.[Pret fara TVA],
[Cantitate]*[Pret fara TVA]*(1-[Discount]) AS Valoare
FROM Facturi,Carti, [Continut Factura],
WHERE
Facturi.[Numar Factura] = [Continut Factura].[Numar Factura]
AND
Carti.[Cod ISBN] = [Continut Factura].[Cod ISBN];
Exemple:
Compunerea a 2 tabele
(INNER JOIN)
SELECT
Facturi.[Numar Factura],
[Continut Factura].[Cod ISBN],
[Continut Factura].Cantitate
Compunerea a 3
tabele (INNER
JOIN)
SELECT
Facturi.[Numar Factura], Carti.[Denumire Carte],
[Continut Factura].Cantitate, Carti.[Pret fara TVA],
[Cantitate]*[Pret fara TVA]*(1-[Discount]) AS Valoare
Tabela A Tabela B
a1 a2 a3 a4 a5 a6 b1 b2 b3 b4 b5 a1
a1 a2 a3 a4 a5 a6 b1 b2 b3 b4 b5 a1
SELECT a1,a2,a5
FROM A,B
WHERE A.a1=B.a1
AND
A.a1=ANY(SELECT a1 FROM B WHERE b4>25000);
SQL ➔ SubInterogări SELECT în SELECT în .....
Subinterogări pentru care a fost construită o compunere
Care este ziua in care au fost emise cele mai multe facturi ?
SELECT [domeniu] listă selecţie câmpuri şi/sau funcţii agregate
FROM nume tabelă
Se compară
GROUP BY câmp de grupare numărul de
HAVING criteriu câmp de grupare > / < / >= / <= / <> / = /
(SELECT ... FROM...GROUP BY acelaşi câmp de grupare );
facturi aferent
fiecărei zile cu
valorile extrase
SELECT b2, Count(b1) AS [Număr de facturi]
FROM B Se numără elementele de de
GROUP BY b2 tip b1 (număr factură), subinterogare
HAVING Count(b1) >= pentru fiecare dată (b2)
(Select MAX(Număr de facturi) FROM
Selectează numărul de
(SELECT Count(b1) elemente distincte de tip
FROM B b1 (nr.factura), adică
GROUP BY b2)); numărul de facturi ce
corespunde fiecarei zile
SQL ➔ SubInterogări SELECT în SELECT în .....
Care este oferta pe baza căreia s-au încheiat cele mai multe
contracte
Care sunt zilele in care au fost emise mai multe facturi decât pe 13/02/2013 ?
SELECT [domeniu] listă selecţie câmpuri şi/sau funcţii agregate
FROM nume tabelă
GROUP BY câmp de grupare
HAVING criteriu câmp de grupare > / < / >= / <= / <> / = /
(SELECT ... FROM...GROUP BY acelaşi câmp de grupare );
b1 b2 b3 b4 b5 a1
NrFact CodClient
Predicatul ALL
aferent clauzei
SELECT a1, Count(c1) AS [Număr de produse] HAVING compară
FROM A, B, C numărul de
WHERE A.a1=B.a1 AND B.b1=C.b1 produse aferent
GROUP BY a1 Se numără elementele de tip fiecărui client cu
HAVING Count(c1) >=ALL c1 (număr produse), pentru valorile extrase de
fiecare client (a1) subinterogare
(SELECT Count(c1) Selectează numărul de elemente
FROM B,C distincte de tip a1 (CodClient) ce
WHERE B.b1=C.b1 apar in combinatie cu produsele
GROUP BY a1; facturate
AUTORUL CARE A SCRIS CELE MAI
MULTE CĂRŢI
Dialecte SQL:
T-SQL (Transact SQL) utilizat de Microsoft SQL Server,
PL/SQL (Procedural Language/Structured Query Language) - Oracle
SQL/PSM (SQL/Persistent Stored Module) utilizat în MySQL.
Operatori
Unari
Relaţie1 Relaţie2
a1 a2 a3 a4 a5 a6
SELECT *
FROM A
Listă selecţie se referă la una sau mai multe funcţii agregate care au
ca argumente nume de câmpuri ale tabelei(lor) bazei de date. Aceste
câmpuri trebuie să fie în mod obligatoriu numerice.
AS ALIAS asociază un pseudonim aferent rezultatului unui calcul
simplu sau unei funcţii agregat.
SGBD Access 2013: SQL SELECT
LMD: Interogări (complexe) de selecţie şi grupare
b1 b2 b3 b4 b5 a1
Ca efect, pe
ecran se
afişează
catalogul
acțiunilor
Macro
SGBD Access : Crearea obiectelor Macro
Acţiunea OpenForm, la
execuţie va deschide pentru
adăugare formularul intitulat
Clienţi (acest formular trebuie
să fie creat înainte de a defini
obiectul macro care conţine
acţiunea de deschidere a lui).
Obiectul macro creat se salvează prin comanda Save As, moment în care
se redenumeşte obiectul macro prin tastarea numelui în zona de text
Macro Name din caseta de de dialog Save As.
La deschiderea/închiderea formularului:
OnOpen, OnLoad, OnUnload, OnClose, etc.
La modificări survenite asupra datelor:
BeforeUpdate, AfterUpdate, BeforeInsert,
AfterInsert, OnDelete, etc.
La acţiuni ale dispozitivelor periferice de intrare:
OnClick, OnDblClick, OnKeyPress,
OnMouseMove, etc.
La detectarea expirării unei perioade de timp:
OnTimer
Grupuri de Acţiuni Macros: Exemplu
Grupuri de Macroinstrucţiuni
Ctrl+a
^a
Grupuri de Macroinstrucţiuni: ShortCut
Ctrl+q
Ctrl+r
^r
Condiţionarea executării acţiunilor
Executarea unora dintre acţiunile obiectelor macro poate fi condiţionată
folosind expresii condiţionale.
Mod de lucru : din panoul Action Catalog se alege If
SGBD Access: Modificare Macros
SGBD Access : Reports
Antetul/Subsolul raportului
(Report Header/Footer)
DClk-Report Header/Footer
Parametrarea
obtinerii
raportului
Raport editat pentru clientul “Ion ComProd SRL” pentru un
client
Access : Parametrarea rapoartelor
SGBD Access : Parametrarea rapoartelor
SGBD Access : Reports: Proprietăţi
c. Event - proprietăţi de tip eveniment.
On Open serveşte , în principal, la definirea de filtre;
On Close poate realiza ştergerea fişierelor temporare create în
timpul execuţiei raportului. În general, acestora le sunt ataşate
funcţii ori proceduri.
3. Se
definesc
câmpurile de
grupare a
datelor, pe
niveluri de
imbricare
descendentă (de
la “mare” la
“mic”).
SGBD Access : Reports: Wizard 4
4.1 Se definesc
câmpurile după care vor fi
ordonate datele în cadrul
grupurilor (sunt admise 4
niveluri de sortare)
4.2 Se precizează
câmpurile din cadrul
grupului, pentru care se vor
calcula totaluri sau
subtotaluri şi se va alege
tipul de calcul aplicabil
acestora
SGBD Access : Reports: Wizard 5-6
5. Se stabileşte modul
de afişare, corespunzător
şabloanelor predefinite,
precum şi orientarea în
pagină
6. Se
stabileşte
titlul
raportului
SGBD Access : Reports: Wizard
SGBD Access : SubReports
Dacă se doreşte completarea informaţiilor dintr-un obiect de
tip raport cu alte informaţii conţinute de diferite alte rapoarte,
se poate genera un RAPORT PRINCIPAL în care se
integrează SUBRAPOARTE.
Acestea se pot insera atât în secţiunea de detaliu, cât şi în
celelalte secţiuni (inclusiv în cele de grup).
Ca şi în operaţiunea de creare a subformularelor, se utilizează
butonul din caseta de instrumente (controale) – Toolbox,
cu sau fără activarea Wizard-ului
.
Formularele asigură:
• Interfaţă prietenoasă cu utilizatorul
final, realizată prin intermediul diferitelor
controale (butoane, casete text, etc.) sau
altor elemente grafice incorporate;
• Actualizarea concomitentă a mai
multor tabele prin intermediul
subformularelor;
•Reguli de validare suplimentare celor
definite la nivelul tabelelor.
SGBD Access : Clasificare
După sursa de date:
Formulare legate (bound)- permit afişarea sau actualizarea datelor din
tabele;
Formulare nelegate (unbound)- destinate afişării sau editării unor date
care nu sunt stocate în tabele (mesaje, informaţii despre sistem, date
necesare unui raport etc.)
SGBD Access :
Vizualizarea formularelor
SGBD Access :
Vizualizarea formularelor
SGBD Access :
Vizualizarea formularelor
Access : Crearea formularelor
Caseta combinată Îmbină proprietăţile unei casete text cu cele ale unei
(Combo Box) casete de tip listă (permite atât editarea unei valori,
cât şi selectarea acesteia dintr-o listă derulantă).
Caseta combinată este un control ce se foloseşte
frecvent pentru actualizarea cheilor externe.
Butonul-comutator Sunt controale folosite pentru editarea unor valori de
(Toggle Button), tip logic (Yes/No, On/Off, True/False).
Butonul de opţiune
(Option Button),
Caseta de validare
(Check Box)
Σ(Valoare)
Formulare si Subformulare
Pregătire formular: CLIENTI
?
Pregătire formular principal: FACTURĂ
Formulare si Subformulare
Expresii în Formulare şi Subformulare
Expresiile în formulare se editează:
•în caseta de text a controlului;
•în rubrica proprietăţii CONTROL SOURCE
Expresiile pot fi:
•Simple: =[nume_ctrl1]operator[nume_ctrl2]
•Complexe: =Funcţie([nume_ctrl1]operator[nume_ctrl2])
Dacă este referit un control situat în alt formular, acesta se identifică prin expresia
Forms![Nume_formular]![nume_ctrl]
=[Nume_ctrl_local]operatorForms![Nume_formular]![nume_ctrl]
• Border Style – specifică tipul bordurii. Setarea acestei proprietăţi va avea efect
şi asupra comportamentului formularului:
• None – formular fără bordură (formularul nu va putea fi redimensionat la
execuţie);
• Thin – bordură subţire (formularul nu va putea fi redimensionat);
• Sizable– bordura implicită (formularul poate fi redimensionat);
• Dialog – bordura subţire (formularul nu poate fi redimensionat iar bara de titlu
va conţine doar butonul pentru închidere Close obţinându-se astfel un formular de
tip Dialog Box).
• Control Box – indică prezenţa meniului sistem în bara de titlu;
• Min Max Buttons – dezactivează sau activează fie ambele, fie unul din
butoanele de minimizare şi maximizare din bara de titlu;
• Close Button – indică prezenţa butonului de închidere (Close) în bara de titlu;
Proprietăţile Forms: Format
• Width – specifică lăţimea formularului şi implicit a tuturor secţiunilor.
Această proprietate poate fi modificată în timpul proiectării formularului, dar şi în
cursul execuţiei acestuia (dacă bordura este de tip Sizable), cu ajutorul mouse-lui.
• Picture – poate conţine specificatorul unui fişier grafic, al cărui conţinut
va fi afişat pe fundalul formularului;
• Picture Type – specifică varianta OLE folosită:
Embedded (înglobat) – imaginea este inclusă în formular;
Linked (legat) – se creează doar o legătură către fişierul grafic
(formularul nu va afişa imaginea respectivă dacă fişierul este şters,
mutat etc.).
• Grid X – conţine numărul de subdiviziuni orizontale pe unitatea de
măsură (cm, inch, etc.). Grila (Grid) serveşte la alinierea automată a controalelor.
• Grid Y - conţine numărul de subdiviziuni verticale pe unitatea de măsură
(intervalul 1-64).
Proprietăţile Forms: Data
=ActualizeazaContor(
[Forms]![Carti],
[CrtRecord])
Proprietăţile Forms: Event
2.Eveniment tratat printr-o procedură
eveniment - proprietatea eveniment va conţine
expresia EventProcedure, iar editarea procedurii
se poate face prin acţionarea butonului
BuildWizard, la invocarea căruia Access deschide
editorul de module, în care generează o procedură
vidă sub forma:
Private Sub Form_numeEveniment
([ListăParametriFormali])
End Sub
Între cele două linii, utilizatorul poate insera
propriile instrucţiuni.
[Event Procedure]
3. Eveniment tratat printr-un macro: proprietatea
eveniment va conţine numele macro-ului
Macro1
Proprietăţile Forms: Event
Eveniment Proprietatea Descriere
eveniment
Activate On Activate Este declanşat la activarea formularului (fie la deschiderea lui, fie
la selectarea lui dintr-o altă fereastră) şi poate fi folosit, de
exemplu, pentru refacerea valorilor unei liste derulante, în urma
actualizării tabelei sursă printr-un alt formular.
SELECŢIE;
CALCULE;
ACŢIUNE
CREAREA UNEI INTEROGĂRI DE SELECŢIE:
Meniul Create + butonul Query Wizard
Din fereastra New Query sunt afişate mai multe tipuri generare a interogărilor:
• asistentul pentru cereri simple de interogare (Simple Query Wizard)
•asistentul pentru interogări încrucişate (Crosstab Wizard)
•asistentul pentru căutarea înregistrărilor duplicat (Find Duplicates Query Wizard)
•asistentul pentru căutarea înregistrărilor nu au corespondent în cele două tabele
sursă (Find Unmatched Query Wizard)
Simple Query Wizard
Interogarea bazelor de date
1. Se alege meniul Create + butonul Query Design
2. Se alege sursa de date în fereastra Show Table
3. Utilizatorul selectează tabela sau tabelele sursă participante la interogare,
apăsând pentru inserare butonul Add
4. Se închide fereastra Show Table prin Close
Funcţii:
Iif(Condiţie;Actiune_If_True;Actiune_If_False)
Date(), Now(),
Month(), Year(), Day()
DateAdd(“şablon_dată”;număr;câmp_dată/”constantă_dată”)
DateDiff(“şablon_dată”;dată_1;data_2;prima_zi)
yyyy An
WeekDay(câmp_data;prima_zi)
q Trimestru
DateSerial(an;lună;zi) m Luna
y Nr.zi dintr-un an
DateValue(dată)
d Zi
DatePart(“şablon_dată”;dată) w Zi din săptămână
Nr. săptămână
Format(dată;”şablon_dată”) ww
Interogarea bazelor de date: Criteria
Funcţii:
=STRING(număr_de_multiplicări ; caracter)
IsNumeric(), IsNull(), IsBlank(),
First(), Last()
Câmpuri calculate (pe linie) în interogări de selecţie:
“Se simulează o majorare a preţului de 25% pentru cărţile apărute după data de
01 ianuarie 2012
Year([Data scadentei])=Year(Now())
And
Month([Data scadentei])=Month(Now())
Câmpuri calculate (în linie) în interogări de selecţie: DatePart; Year
“Se afişează facturile emise în al treilea trimestru al anului 2011”
DatePart("q";[Data Facturii])=3
Câmpuri calculate (în linie) în interogări de selecţie: WeekDay
“Se afişează facturile emise în weekend, in 2011”
=DateAdd("ww";1;[Data Facturii])
Câmpuri calculate (în linie) în interogări de selecţie: DateSerial
“Se afişează facturile scadente în ultima zi a fiecărei luni”
“Se modifică cu 10% preţul de bază pentru manualul “Baze de date”, în anul 2009”
INTEROGĂRI pentru MODIFICAREA TUPLURILOR (Update)
Aceste interogări permit modificarea tuplurilor existente într-o tabelă.
“Se modifică cu 10% preţul de bază pentru manualul “Baze de date”, în anul 2009”
INTEROGĂRI pentru ŞTERGEREA TUPLURILOR (Delete)
Aceste interogări permit ştergerea tuplurilor existente într-o tabelă, potrivit
unui criteriu de selecţie.
Enforce Referential
Integrity se activează atunci când:
-atributul din tabela sursa este KP
-atributul din tabela destinatie este KExt
-cele două atribute sunt de acelaşi tip
-cele două tabele sunt în aceeaşi BD
Relaţia R1
Relaţia R3R1R2
A B C A R1.B C R2.B D
a1 b1 c1 a1 b1 c1 b1 d1
a1 b1 c1 b2 d2
Relaţia R2 a1 b1 c1 b3 d3
B D
b1 d1 R4=Selecţie(R3, R1.B=R2.B)
b2 d2 A B C D
b3 d3 prof.univ.dr. Ionescu Bogdan
a1 b1 c1 d1
Join
Cele 3 tipuri de joncţiuni prezentate (theta, echi, naturală) sunt de
natură internă şi prezintă 2 extensii:
• Compunerea externă;
• Semicompunerea
R1 R2 SemiCompunere
A B C C D E
A B C
a1 b1 c1 c1 d1 e1
a2 b2 c2 c3 d2 e2 a1 b1 c1
a3 b3 c3 c5 d3 e3 a3 b3 c3
R3(R1,R1.C=R2.C,R2)
A B R1.C R2.C D E
a1 b1 c1 c1 c1 d1
a3 b3 c3 c3prof.univ.dr.
d2 Ionescu
e2 Bogdan
Definirea relaţiilor între tabele:1-1 /1-n
ECHICOMPUN
EREA include
numai
tuplurile
în care valorile
atributelor cheie
sunt egale în
prof.univ.dr. Ionescu Bogdan ambele tabele
Definirea relaţiilor între tabele:1-1 /1-n
COMPUNEREA EXTERNĂ
se pun în legătură toate
înregistrările din tabela sursă
şi înregistrările din tabela
destinaţie care, care au valori
egale în câmpul de legătură
Relaţii
R1(A1,B1,C1,D1,A2) R2(A2,B2,C2,D2)
Cheie externă
Chei primare
1 - Prof.dr. Bogdan IONESCU
Modele de date: modelul RELAŢIONAL
Relaţii
R1(A1,B1,C1,D1,A2) R2(A2,B2,C2,D2)
Factura Clienţi
Nr_factură
Chei primare Cod_client
Data_factură Nume_client
Data_scadenţă Adresă
Cod_client Localitate
Cheie externă
Factura(Nr.Factura,Data_f,Data_s,Cod client)
Clienti(Cod client,Nume_cl,Adresa,Localitate)
1 - Prof.dr. Bogdan IONESCU
Modele de date: modelul RELAŢIONAL
RESTRICŢIILE DE INTEGRITATE depind de
semantica valorilor domeniilor.
Integritatea entităţii prin care valorile cheii primare
trebuie să fie diferite de zero;
Integritatea referirii potrivit căreia valorile unei chei
externe trebuie să se refere la tuplurile unei alte relaţii
ALTE RESTRICŢII care se aplică asupra domeniilor
(validări prin care se reflectă alte corelaţii de ordin
valoric)
SCHEMA unei relaţii este formată din:
Numele relaţiei
Atributele relaţiei
Restricţiile de integritate
1 - Prof.dr. Bogdan IONESCU
Normalizarea Bazelor de Date
Normalizarea se bazează pe următoarele concepte:
Proces de normalizare
Dependenţa funcţională
Forme normale
DD
+RG NORMALIZARE MRD
1FN
1 FN 1FN
De asem enea, FN1 ex clude
apariţia atributelor sau grupurilor
de atribute repetitive în cadrul
unei relaţii.
De exemplu, relaţia :
Comenzi(NumărComandă, Data, Material1, Material2)
nu respectă FN1, deoarece conţine atribute repetitive.
Numar Data Material1 Material2
Comandă
11 01/01/2008 Ciment Var
12 02/01/2008 Ciment Balastru
13 02/01/2008 Var Nisip
1 - Prof.dr. Bogdan IONESCU
Normalizarea Bazelor de Date : DD+RG
P entru aducerea relaţiei în FN 1, 1FN
se parcurg urm ătoarele etape:
Pentru grupul de atribute
repetitive, se form ează o altă
relaţie
Cheia prim ară din noua relaţie, va
fi în vechea relaţie, cheie ex ternă.
PieseComandate(NumărComandă, CodPiesă,
Cantitate, PreţUnitar, DenumirePiesă)
Specializari(Specializare, CodFacultate)
1 - Prof.dr. Bogdan IONESCU
Normalizarea Bazelor de Date : 3FN
Forma normala 4 Boyce-Codd
4 FN
4FN
O relaţie R este în 4FN, dacă este în
forma BC şi dacă nu există
dependenţe funcţionale multivaloare
elementare în aceeaşi relaţie (unice)
Exemplu: o carte e scrisă de mai mulţi autori şi fiecare autor scrie
la toate capitolele. Adică, există toate combinaţiile posibile între
CodAutor şi NrCapitol.
Ca urmare, în relaţia Carte(CodCarte, CodAutor, NrCapitol) există
următoarele dependenţe multivaloare:
CodCarte→→ CodAutor/NrCapitol CodCarte CodAutor NrCapitol
111 Ionescu 1
111 Popescu 2
111 Ionescu 2
111 Popescu 1
1 - Prof.dr. Bogdan IONESCU ... ... ...
Normalizarea Bazelor de Date : 3FN
Forma normala 4 Boyce-Codd
4FN
Pentru aducerea unei relaţii în FN4:
• Se identifică dependenţele multivaloare
• Determinantul dependenţei (X) va forma
câte o relaţie cu fiecare atribut determinat (Y şi Z)
• În relaţiile nou formate cheile primare vor fi compuse din
determinant şi atributul determinat
CarteAutor(CodCarte, CodAutor)
CarteCapitol(CodCarte, NrCapitol)
1 - Prof.dr. Bogdan IONESCU
Normalizarea Bazelor de Date : 3FN
Forma normala 5 Boyce-Codd
5 FN 4FN
O relaţie R este în 5FN, dacă este în 4FN
şi tratează cazurile în care există mai 5FN
multe dependenţe funcţionale
multivaloare care sunt interlegate între
ele
F1 conţine M1 F2 M2 G1
M1 se depozitează în G1 F1 M2 G1
F1 însoţeşte materialul în G1 F3
F3
M1
M3
G2
G2
Atunci, F1 conţine M1 care va fi depozitat în G1.
1 - Prof.dr. Bogdan IONESCU
Normalizarea Bazelor de Date : 3FN
Forma normala 5 Boyce-Codd
Etape FN5: 4FN
• Se identifică dependenţele interlegate 5FN
• Fiecare dependenţă interlegata se
descompune conform proiecţiilor sale
(XYZ = XY * YZ * XZ)
• Pentru fiecare relaţie, cheia primară va fi
formată din atributele componente.
FacturaMaterial(Factura, Material)
MaterialGestiune(Material, Gestiune)
1 - Prof.dr. Bogdan IONESCU
Normalizarea Bazelor de Date:
Matricea Dependenţelor Funcţionale
Dată factură
Cod furnizor
Denumire furnizor
Adresa, etc.
furnizor)
Dicţionarul datelor nu admite atribute derivate sau calculate
(Valoare, TVA)
Denumire Furnizor
Cod Furnizor
Adresă Furnizor
CodCli,
NrFact, CLIENTI
DataFact
FACTURI Nume,
Adresa,
PRODUSE
Tel
CodProd,
DenProd,
CantFact,
Pret
Dicţionarul datelor
(NrFact, DataFact,
• FN3
Eliminarea dependenţelor tranzitive
CLIENT (CodCli, Nume, Telefon, Fax, Adresa, CodPostal)
FACTURA(NrFact, DataFact, CodCli)
PRODUS(CodProd, DenProd, PretRef)
FACTURAT(NrFact, CodProd, CantFact, PretFact)
LOCALIZARE(CodPostal, Localitate)
Reguli de gestiune:
a. Editura produce mai multe cărţi anual;
b. O carte primeşte un Cod ISBN la fiecare retipărire;
c. Cărţile sunt scrise de către autori. Un autor poate scrie mai
multe cărţi;
d. Clienţii editurii sunt numai persoane juridice;
e. O factură conţine cel puţin o carte şi o carte poate figura pe
mai multe facturi;
f. Preţul de vânzare se stabileşte în momentul producerii unei
cărţi, acesta fiind un preţ orientativ, rămânând neschimbat
până la epuizarea tirajului, preţul efectiv de vânzare fiind
negociat cu fiecare client;
1 - Prof.dr. Bogdan IONESCU
EXEMPLUL III – D.A.
1 Cod ISBN
15 Denumire Client
......... .........
? 16 Adresa client
17 Telefon
CLIENŢI
18 CNP autor
FACTURI 19 Nume Prenume
CF client Nr Factură 20 Data naşterii
......... ......... 21 Adresa autor
1 - Prof.dr. Bogdan IONESCU
CĂRŢI EXEMPLUL III – D.A.
Cod ISBN
.........
?
FACTURI
Nr Factură
.........
CĂRŢI ? AUTORI
Cod ISBN CNP autor
......... .........
CĂRŢI AUTORI
AUTORI CĂRTI
Cod ISBN CNP autor
Cod ISBN, CNP autor
......... .........
Data factura
CNP autor
Cod fiscal
Cod ISBN
Denumire
Denumire
Pret carte
Cantitate
prenume
facturata
aparitiei
Telefon
nasterii
Adresa
Adresa
Pret de
factura
factura
Numar
Stocul
Nume
tiparit
client
client
client
autor
carte
baza
Data
Data
Cod ISBN 1 1 1 1
Den. carte
Data aparitiei
Stocul tiparit
Pret de baza
Numar factura 1 1 1T 1
T
1T
Data factura
Cantitate
facturata
Pret carte
factura
Cod fiscal
client 1 1 1
Denumire
client 1 1 1
Adresa client
Telefon
CNP autor 1 1 1
Nume prenume
Data nasterii
Adresa autor
Cod ISBN +
T T
1T
T T T
1T
T T
Numar factura 1 1 1 1 1 1 1 1 1
CNP +
Cod ISBN 1 - Prof.dr. Bogdan IONESCU
Matricea dependentelor functionale
Data factura
CNP autor
Cod fiscal
Cod ISBN
Denumire
Denumire
Pret carte
Cantitate
prenume
facturata
aparitiei
Telefon
nasterii
Pret de
Adresa
Adresa
factura
factura
Numar
Stocul
tiparit
Nume
client
client
client
autor
carte
baza
Data
Data
Cod ISBN 1 1 1 1
Numar factura 1 1 1T 1T 1T
Cantitate
facturata
Pret carte
factura
CNP Number,LI Da Da
AUTORI-CĂRŢI
Nume camp Tip date Obligatoriu Unic Integritate Reguli de
Referentiala validare
CNP Number,LI Da Da
CĂRŢI CONŢINUT
Nume camp
FACTURĂ
Tip date Obligatoriu Unic Integritate Reguli de
Referentiala validare
Text,
Cod ISBN
13,M
Da Da
........
Denumire carte Text, 50 Da
Cod ISBN
Data aparitiei Date/Time Da <=Data curenta
CONŢINUT FACTURĂ
Nume camp Tip date Obligatoriu Unic Integritate Reguli de validare
Referentiala
Serie factura Text,5,M Da Da Da
CLIENŢI
Nume camp Tip date Obligatoriu Unic Integritate Reguli de validare
Referentiala
Cod fiscal Number, LI Da Da
Adresa Text,100 Da
1 - Prof.dr. Bogdan IONESCU
Telefon Text,20
1 - Prof.dr. Bogdan IONESCU
MRD – Îmbunătățit prin adăugarea de noi reguli de gestiune
APROVIZIONAREA
Editura comandă tirajul fiecărei apariții editoriale ce urmează a fi tipărit
la o tipografie (ce are in acest exemplu calitatea de FURNIZOR).
Aceasta livreaza carti editurii, care atunci când le recepționează
întocmește Nota de Recepție și Constatare de Diferențe (NRCD).
CARTI(Cod_ISBN, ………………………….)
1 - Prof.dr. Bogdan IONESCU
MRD – Îmbunătățit prin adăugarea de noi reguli de gestiune
COORDONATORI
Cartile pot avea unul sau mai multi coordonatori.
Coordonatorii reprezinta autorii unei aparitii editoriale in raporturile
juridice cu editura. Coordonatorii pot fi sau nu, autori.
COORDONATORI_CARTI(Cod_ISBN, CNPCoordonator)
CARTI(Cod_ISBN, ……….)
1 - Prof.dr. Bogdan IONESCU
CONTRIBUTIA AUTORILOR LA OPERA (I)
Cartile au mai multe capitole si sectiuni. Se defineste o sectiune ca fiind
un interval de pagini ce constituie o contributie cuantificabila a unui
autor. Un capitol poate avea mai multe sectiuni. Un autor poate scrie
intervale de pagini in cadrul unuia sau a mai multe capitole. Numarul de
pagini scrise reprezintă procent din opera si este important pentru
calculul drepturilor de autor.
CARTI(Cod_ISBN, …….)
1 - Prof.dr. Bogdan IONESCU
CONTRIBUTIA AUTORILOR LA OPERA (II)
CARTI(Cod_ISBN, ……………………., )
COORDONATORI_CARTI(Nr.ContractEditare (Cod_ISBN),
CNPCoordonator)
1 - Prof.dr. Bogdan IONESCU
COORDONATORI(CNPCoordonator, NumeCoordonator, …….)
FACTURAREA
Factura este unica la nivel de editura; O factura contine mai multe
carti livrate, iar o carte figurează pe mai multe facturi; Cota de TVA
este marcata pe factura, deoarece din punctul de vedere al editurii,
continutul facturii este omogen, adica se vand numai carti.
Altfel, daca se schimbă regula de gestiune si editura livreaza si altceva,
cu cote diferite de TVA, atunci se poate trece cota de TVA pe
CONTINUT FACTURA. Pe fiecare factura se marchează un delegat din
partea editurii
CLIENTI(CodFiscalClient, Nr_inreg.RC, ………………)
FACTURI(NrFactura, DataFactura, DataScadentei, Cota_TVA,
CodFiscalClient, CNP_Delegat)
CONTINUT_FACTURA(NrFactura, Cod_ISBN, Cantitate,
Reducere_comerciala)
DELEGAT(CNP_Delegat, CI_serie, CI_numar, ………..)
CARTI(Cod_ISBN, …………………………………….)
1 - Prof.dr. Bogdan IONESCU
INCASAREA
INCASARE_CLIENT(TipDoc.Incasare-Nr.Doc.Incasare, , CodFiscalClient)
FACTURA_INCASATA(NrFactura, TipDoc.Incasare-Nr.Doc.Incasare,
DataIncasarii, SumaIncasata)
Relaţie2
a1 b1 c1 a3 b3 c3 a1 b1 c1
a2 b2 c2
a4 b4 c4
a2 b2 c2
a5 b5 c5
a3 b3 c3
a4 b4 c4 a5 b5 c5
a2 b2 c2 d2 e2
a2 b2 c3 d3 e3
1 - Prof.dr. Bogdan IONESCU
Algebra relaţională: Operatori Unari
Operatori
Unari
Relaţie1 Relaţie2
Relaţia R3R1R2
Relaţia R1
A R1.B C R2.B D
A B C
a1 b1 c1 b1 d1
a1 b1 c1
a1 b1 c1 b2 d2
Relaţia R2 a1 b1 c1 b3 d3
B D
b1 d1 R4=Selecţie(R3, R1.B=R2.B)
b2 d2 A B C D
b3 d3 a1 b1
1 - Prof.dr. Bogdan IONESCU
c1 d1
Algebra relaţională: Operatori de Extensie: Join
Cele 3 tipuri de joncţiuni prezentate (theta, echi, naturală) sunt de
natură internă şi prezintă 2 extensii:
• Compunerea externă;
• Semicompunerea
R1 R2 SemiCompunere
A B C C D E
A B C
a1 b1 c1 c1 d1 e1
a2 b2 c2 c3 d2 e2 a1 b1 c1
a3 b3 c3 c5 d3 e3 a3 b3 c3
R3(R1,R1.C=R2.C,R2)
A B R1.C R2.C D E
a1 b1 c1 c1 c1 d1
a3 b3 c3 c3 d21 - Prof.dr.
e2 Bogdan IONESCU
Algebra relaţională: Operatori de Extensie: Div
R1 Diviziunea relaţiei R1 prin relaţia R2 este relaţia R3 formată
A B din toate tuplurile care, concatenate cu fiecare tuplu din R2,
a1 b1
b1 returnează întotdeauna un tuplu din R1 (R 3 = R1 ÷ R 2).
a2 b1
b1
a3 b1
b1
a1 b2
b2 R2 Care dintre valorile
a3 b2
b2
a4 b2
b2
B R3
a1, a2, a3, a4 şi a5
a1 b3
b3 b1 apar în relaţia R1, în
A
a3 b3
b3 / tupluri, împreună cu
b2 a1
a5 b3
b3
toate valorile
a1 b4
b4 b3 a3
a3 b4
b4
atributului B
a4 b4
b4
b4 (împărţitor) din R2,
a1 b5
b5 b5 respectiv b1, b2, b3,
a2 b5
b5
b4, b5 ?
a3 b5
b5
a5 b5
b5 1 - Prof.dr. Bogdan IONESCU
CONCEPEREA Bazelor de Date
1
Teoria generală
a bazelor de date
Baza de date este:
– Un ansamblu de date structurate
– Legate funcţional
– Stocate pe suporturi tehnice adresabile
– Accesate de mai mulţi utilizatori de o manieră selectivă
şi într-un timp oportun
1 - Prof.dr. Bogdan
IONESCU
Conceperea bazelor de date
3
Conceperea BDR
Normalizare
Problemă de Proiectare
informatizat Schema relaţională
BD MRD
Model E-A
Descrierea
datelor
Manipularea
datelor
4
Relational model
Origine :
Edgar Frank
"Ted" Codd (1970)
Entity–Relationship model
Modelul R se
Origine : C.Bachman (1969), fundamentează pe
Peter Chen (1976). noţiunea matematică
Modelul E-A este un formalism grafic de relaţie
R(X1,X2,....Xn)
pentru modelarea datelor bazat pe: unde, pentru
- reprezentării grafice; fiecare element Xi
- concepte simple și ușor de formalizat : se defineşte un
- un lucru care poate fi identificat în mod domeniu de valori
distinct (Chen) = un obiect – ENTITĂȚI
- legături între aceste lucruri (obiecte) ->
ASOCIERI
5
Modelul Entitate – Asociere (Entity–
Relationship model)
Este cel mai cunoscut model al claselor de modele
semantice,
– se identifică concepte semantice, de semnificație
pentru a descrie sisteme informaționale
– se imaginează un ansamblu de obiecte simbolice
care sunt utilizate pentru reprezentarea conceptelor
semantice
– se imaginează un ansamblu de reguli de
integritate formalizate pentru a conferi
semnificație acestor obiecte formale.
– se dezvoltă un ansamblu de operatori formali
pentru a manipula aceste obiecte formale
6
Modelul Entitate – Asociere
Modelul E-A operează în reprezentarea realității cu 3
concepte :
Entitatea – sub forma unui lucru/obiect ce poate fi
identificat și descris de o manieră distinctă (Chen)
Proprietatea (sau Atributul) :
– Entitățile (și asocierile) sunt descrise de
caracteristici, numite și proprietăți;
Un nume;
Un tip de dată
Asocierea :
– Legătură între entități
– Poate fi : unară (reflexivă sau recursivă), binară, ternară, n-
7 ară
Diagrama modelului E-A
CLIENTI
Entitatea (Obiect)
– Este un obiect, un eveniment, un loc,
o persoană, un lucru – elemente identificabile
– Are o existență proprie;
– Poate reprezenta o noțiune concretă
(Clienți, Furnizori, Studenți, Cărți)
sau abstractă (Colecții, Învață, etc.)
– Este conformă unei nevoi de descriere informațională;
– Se reprezintă printr-un dreptunghi ce conține numele entității
8
Diagrama modelului E-A
CLIENTI
Proprietățile (sau atributele) CUI_Client
– Descriu caracteristicile entităților Denumire_Client
Adresa_Client
și asocierilor (este o dată elementară); Telefon_Client
– Numele proprietății se scrie în Mail_Client
Localitate_Client
interiorul entității sau asocierii Tara_Client
corespondente ……………
– Proprietățile cu rol de identificator (numite și chei in
modelul relațional) sunt subliniate
REGULI DE BAZĂ :
– O proprietate (aceeași, cu aceeași semnificație) nu
poate exista declarată în 2 obiecte diferite (entități).
– O entitate are cel puțin o proprietate.
9– O asociere poate avea sau nu proprietăți
Diagrama modelului E-A : Identificator
Într-o entitate fiecare înregistrare (ocurență, tuplu) trebuie să
fie identificată de o manieră unică.
11
Diagrama modelului E-A :
Identificatorul asocierii
O asociere nu are un identificator explicit. Asocierea
depinde de entitățile de care aceasta este legată.
Identificatorul se deduce prin calculul produsului
cartezian al identificatorilor entităților asociate.
– pentru asocierea FACTURAT ce leagă FACTURI de
PRODUSE, identificatorul este produsul cartezian al
celor 2 entități participante
FACTURI PRODUSE
Facturat
NrFactura CodProdus
Data Factura DenProdus
Cantitate
Data Scadență PretBaza
……. ……..
12
Identificator în modelul RELAŢIONAL
Tuplurile unei relaţii se pot identifica de o manieră unică prin
intermediul valorilor unuia sau mai multor atribute care joacă rol
de CHEIE PRIMARĂ a relaţiei respective.
CHEIA EXTERNĂ: Fiind două relaţii R1 şi R2, cu atributele A1 şi A2
chei primare, se spune că în relaţia R1, A2 este dacă, utilizând o
parte din valorile ei sau toate, pot fi regăsite tuplcheie externă urile
relaţiei R2
(altfel spus, un atribut al unei relaţii este cheie externă, dacă se
regăseşte pe post de cheie primară în altă relaţie)
Relaţii
R1(A1,B1,C1,D1,A2) R2(A2,B2,C2,D2)
Cheie externă
Chei primare
Diagrama modelului E-A
Nume
Asocierile (relațiile) asociere
– Legătură semantică între entități.
– Legătura nu are orientare (direcție) :
Comenzile conțin produse comandate sau produsele pot fi
comandate.
– Sunt denumite de regulă printr-un verb sau un substantiv
– Entitățile participante la fiecare asociere sunt conectate la
asociere (prin linii continue).
– Sunt reprezentate de o elipsă (sau romb) ce conține numele
asocierii
– Fiecare linie este etichetată prin cardinalitatea (gradul)
asocierii.
Diagrama modelului E-A :Asocierile
CLIENTI
CUI_Client
Denumire_Client 1-n 1-1 CONTRACTE
Adresa_Client Nr_Contract
Telefon_Client Încheie
Data_Contract
Mail_Client ……………
Localitate_Client
Tara_Client
……………
O asociere poate lega una sau
mai multe entități, determinând
ROLUL acesteia.
15
Diagrama modelului E-A :
Asocierile
16
PROIECȚIE ÎN RELAȚIONAL - Dependenţa funcţională : unică
Dependenţele sunt legături logice, ce se stabilesc între
atributele modelului relaţional.
1 - Prof.dr. Bogdan
IONESCU
Normalizarea Bazelor de Date:
Diagrama dependenţelor funcţionale
FACTURI PRODUSE
NrFactura Facturat
CodProdus
Data Factura Cantitate
DenProdus
Data Scadență Discount
PretBaza
……. ……..
24
Diagrama modelului E-A :
CARDINALITĂȚI
Cardinalitatea este noțiunea obligatorie a modelului ce permite
rezolvarea unor anomalii, cum ar fi lipsa realizării
corespunzătoare unei entități cu care entitatea curentă
formează o asociere:
– O comandă care nu are produse comandate;
– O factură care nu are produse facturate;
– O carte care nu are autori, etc..
Deci este vorba de o RESTRICȚIE pe care o declarăm
modelului, în sensul prin care ”se împiedică nerealizarea unei
asocieri, adică faptul ca o comandă să nu aibă nici un produs”
Pentru o ocurență (instanță) a unei entități, câte
ocurențe ale asocierii participă, cel mai mult și
cel mai puțin ?
25
Diagrama modelului E-A :
CARDINALITĂȚI : tipologii (roluri)
Rolul unei asocieri este definit prin 2 numere (min și MAX), ce reprezintă cel
mai mic număr și cel mai mare număr cu care o entitate participă la asociere
prin ocurențele sale.
0,1 0,1
1,1 1,1
0,n 0,n
1,n 1,n B
A
Asociere
— Întrebări bilaterale :
• Min : ”De câte ori – cel puțin – entitatea A este legată de B” ?
• Max : ”De câte ori – cel mult – entitatea A este legată de B” ?
26
Diagrama modelului E-A :
CARDINALITĂȚI : 1,1
Asocierea de tip 1,1
– Un client încheie un singur contract.
– Un contract nu este încheiat decât de un singur client.
1,1 1,1
CLIENT Incheie CONTRACT
27
Diagrama modelului E-A :
CARDINALITĂȚI : 1,n
Asocierea 1,n
– Un client comandă mai multe produse.
– Un produs dat este comandat de un singur client.
1,n 1,1
CLIENT Comandă PRODUS
0,n 0,1
28
Diagrama modelului E-A :
Dimensiunea asocierii
Reprezintă numărul de entități participante la
asociere.
– Observații :
Numărul de entități participante la asociere nu este
limitat. Totuși, un număr mare de entități participante
indică o analiză superficială și aproximativă.
O asociere ”reflexivă” este o asociere prin ocurențe între
entitate și ea însăși.
29
Dimensiunea 3 – asociere ternară
CLIENT IMOBIL
NrClient 1,n 1,1 CodImobil
Nume Închiriază Adresă
Adresă Suprafață
……. ……..
1,1
CONTRACT
NrContract
DataContract
30 ……..
Dimensiunea 3 – asociere ternară
Gestiunea consultaților unei clinici medicale
MEDIC ActMedical
Marcă 1,n 1,1 NrConsultație
Nume Practică DataConsult
Specialitate ……..
…….
1,n
PACIENT
Nr.Card.Sanatate
……..
31
Regulile asocierilor
Dacă se identifică o ocurență a unei asocieri, atunci va
exista în mod obligatoriu și o ocurență a fiecărei
entități asociere.
Două ocurențe ale unei entități nu pot participa la
aceeași ocurență a asocierii (decât dacă asocierea
este reflexivă).
32
SUBTIPURI de entități
Un subtip sau o subentitate este o clasificare a unei
entităţi care are caracteristici comune cu entitatea
generală, precum atribute şi relaţii. .
Subtipurile se reprezintă ca entităţi în interiorul altei
entităţi.
Atributele şi relaţiile comune tuturor subtipurilor se vor
reprezenta la nivelul supertipului, sau superentităţii.
Atributele şi relaţiile supertipului vor fi moştenite de
către subtipuri.
Un subtip poate avea la rândul său alte subtipuri
incluse.
33
SUBTIPURI de entități
Subtipurile trebuie să se
excludă reciproc. 1,n Departament
Conduce
“un angajat nu poate fi, IdDepartament
Este condus de
de exemplu, şi manager şi
secretară în acelaşi timp”. Lucrează ……..
1,1
ANGAJAT Manager
IdAngajat Secretară ……..
CNP …….. bonus
Adresa
DataNasterii
Reprezentant Vanzări
…………..
Zonă vanzări
Bonus vanzari
34
Relații exclusive (obligatorii)
Relaţiile se pot exclude reciproc, adică dintr-un grup de relaţii, la un
moment dat doar una dintre ele poate avea loc.
Disciplina
Alege disciplina Facultativă
1
Student
CNP
………..
Disciplina
Facultativă
Alege disciplina n
36
Relații recursive
Fiecare angajat poate fi condus de către un
alt angajat
Condus….
/
Conduce…..
ANGAJAT
CNP
………..
37
Modelarea datelor istorice
ANGAJAT FIRME
CNP A lucrat la
CUI
……….. DataInceput
DataSfarsit
Salariu
38
Reguli asociate proprietăților (I)
Aceeași proprietate nu poate exista decât asociată unui singur
obiect, fie el entitate, fie asociere.
O proprietate trebuie să fie ELEMENTARĂ, atomică,
nedecompozabilă.
– Atomică =
Atunci când proprietatea este constituită dintr-o agregare de proprietăți
elementare;
Atunci când descompunerea lor nu mai prezintă interes informațional
Atunci când admite valori repetitive de tip listă;
De exemplu, relaţia :
Comenzi(NumărComandă, Data, Material1, Material2)
nu respectă FN1, deoarece conţine atribute repetitive.
1 - Prof.dr. Bogdan
IONESCU
Forma Normală 2:
FN2 : Pentru aducerea relaţiilor din FN1 în FN2, se parcurg
următoarele etape:
Se identifică eventualele dependenţe funcţionale parţiale
Fiecare dependenţă funcţională parţială va genera câte o
relaţie nouă. Relaţia nou formată va avea ca structură
atributele participante în dependenţa funcţională parţială.
PieseComandate(NumărComandă, CodPiesă,
Cantitate, PreţUnitar, DenumirePiesă)
FN3
MCD
O relaţie verifică FN3 dacă se află în
FN2 şi dacă toate atributele noncheie
sunt dependente funcţional netranzitiv
de cheia primară a relaţiei (toate
atributele care nu aparţin cheii primare MRD
să nu depindă funcţional de un alt
47atribut. FN3 47
Forma Normală 3:
NIVELUL LOGIC
– Este o reprezentarea a sistemului, utilă implementării într-o
bază de date pe calculator.
– Nu trebuie confundat modelul conceptual (de exemplu E-A)
cu modelul logic (de exemplu, relațional)
– Nu trebuie confundat modelul logic (de exemplu, relațional),
cu implementarea sa fizică pe calculator (cu un SGBD, de
exemplu Access)
50
Demersul conceperii unei baze de date prin
metoda E-A
1. Identificarea entităților cele mai expresive, naturale
(subiecte, complemente)
2. Identificarea asocierilor între entități (verbe care nu
reprezintă dependențe funcționale.
3. Identificarea atributelor și identificatorilor entităților și
asocierilor (complemente ale verbelor ce exprimă
dependențe funcționale).
4. Identificarea și formalizarea cardinalităților și a
rolurilor (se face distincție între singular și plural)
5. Enumerarea restricțiilor de integritate.
51
Reprezentare
FACTURI PRODUSE
IdFactura 1,n Linie 1,n IdProdus
Factura
Data Factura NumeProdus
NrZileGr Cantitate PretUnitar
……. Discount ……..
Conversie
Reprezentare
Implementare
52
Modele de date: modelul RELAŢIONAL
Relaţii
R1(A1,B1,C1,D1,A2) R2(A2,B2,C2,D2)
Cheie externă
Chei primare
1 - Prof.dr. Bogdan
IONESCU
Modele de date: modelul RELAŢIONAL
Relaţii
R1(A1,B1,C1,D1,A2) R2(A2,B2,C2,D2)
Factura Clienţi
Nr_factură
Chei primare Cod_client
Data_factură Nume_client
Data_scadenţă Adresă
Cod_client Localitate
Cheie externă
Factura(Nr.Factura,Data_f,Data_s,Cod client)
58
Reguli de trecere de la MCD, la MRD
REGULA 2 : O asociere de dimensiune 2 cu
cardinalitate 1,1 se rescrie astfel :
se aduce în relația ”fiu” cheia primară a relației
”mamă” (altfel spus, …..
Atributul astfel adăugat se numește cheie externă.
CLIENTI
1,n Emite 1,1 FACTURI
IdClient NrFactura
……. ……..
IdClient
Reguli de trecere de la MCD, la MRD
60
Reguli de trecere de la MCD, la MRD
REGULA 4 : O asociere de dimensiune mai mare ca 2 se
rescrie urmând postularea regulii 3
MEDIC ActMedical
Marcă 1,n 1,1 NrConsultație
Nume Practică DataConsult
Specialitate ……..
…….
1,n
PACIENT
Nr.Card.Sanatate
……..
MEDIC(MarcăMedic, Nume, ...)
ActMedical(NrConsultatie, DataConsultatie, ….)
PACIENT(NrCardSanatate, NumePacient,…..)
PRACTICĂ(MarcăMedic,
61 NrConsultație, NrCardSanatate,
EXEMPLUL ”Editură” prin E-A
Reguli de gestiune:
a. Editura produce mai multe cărţi anual;
b. O carte primeşte un Cod ISBN la fiecare retipărire;
c. Cărţile sunt scrise de către autori. Un autor poate scrie mai multe
cărţi;
d. Clienţii editurii sunt numai persoane juridice;
e. O factură conţine cel puţin o carte şi o carte poate figura pe mai
multe facturi;
f. Preţul de vânzare se stabileşte în momentul producerii unei cărţi,
acesta fiind un preţ orientativ, rămânând neschimbat până la
epuizarea tirajului, preţul efectiv de vânzare fiind negociat cu
fiecare client;
g. Cărţile sunt facturate clienţilor (distribuitorilor en-gross, şi
comercianţilor individuali). Numărul unei facturi şi codul ISBN
sunt unice la nivel naţional;
h. Numele unei persoane juridice este considerat unic la nivel
1 - Prof.dr. Bogdan
naţional. IONESCU
EXEMPLUL ”Editură” prin E-A
CĂRŢI ? AUTORI
Cod ISBN CNP autor
......... .........
?
CLIENŢI FACTURI
IdClient Nr Factură
......... ......... 1 - Prof.dr. Bogdan
IONESCU
EXEMPLUL ”Editură” prin E-A
CLIENȚI(IdClient, NumeClient,……………………………..)
IdClient
FACTURI(NrFactura, DataFactura,………………………..)
1 - Prof.dr. Bogdan
IONESCU
CĂRŢI
Cod ISBN
EXEMPLUL ”Editură” prin E-A
.........
?
FACTURI
Nr Factură
.........
CĂRŢI ? AUTORI
Cod ISBN CNP autor
......... .........
CNP Number,LI Da Da
AUTORI-CĂRŢI
Nume camp Tip date Obligatoriu Unic Integritate Reguli de validare
Referentiala
CNP Number,LI Da Da
CĂRŢI CONŢINUT
Nume camp Tip date Obligatoriu Unic Integritate Reguli de
Referentiala validare FACTURĂ
Cod ISBN Text, 13,M Da Da
........
Denumire carte Text, 50 Da
Cod ISBN
Data aparitiei Date/Time Da <=Data curenta
CONŢINUT FACTURĂ
Nume camp Tip date Obligatoriu Unic Integritate Reguli de validare
Referentiala
Serie factura Text,5,M Da Da Da
CLIENŢI
Nume camp Tip date Obligatoriu Unic Integritate Reguli de validare
Referentiala
Cod fiscal Number, LI Da Da
APROVIZIONAREA (I)
Editura comandă tirajul fiecărei apariții editoriale ce urmează a fi tipărit
la o tipografie (ce are in acest exemplu calitatea de FURNIZOR).
Aceasta livrează cărți editurii, care atunci când le recepționează
întocmește Nota de Recepție și Constatare de Diferențe (NRCD).
NRCD
FURNIZORI
CodFiscalFz
1,n 1,1 Nr.NRCD
Emite …
..Este emis
CĂRȚI GENURI
CodISBN 1,1 Aparține genului
1,n CodGenLiterar
literar
1,1
Aparține
domenilor
Are
COLECTII (CodColectie, Nume Colectie, Cod Domeniu )
1,n
DOMENII
DOMENII (Cod Domeniu, Nume Domeniu) CodDomeniu
CĂRȚI COORDONATORI
CodISBN 0,n Sunt coordonate
1,n CNPCoordonator
Coordonează
COORDONATORI_CARTI(Cod_ISBN, CNPCoordonator)
CARTI(Cod_ISBN, ……….)
CONTRIBUTIA AUTORILOR LA OPERA (I)
Cărțile au mai multe capitole si sectiuni. Se defineste o sectiune ca fiind
un interval de pagini ce constituie o contributie cuantificabila a unui
autor. Un capitol poate avea mai multe sectiuni. Un autor poate scrie
intervale de pagini in cadrul unuia sau a mai multe capitole. Numarul de
pagini scrise reprezintă procent din opera si este important pentru
calculul drepturilor de autor.
CARTI(Cod_ISBN, …….)
CONTRIBUTIA AUTORILOR LA OPERA (II)
b) Fiecare autor isi identifică contributia sub forma unui interval de
pagini, fie la nivel de capitol (ar mai interveni inca o tabela si ar fi de
exemplu : cap IV Ionescu pag 45-56; 73-80; Stanciu pag 23-37, etc), fie la
nivel de opera.
CONTRACT_EDITARE(Nr.ContractEditare, DataContractEditare,
ProcentDrepturiAutor , Cod_ISBN)
COORDONATORI_CARTI(Nr.ContractEditare, CNPCoordonator)
TIP_DOCUMENT_INCASARE(Id_TipDoc_Incasare, Nume_Doc_Incasare)
1
Reguli de gestiune:
a. Editura produce mai multe cărţi anual;
b. O carte primeşte un Cod ISBN la fiecare retipărire;
c. Cărţile sunt scrise de către autori. Un autor poate scrie mai multe
cărţi;
d. Clienţii editurii sunt numai persoane juridice;
e. O factură conţine cel puţin o carte şi o carte poate figura pe mai
multe facturi;
f. Preţul de vânzare se stabileşte în momentul producerii unei cărţi,
acesta fiind un preţ orientativ, rămânând neschimbat până la
epuizarea tirajului, preţul efectiv de vânzare fiind negociat cu
fiecare client;
g. Cărţile sunt facturate clienţilor (distribuitorilor en-gross, şi
comercianţilor individuali). Numărul unei facturi şi codul ISBN
sunt unice la nivel naţional;
h. Numele unei persoane juridice este considerat unic la nivel
naţional.
1 - Prof.dr. Bogdan
IONESCU
EXEMPLUL ”Editură” prin E-A
CĂRTI( )
AUTORI( )
CLIENȚI( )
FACTURI( )
CĂRŢI ? AUTORI
......... .........
?
CLIENŢI FACTURI
CLIENȚI(…………………………………………………..…..)
FACTURI(……………………………………………………..)
1 - Prof.dr. Bogdan
IONESCU
CĂRŢI
Cod ISBN
EXEMPLUL ”Editură” prin E-A
.........
?
FACTURI
Nr Factură
.........
CĂRŢI FACTURI
Cod ISBN
Nr Factură
.........
.........
_______________ (……………………………………………..)
1 - Prof.dr. Bogdan
IONESCU
EXEMPLUL ”Editură” prin E-A
CĂRŢI ? AUTORI
Cod ISBN CNP autor
......... .........
____________________ (………………………………………..)
1 - Prof.dr. Bogdan
IONESCU
AUTORI
Nume camp Tip date Obligatoriu Unic Integritate Reguli de
Referentiala validare
CNP Number,LI Da Da
AUTORI-CĂRŢI
Nume camp Tip date Obligatoriu Unic Integritate Reguli de validare
Referentiala
CNP Number,LI Da Da
CĂRŢI CONŢINUT
Nume camp Tip date Obligatoriu Unic Integritate Reguli de
Referentiala validare FACTURĂ
Cod ISBN Text, 13,M Da Da
........
Denumire carte Text, 50 Da
Cod ISBN
Data aparitiei Date/Time Da <=Data curenta
CONŢINUT FACTURĂ
Nume camp Tip date Obligatoriu Unic Integritate Reguli de validare
Referentiala
Serie factura Text,5,M Da Da Da
CLIENŢI
Nume camp Tip date Obligatoriu Unic Integritate Reguli de validare
Referentiala
Cod fiscal Number, LI Da Da
APROVIZIONAREA (I)
Editura comandă tirajul fiecărei apariții editoriale ce urmează a fi tipărit
la o tipografie (ce are in acest exemplu calitatea de FURNIZOR).
Aceasta livrează cărți editurii, care atunci când le recepționează
întocmește Nota de Recepție și Constatare de Diferențe (NRCD).
FURNIZORI(……………………………………………………………………………………...)
NRCD(……………………………………………………………………………………………….)
⚫ APROVIZIONAREA (II)
NRCD(………………………………………………………………………………………………)
_________________(……………………………………………………………………………
……………………………………………………………………………………………………………)
CARTI(……………………………………………………………………………………………….)
1 - Prof.dr. Bogdan IONESCU
GENURI, COLECTII si DOMENII (I)
Editura are ca obiect de activitate editarea de carti si manuale
universitare. Cărțile editate sunt împărțite pe tipuri sau genuri (manual,
culegere, carte specialitate, etc.). Aceste tipuri sunt utile editurii, la
acreditari si in relațiile cu Biblioteca Națională.
GENURI (………………………………………………………………………………………)
CARTI(………………………………………………………………………………………….)
GENURI, COLECTII si DOMENII (II)
Cartile apartin unor colectii tematice (InfoBD, InfoProg, ContaGen), iar
colectiile apartin unui domeniu științific (sau de interes didactic), cum ar
fi : Analiza economica, Audit, Contabilitate, Informatica, Finante,
Management, Marketing, etc.
CĂRȚI
CodISBN
COLECTII (……………………………………………………………………………………….)
DOMENII
(……………………………………………………………………………..…………)
CARTI(Cod_ISBN, ………….., CodGenLiterar, …………………………..…..)
COORDONATORI
Cartile pot avea unul sau mai multi coordonatori.
Coordonatorii reprezintă autorii unei aparitii editoriale in raporturile
juridice cu editura. Coordonatorii pot fi sau nu, autori.
CĂRȚI
CodISBN
COORDONATORI(…………………………………………………………………………)
____________________(………………………………………………………………..)
CARTI(Cod_ISBN, …………………………………………………………………………..)
CONTRIBUTIA AUTORILOR LA OPERA (I)
Cărțile au mai multe capitole si sectiuni. Se defineste o sectiune ca fiind
un interval de pagini ce constituie o contributie cuantificabila a unui
autor. Un capitol poate avea mai multe sectiuni. Un autor poate scrie
intervale de pagini in cadrul unuia sau a mai multe capitole. Numarul de
pagini scrise reprezintă procent din opera si este important pentru
calculul drepturilor de autor.
____________________(……………………………………………………………………)
CARTI(Cod_ISBN, …….)
CONTRIBUTIA AUTORILOR LA OPERA (II)
b) Fiecare autor isi identifică contributia sub forma unui interval de
pagini, fie la nivel de capitol (ar mai interveni inca o tabela si ar fi de
exemplu : cap IV Ionescu pag 45-56; 73-80; Stanciu pag 23-37, etc), fie la
nivel de opera.
_____________________(……………………………………………………………………
…………………………………………….., Pag.Inceput, Pag.Sfarsit)
DREPTURI AUTOR (I)
CONTRACT_EDITARE(Nr.ContractEditare, DataContractEditare,
ProcentDrepturiAutor , ……………………………..)
______________________(……………………………………………………………..)
TIP_DOCUMENT_INCASARE(Id_TipDoc_Incasare, Nume_Doc_Incasare)
________________________(…………………………………………………..,
DataIncasarii, SumaIncasata)
Evaluare
Nota finală = 70% notă examen+30% notă seminar
Notă seminar = 50% interacțiuni, teme, proiecte și 50% test practic(în ultimele
două săptămâni)
MICROSOFT ACCESS INTRODUCERE
-sistem de gestionare a bazelor de date (SGBD) de la Microsoft;
- combină relaționalul cu o interfață grafică de utilizator și instrumente de dezvoltare software;
-soluție profesională cu automatizare avansată, validare a datelor , captarea erorilor și asistență pentru
mai mulți utilizatori (VBA);
-compatibilitatea relativă cu SQL ( limbaj de interogare structurat ) - cererile pot fi vizualizate grafic
sau editate ca instrucțiuni SQL;
-Folosit pentru crearea de tabele, interogări, formulare și rapoarte,
MICROSOFT ACCESS INTRODUCERE
Bază de
date de
utilizat
pentru
seminar
MICROSOFT ACCESS INTRODUCERE
MICROSOFT ACCESS INTRODUCERE
MICROSOFT ACCESS INTRODUCERE
MICROSOFT ACCESS APLICAȚII PRACTICE
1. Crearea unui nou tabel numit Veterinari, care va conține: CNP, nume, prenume, specialitate,
data naștere, număr licență și număr de telefon;
2. Adăugarea de date în tabelul Veterinari;
3. Sortarea datelor din tabelul Pets după specie și rasă;
4. Crearea unui nou tabel numit Proceduri, care va conține codul procedurii, denumirea și
tariful.
Baze de date financiar-bancare
Evaluare
Nota finală = 70% notă examen+30% notă seminar
Notă seminar = 50% interacțiuni, teme, proiecte și 50% test practic(în ultimele
două săptămâni)
MICROSOFT ACCESS INTRODUCERE
-sistem de gestionare a bazelor de date (SGBD) de la Microsoft;
- combină relaționalul cu o interfață grafică de utilizator și instrumente de dezvoltare software;
-soluție profesională cu automatizare avansată, validare a datelor , captarea erorilor și asistență pentru
mai mulți utilizatori (VBA);
-compatibilitatea relativă cu SQL ( limbaj de interogare structurat ) - cererile pot fi vizualizate grafic
sau editate ca instrucțiuni SQL;
-Folosit pentru crearea de tabele, interogări, formulare și rapoarte,
MICROSOFT ACCESS INTRODUCERE
Bază de
date de
utilizat
pentru
seminar
MICROSOFT ACCESS INTRODUCERE
MICROSOFT ACCESS INTRODUCERE
MICROSOFT ACCESS INTRODUCERE
MICROSOFT ACCESS APLICAȚII PRACTICE
1. Crearea unui nou tabel numit Veterinari, care va conține: CNP, nume, prenume, specialitate,
data naștere, număr licență și număr de telefon;
2. Adăugarea de date în tabelul Veterinari;
3. Sortarea datelor din tabelul Pets după specie și rasă;
4. Crearea unui nou tabel numit Proceduri, care va conține codul procedurii, denumirea și
tariful.
Baze de date financiar-bancare
A S I S T E N T U N I V. D R . S Î N Z I A N A R Î N D A Ș U SINZIANA.RINDASU@CIG.ASE.RO
Aplicația practică 4
Compania Projects, specializată în domeniul managementul proiectelor, desfășoară activități pentru diferiți clienți persoane juridice.
Compania dorește informatizarea proceselor pentru gestiune proiectelor.
În vederea realizării sistemului informatic de gestiune pentru Project se rețin următoarele informații:
Compania oferă clienților servicii care au la bază contracte încheiate. Pentru clienți se rețin următoarele date: CUI, denumire, persoană de
contact, adresă, email și număr de telefon. Fiecare contract are un număr unic și se rețin informații despre data contractului, iar un contract
poate viza mai multe proiecte. Pentru proiecte se rețin următoarele informații: identificator unic de proiect, domeniul de activitate (producție
sau servicii), statusul (în derulare, finalizat sau achitat).
În cadrul proiectelor lucrează specialiști. Pentru aceștia se rețin următoarele date: CNP, nume complet, adresa și telefon și tariful orar, care
nu poate să fie mai mare de 500 de lei. Se dorește ca pentru fiecare angajat să se rețină nr de ore lucrate în cadrul fiecărui proiect.
Pentru fiecare proiect finalizat departamentul contabil emite o factură care conține următoarele informații: număr factură, data factură și
data scadentă.
Facturile sunt apoi plătite de către clienți și departamentul contabil înregistrează încasările. Încasările se realizează prin transfer bancar și se
rețin următoarele informații: id plată și data plată – o plată este efectuată pentru o singură factură și va acoperi în totalitate valoarea acesteia.
A S I S T E N T U N I V. D R . S Î N Z I A N A R Î N D A Ș U SINZIANA.RINDASU@CIG.ASE.RO
TIPURI DE DEPENDENȚE
1. DEPENDENȚE FUNCȚIONALE
CNP Nume de familie
IMEI Model telefon
VIN Model mașină
1.1 Dependență funcțională completă(elementară/totală/deplină)
(NrBon, CodProdus) Cantitatea
(MarcăStudent, IdMaterie) NotaExamen
1.2 Dependență funcțională parțială
(IdConsultație, IdMedic) IdPacient; IdConsultațieIdPacient;
IdMedicIdPacient
FN1
dacă toate atributele sale conțin numai valori (realizări) atomice (elementare sau indivizibile);
dacă nu conține grupuri repetitive de atribute;
Departament(Cod department, Denumire) Furnizori(Cod furnizor, Nume, Țară, Oraș, District, Stradă, ... )
și
Angajat(IdAngajat, Nume, Prenume, CodDepartament)
FORMELE NORMALE
FN2
Dacă respectă FN1
Orice atribut noncheie se află în dependență funcțională completă față de cheia primară a relației.
Interzice existenta dependențelor funcționale parțiale între atributele cu rol de cheie primară şi celelalte
atribute.
A S I S T E N T U N I V. D R . S Î N Z I A N A R Î N D A Ș U SINZIANA.RINDASU@CIG.ASE.RO
TIPURI DE DEPENDENȚE
1. DEPENDENȚE FUNCȚIONALE
CNP Nume de familie
IMEI Model telefon
VIN Model mașină
1.1 Dependență funcțională completă(elementară/totală/deplină)
(NrBon, CodProdus) Cantitatea
(MarcăStudent, IdMaterie) NotaExamen
1.2 Dependență funcțională parțială
(IdConsultație, IdMedic) IdPacient; IdConsultațieIdPacient;
IdMedicIdPacient
FN1
dacă toate atributele sale conțin numai valori (realizări) atomice (elementare sau indivizibile);
dacă nu conține grupuri repetitive de atribute;
Departament(Cod department, Denumire) Furnizori(Cod furnizor, Nume, Țară, Oraș, District, Stradă, ... )
și
Angajat(IdAngajat, Nume, Prenume, CodDepartament)
FORMELE NORMALE
FN2
Dacă respectă FN1
Orice atribut noncheie se află în dependență funcțională completă față de cheia primară a relației.
Interzice existenta dependențelor funcționale parțiale între atributele cu rol de cheie primară şi celelalte
atribute.
A S I S T E N T U N I V. D R . S Î N Z I A N A R Î N D A Ș U SINZIANA.RINDASU@CIG.ASE.RO
TIPURI DE DEPENDENȚE
1. DEPENDENȚE FUNCȚIONALE
CNP Nume de familie
IMEI Model telefon
VIN Model mașină
1.1 Dependență funcțională completă(elementară/totală/deplină)
(NrBon, CodProdus) Cantitatea
(MarcăStudent, IdMaterie) NotaExamen
1.2 Dependență funcțională parțială
(IdConsultație, IdMedic) IdPacient; IdConsultațieIdPacient;
IdMedicIdPacient
FN1
dacă toate atributele sale conțin numai valori (realizări) atomice (elementare sau indivizibile);
dacă nu conține grupuri repetitive de atribute;
Departament(Cod department, Denumire) Furnizori(Cod furnizor, Nume, Țară, Oraș, District, Stradă, ... )
și
Angajat(IdAngajat, Nume, Prenume, CodDepartament)
FORMELE NORMALE
FN2
Dacă respectă FN1
Orice atribut noncheie se află în dependență funcțională completă față de cheia primară a relației.
Interzice existenta dependențelor funcționale parțiale între atributele cu rol de cheie primară şi celelalte
atribute.
A S I S T E N T U N I V. D R . S Î N Z I A N A R Î N D A Ș U SINZIANA.RINDASU@CIG.ASE.RO
Aplicația practică
Compania Depanero realizează reparații pentru electrocasnice.
Clienții companiei sunt persoane fizice, pentru care memorăm CNP, nume, prenume, numărul de telefon și adresa de email.
Clienții aduc în service produse electrocasnice, pentru care depanatorii alocă o etichetă, care va conține un număr unic. Se va
memora și tipul de electrocasnic și modelul.
Reparațiile sunt realizate de către depanatorii companiei, pentru care sistemul va reține marca de angajat, nume, prenume,
numărul de telefon, localitate, județ, strada și numărul.
La finalizarea unei reparații se va emite o factură pentru fiecare produs reparat, care va avea un număr și o dată de emitere, iar la
preluarea produsului clientul va face plata, pentru care se va reține numărul chitanței, data și suma.
Reguli de gestiune
Un produs poate fi reparat de mai mulți depanatori, iar sistemul va memora numărul de ore lucrate de fiecare depanator la
fiecare produs.
Un depanator poate repara mai multe produse.
Un client poate aduce mai multe produse, iar un produs aparține unui singur client
Pentru produs se va emite o singură factură, iar o factură vizează un singur produs.
Un client poate face mai multe plăți, o plată este făcută de un singur client.
O plată vizează o singură factură și va acoperi în totalitate suma de plată.
A S I S T E N T U N I V. D R . S Î N Z I A N A R Î N D A Ș U SINZIANA.RINDASU@CIG.ASE.RO
INTEROGĂRI – APLICAȚII
1. Realizați o interogare care să afișeze IdClient, numele complet și oraș.
2. Realizați o interogare care să afișeze codurile animalelor de companie, numele animalelor de companie și
numele posesorilor.
3. Realizați o interogare care să afișeze toate animalele de companie ale clientului Mikhail Wong.
4. Realizați o interogare care să afișeze toate animalele de companie din specia Feline.
5. Realizați o interogare care să afișeze toate animalele de companie ale unui client al cărui cod este introdus de
utilizator.
6. Realizați o interogare care să afișeze toate animalele de companie dintr-o rasă introdusă de utilizator.
7. Realizați o interogare care să afișeze toate datele veterinarilor care au specialitatea “Medicina preventiva”.
8. Realizați o interogare care să afișeze toate datele animalelor de companie al căror nume începe cu “C”.
9. Realizați o interogare care să afișeze vârsta în ani a fiecărui animal de companie.
10. Să se afișeze lista cu toate animalele din specia canine ale căror posesori sunt din București.
11. Să se afișeze lista cu toate animalele din specia feline ale căror posesori sunt din Ploiești.
12. Să se afișeze lista cu toate consultațiile efectuate în primul trimestru al anului 2021, împreună cu numele
veterinarului și al animalului de companie.
13. Realizați o interogare care să extragă numele și prenumele clienților din numele complet.
SGBD Access 2013:
Interogarea
bazelor de date
Exemple de interogari QBE
SELECŢIE;
CALCULE;
ACŢIUNE
3
Prof.dr. Bogdan Ionescu
“Se aplică o micșorare a tarifului de bază cu 5% pentru serviciile prestate in anul curent, pentru care este înregistrată
o valabilitate de ofertei mai mare de 3 luni”.
4
Prof.dr. Bogdan Ionescu
Se calculează un extradiscount sub forma unei reduceri comerciale acordate în plus, în valoare de 50% pentru o
diferență între Tarif bază și Tarif negociat, mai mare de 3%. Atributul calculat Discount acordat se calculează ca fiind
diferența între Tarif bază şi Tarif negociat.
Ʃ = 233
Gruparea datelor pe
clienți pentru fiecare
ofertă în parte. Ʃ = 233