- BD
MODELUL LOGIC
Nivel conceptual →nivel logic;
3 modele
MODEL RELATIONAL
'70 E.F.Codd - Laboratoarele IBM, San Jose, Clifornia: Teoria informatiei + teoria naiva a multimilor (10 ani SystemR).
80-90% relationale - motiv: operatii complexe - simplu, declarativ, neprocedural → implementare simpla a modelului conceptual.
Caracteristici:
Elemente de teoria naiva a multimilor din modelul relational
Domeniu - multimea valorilor cu care se opereaza.
Produs cartezian al unui ansamblu de domenii: D1, D2, ., Dn, multimea ansamblurilor ordonate de forma: <d1, d2, ., dn> cu proprietatea
se noteaza
Exemplu: n=2, D1=, D2 =
Relatie - submultime a produsului cartezian .
Exemplu: R=
Membrii unei relatii - tuple
Observatii.
Atribut - coloana din tabel; pentru simplificare
atribut = nume atribut.
Schema relationala - multimea atributelor din relatie.
Descrireile relatiilor
REL (A1, A2,., An) - Ai - atribute: intensia/extensia
Exemplu:
ORASE |
STATE |
POPULATIE |
SAN DIEGO MIAMI PITSBURG BUFFALO |
TEXAS OKLAHOMA IOWA WASHINGTON |
ORASE_SUA (ORASE, STATE, POPULATIE)
(BUFFALO, WASHINGTON, 831) se descrie:
μ(ORASE) = 'BUFFALO'
μ(STATE) = 'WASHINGTON'
μ(POPULATIE) = 831
Observatii.
(STATE, POPULATIE, ORASE) - (ORASE, POPULATIE, STATE)
submultimi ale produsului cartezian - ordinea conteaza.
Functie ordinea nu conteaza:
μ(POPULATIE) = 831
μ(ORASE) = 'BUFFALO'
μ(STATE) = 'WASHINGTON'
Transformarea modelului conceptual in model logic
Exemplu: Modelul E-R a firmei cu simplificari pentru identificarea mai usoara a obiectelor:
Modelul conceptual - se descrie cu un ansamblu de scheme relationale. Ansamblul schemelor relationale formeaza - schema bazei de date sau mai exact - schema relationala a bazei de date.
Instantierea schemelor BD va forma BD (extensia BD).
Modelul E-R s-a subliniat 2 tipuri de entitati:
statice - relatii intre obiecte
dinamice - relatii intre entitati.
Entitatile statice - atributele se preiau direct de la obiectele componente ale entitatii. Exemplu: Schema relationala CLIENT va avea atributele (CNUME, CADRESA) preluate din entitate.
Pentru identificarea unei scheme relationale ca la entitati - chei. In schema relationala cheie = ansamblu de atribute. Exemplu DEPARTAMENT are cheia NR_DEP.
Cheie straina - cheie din alta schema relationala. Exemplu: MANAGER nu are cheie → ANUME (NUJMESAL - cheie straina).
Cheie surogat - Exemplu MARCA - unei persoane)
Observatie. In cazul entitatii dinamice care leaga entitatile (E1, E2,., En):
schema relationala se obtine prin reuniunea tuturor schemelor relationale; daca 2 sau mai multe atribute au acelasi nume se schimba numele;
tuplele schemei obtinute vor fi formate din tuplele tuturor schemelor relationale care compun noua schema.
Exemplu.
ANGAJAT (MARCA, ANUME, SALAR)
MANAGER (ANUME)
DEPARTAMENT (DNUME, NR_DEP)
FURNIZOR(FNUME, FADRESA)
PRODUS (PNUME, PRODUS#)
CERERE(C#, DATA)
CLIENT (CNUME, CADRESA, BALANTA)
In entitatile dinamice se preiau perechi de entitati statice:
LUCREAZA_IN (ANUME, DNUME)
CONDUCE (ANUME, DNUME)
LIVREAZA (PNUME, DNUME)
FURNIZEAZA(FNUME, PNUME, PRET)
INCLUDE(C#, PRODUS#,CANTITATE)
VANDUT(C#, CANTITATE)
Observatie. Ca in cazul schemelor relationale → entitatilor statice - cheia relatiei => 2 conditii pentru cheie:
nu exista 2 instantieri din relatie cu aceeasi valoare a cheii
nici o submultime care formeaza cheia nu satisface prima conditie.
Exemplu: LIVREAZA( PNUME, FNUME)
LIVREAZA( MERE, IONESCU)
LIVREAZA( PERE, IONESCU)
LIVREAZA( MERE, POPESCU)
Se alege cheia pentru LIVREAZA perechea (PNUME, FNUME)
Observatii legate de transcrierea relatiilor.
Exemplu: CONDUCE, cheia primara (ANUME, DNUME). Daca managerii au nume diferite se poate folosi cheia primara ANUME.
Exemplu:
DEPARTAMENT: DNUME | NRDEP
CEREALE | 12
LACTATE | 31
CARNE | 5
CONDUCE: ANUME | DNUME
IONESCU | CEREALE
POPESCU | LACTATE
GEORGESCU | CARNE
=>
DNUME | NRDEP | ANUME
CEREALE | 12 | IONESCU
LACTATE | 31 | POPESCU
CARNE | 5 | GEORGESCU
Dangling relations - DNUME exista in ambele relatii. Ce se intampla daca exista departament fara sef sau invers, sef de departament care n-are departament? → tuple cu valori necunoscute. => 2 metode de rezolvare:
Prin restrictia existentiala - Daca o valoare a tributului A al unui tuplu din relatia R trebuie sa intre in relatie cu un atribut B din relatia S, valoarea a trebuie sa existe in atributul B.
a. avantaj - metoda de securitate - legaturi false. Exemplu: parinte - copil.
b. dezavantaj - se poate restrange domeniul de aplicabilitate a BD - se elimina anumite tuple care ar trebui formate.
Folosirea valorii nule - ┴ - reprezinta nici o valoare - nu poate intra in cheia primara.
Exemplu. DEPARTAMENT: DNUME | NRDEP | MANAGER
VINURI | 16 | ┴
Observatie. Se poate trage concluzia ca din cele 13 relatii legand dupa principiile de mai sus se poate obtine urmatoarea simplificare a BD:
ANGAJAT (MARCA, ANUME, SALAR)
MANAGER (ANUME)
DEPARTAMENT (DNUME, NR_DEP)
FURNIZOR(FNUME, FADRESA)
PRODUS (PNUME, PRODUS#)
CERERE(C#, DATA, CNUME)
CLIENT (CNUME, CADRESA, BALANTA)
LUCREAZA_IN (ANUME, DNUME)
CONDUCE (ANUME, DNUME)
LIVREAZA (PNUME, DNUME)
FURNIZEAZA(FNUME, PNUME, PRET)
INCLUDE(C#, PRODUS#,CANTITATE)
VANDUT(C#, CANTITATE)
ANGAJAT (MARCA, ANUME, SALARIU, DNUME)
DEPARTAMENT (NR-DEP, DNUME, NRDEP, ANUME)
FURNIZOR (FNUME, FADRESA)
PRODUS (PNUME, PRODUS#, DNUME)
CERERE(C#, DATA, CNUME)
CLIENT (CNUME, CADRESA, BALANTA)
FURNIZOR (FNUME, PNUME, PRET)
INCLUDE (C#, PRODUS#, CANTITATE)
VANDUT (C#, CANTITATE)
OPERATIILE ALGEBREI RELATIONALE
AR - are la baza teoria naiva a multimilor + operatii specifice.
5 operatii fundamentale (de baza):
Notatie , PROJECT(R,S)
Exemplu: R(a,b,c,d,e) - cum se proiecteaza pe c,a?
Selectia lui (prin) F aplicat lui R, notat cu, σF ( R), o noua relatie cu tuplele pentru care valoarea lui F este adevarata - RESTRICT(R,S).
Exemple.
R:
A |
B |
C |
a d c |
b a b |
c f d |
S:
D |
E |
F |
b d |
g a |
a f |
RUS
R-S
σB=b(R)
R x S
Operatii auxiliare din algebra relationala
Operatii de baza: reuniunea, diferenta, produs cartezian, proiectie, selectie
Rolul operatiilor auxiliare
RS = R-(R-S)
RS = S-(S-R)
→ nu este operatie de baza se exprima prin -
Grafic:
Q =
Exprimarea cu diferenta si proiectia:
Exemplu: R(4)
a a b e e a |
b b c d d b |
c e e c e d |
d f f d f e |
S(2):
c e |
d f |
S(2)
a e |
b d |
Notatie:
o Calificare multiatribut: R(A1, A2, . , An), S(B1, B2, . , Bm) si predicatul Q= Ai1 θ Bk1 . Aim θ Bkm, unde θ - operator de comparator de comparatie: =, >,<.>=,<=,<>
Teta join - Notatie:
JOIN (R,S,Q)
R x S [Q]
Observatie. JOIN = produs cartezian, proiectia pe atribute comune selectia tuplelor conform predicatului
Exemplu: Informatii despre CONTRACTANT (cod, banca) si obiectivele de investitii PROIECT (denumire, numar certificate de urbanizare) cu conditia ca sa nu fie la aceeasi adresa:
R = PROJECT (CONTRACTANT, cod, banca)
S = PROJECT(OBIECTIV_INVESTITIE, denumire, nr_cert_urb)
Rezultrat =
JOIN (R,S,OBIECT_INVESTITIE.sdresa<>CONTRACT.adresa).
o Join Natural θ este operatorul = echijoin. Join natural: asocierea atributelor cu acelasi nume:
R x S
Se proiecteaza coloanele comune, R.A si S.A si se noteaza coloana comuna cu A
Notatie JOIN(R,S)
Exemplu: Informatii despre angajati si departamente
Rezultat = Join (SALARIAT, DEPARTAMENT)
o Semijoin. Proiectia JOIN pe atributele lui R(A1, A2, . , An) al JOIN.
Antisimetria.
Exemplu: PERSOANA_FIZICA (nume, nr_buletin) care investesc in agrement
OB_INVEST(denumire, adresa, valoarea)
R=(SELECT(OB_INVEST, denumire='cabana' OR denumire='casa vacanta')
S= PROJECT(JOIN(PERS_FIZICA,R), nume,nr_buletin)
o OuterJoin (Join extern): JOIN + tupluri care n-au corespondent completate cu NULL.
Outer stanga / dreapta - nesimetrica
Exemplu: Investitori inclusiv in activitati agrement
R=(SELECT(OB_INVEST, denumire='cabana' OR denumire='casa vacanta')
Rezultat=OUTER(PERSOANA_FIZICA, R)
Expresiile algebrei relationale: (relatii legate de operatii relationale)
Reprezentare grafica - arborele expresiei - arborele algebric. Rezultatul evaluarii expresiei → relatie. Relatii echivalente - acelasi rezultat.
Exemplu:
VIN (NV, PODGORIE, PRODUCTIE, ALCOOL)
CONSUMATOR (NC, NUME, ADRESA)
ABUZ (NC, NV, CANTITATE)
unde
NV - codul vinului
PRODUCTIE - anul productiei
NC - codul consumatorului (CNP sau numar de carte de identitate)
Numele consumatorului & adresa - care a baut mai mult de 10 sticle de Murfatlar din 2000 si gradul de alcool a vin-ului baut?
PROJ(NUME, ADRESA)
JOIN(, CONSUMATOR, NC)
PROJ(NC) CONSUMATOR(.)
JOIN (ABUZ, VIN, NV)
SELECT(ABUZ, SELECT(VIN,PODGORIE ="MURFATLAR" & CANTITATE>10) PRODUCTIE=2000)
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 |