0% au considerat acest document util (0 voturi)
15 vizualizări67 pagini

02 Modelul Relational

Documentul prezintă noțiuni de bază ale modelului relațional de date, inclusiv structura, restricții și reguli. De asemenea, introduce conceptul de cheie primară și alte tipuri de restricții care asigură integritatea datelor.

Încărcat de

Cosmin Minea
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PPTX, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
15 vizualizări67 pagini

02 Modelul Relational

Documentul prezintă noțiuni de bază ale modelului relațional de date, inclusiv structura, restricții și reguli. De asemenea, introduce conceptul de cheie primară și alte tipuri de restricții care asigură integritatea datelor.

Încărcat de

Cosmin Minea
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PPTX, PDF, TXT sau citiți online pe Scribd

Universitatea Al.I.

Cuza Iai
Facultatea de Economie i Administrarea Afacerilor
Departamentul de Contabilitate, Informatic economic i
Statistic

MODELUL
RELAIONAL
Noiuni, restricii,
schem, coninut
Marin Fotache
Tutoriale video
02a Modelul relaional - structur
https://
[Link]/v/s!AgPvmBEDzTOSwQy760GNPzWQSHOk
02b Lucru cu PostgreSQL. Modelul relaional
restricia de domeniu
https://
[Link]/v/s!AgPvmBEDzTOSwQt8GPGVvFTm93U7
02cModelul relaional - restricii de domeniu,
nenulitate, unicitate
[Link]
02d Modelul relaional - restricia referenial
[Link]
02e Modelul relaional reguli de validare,
Fondator
Edgar F. Codd (1923-2003)
Matematician
Angajat al IBM
1969: raport intern IBM
1970: un articol celebru publicat n
Communications of the ACM
[Link]
pdf
Criticmodelul ierarhic i propune un
model de date fundamentat matematic,
bazat pe logica predicatelor
Trei piloni ai unui model de
date

Structur (din ce este alctuit o


BD)
Integritate (ce restricii pot fi
definite pentru a asigura un ct mai
mare grad de corectitudine a
datelor din BD)
Manipulare (cum puteam actualiza
i stoarce de informaii o BD)
Structura (obiectele) unei
BDR
Noiuni ale modelului relaional:
Tabele (relaii)
Atribute (coloane sau cmpuri)
Linii (tupluri sau nregistrri)
Restricii (constrngeri) vezi integritatea BD

Alte obiecte ce in de implementarea BD:


Tabele virtuale (view-uri)
Proceduri stocate, inclusiv declanatoare
Indeci
Reguli, etc.
Schema (parial) i
coninutul unei relaii/tabele
Tupluri, tupluri... - 1
O linie (tuplu) este, d.p.d.v. matematic, o
relaie ntre clase de valori
O relaie (tabel) poate avea, n orice
moment, oricte tupluri (linii)

Tuplul
de mai sus aparine tabelei CLIENI i
se refer la unul dintre clienii firmei
(Modern SRL)
Tupluri, tupluri... - 2
D.p.d.v. matematic, tuplul corespunztor
clientului Modern SRL este o relaie ntre
patru valori (vi) extrase din patru clase de
valori (domenii Di)
un domeniu asociat codului intern atribuit fiecrui client
D1
un domeniu asociat numelor firmelor-client D2
un domeniu asociat asociat adreselor (sediilor) clienilor
D3
un domeniu asociat codurilor potale (ale sediilor
clienilor) D4
(v1 , v 2 , v 3 , v 4 ) unde
v1 D1 , v 2 D 2 , v 3 D 3 , v 4 D 4
Atribute & domenii - 1
Ansamblul valorilor de acelai tip
corespunde unui atribut
Pentru fiecare atribut intereseaz:
numele
domeniul

Un domeniu este un ansamblu valorilor


acceptate (autorizate)
Domenii largi, [Link] adreselor potale
Domenii nguste, ex. domeniul sexului, care are doar
dou valori, M (masculin) i F (feminin)
Atribute & domenii - 2
O tabel poate avea oricte atribute
n practic, n BD diferite pot exista
tabele cu nume identice i cu numr de
atribute complet diferit. De ex. tabela
COMENZI, pentru:
O pizzerie
Un dealer auto
En-grossist de materiale de construcii
O firm de mobil
Un hotel
O sal de conferine
Prima definiie (ca predicat) a
unei relaii
A doua definiie (ca set de
nregistrri) a unei relaii
Valori nule
CLIENI2

Valori Valoare inexistent


necunoscute Clientul 6 SA nu are telefon fix
instalat (i nici mobil)
Tabele (cu atribute) ale bazei
de date VNZRI
Reguli privitoare la relaii
(tabele) (Connoly&Begg 2004)
n cadrul unei baze de date, o relaie
prezint un nume distinct de al
celorlalte relaii
Valoarea unui atribut ntr-un tuplu este
atomic (simpl, elementar)
Fiecare atribut are un nume distinct
Orice valoare a unui atribut face parte
din domeniul pe care a fost definit
acesta
Ordinea dispunerii atributelor i
tuplurilor nu influeneaz coninutul
Vizualizarea obiectelor BD
n

O
r
a
c
l
e
Obiect
e ale
unei
BD n
PostgreSQL
Integritatea unei BD - 1

O BD conine informaii despre procese,


tranzacii, operaiuni (etc.) economice (i
nu numai)
n BD informaiile ar trebui s fie exacte
sau ct mai apropiate de realitate
Din pcate, corectitutinea nu poate fi
asigurat 100% dect n foarte puine
situaii
Mecanismul de integritate diminueaz
numrul de erori din coninutul BD
Integritatea unei BD - 2
Ex. de erori evitabile:
dou persoane cu o aceai valoare a
atributului CNP
doi sau mai muli studeni cu matricol
identic
existena n BD a unui student cruia s nu i
se cunoasc numele
studeni care s apar nscrii n anul 7 de
studii
existena vreunei note pentru un student
inexistent
...
Integritatea unei BD - 3
Mecanismul de integritate al BD este un
ansamblu de restricii care, odat declarate
(i implementate), sunt supravegheate
automat de ctre SGBD
La nclcarea unei restricii, SGBD-ul ip
i blochez inserarea, modificarea sau
tergerea (care a generat nclcarea)
n BD pentru termenul nclcare se
folosete cuvntul violare (modest omagiu
adus tirilor de la ora 17:00)
Mecanisme de asigurare a
integritii unei BD
Restricii (Constraints - vezi slide-urile
urmtoare) tratate n acest curs
mecanism pur declarativ
Declanatoare (Triggers) subiect abordat
n discipline ale masterului Sisteme
informaionale pentru afaceri mecanism
declarativ-procedural
Reguli (Business Rules) vezi mastere
SIA/SDBIS mecanism declarativo-
procedural
Tipuri de restricii de
proiectare i implementare
ntr-o BD
De domeniu
Valori nenule
Atomicitate (neimplementabil direct, este
luat n considerare la proiectarea schemei
BD)
De unicitate (chei candidate)
cheie primar
chei alternative
Refereniale
De comportament (reguli definite la nivel de
atribut sau de nregistrare)
Restricii de domeniu
Se pot declara:
Implicit, la crearea unei tabele, prin
tipurile standard asociate fiecrui
atribut: numr ntreg, numr real, ir de
caractere, dat calendaristic, interval
etc.
Explicit prin comenzi:
CREATE D O M AIN (implementat n
PostgreSQL)
CREATE TYPE (implementat n
PostgreSQL)
Dou domenii i o tabel
(n PostgreSQL)
CREATE D O M AIN dom CoduriPostale N U M ERIC(6)
CH EC K ( VALU E BETW EEN 100001 AN D
999999) ;

CREATE D O M AIN dom EM ailuriVARCH AR(100)


CH ECK (VALU E LIKE '% @ % .% ')

CREATE TABLE pers (


num e VARCH AR(50),
prenum e VARCH AR(50),
adresa VARCH AR(100),
codpost dom CoduriPostale,
nclcarea restriciei de
domeniu
(n PostgreSQL)
Valori nenule
Pentru atributele importante, trebuie
instituit obligativitatea valorilor nenule:
Matricol,
NumePrenume
NumrFactur
Clauza NOT NULL
Obligatorie pentru atributele din cheia
primar
nclcarea restriciei de
nenulitate
(n PostgreSQL)
Atomicitate
Este o restricie de proiectare a BD
Accepiunea clasic a atomicitii: valorile
tuturor atributelor trebuie s fie simple,
elementare (nici complicate/complexe
(imagini, clipuri video) i nici colecii/seturi)
A atras multe reprouri la adresa modelului
relaional (mai ales din direcia orientrii pe
obiecte)
Este alunecoas: o aceai valoare poate fi
considerat atomic, alteori neatomic !!!
Atomicitate ex.1

Pentru BD dedicat unei biblioteci


personale, toate valorile pot fi acceptate ca
atomice
Pentru BD unei biblioteci universitare
(cutri dup autori, subiecte...), valorile
atributelor Cote, Autori i CuvinteCheie sunt
Atomicitate ex.2
Atributul Adresa are componentele:
Strada
Nr
Bloc
Scar
Etaj
Apartament
CodPotal
Localitate
Jude
n unele situaii ex. BD FEAA, tabela
STUDENI, atributul Adresa este atomic
n alte situaii (ROMTELECOM, ROMGAZ)
Cum stabilim dac un
atribut este atomic sau nu
Numele unui atribut sugereaz destul de
bine dac atributul este atomic sau nu:
Atributul MatricolStudent este atomic
Atributul Student nu este atomic (un student are
un nume, un CNP, un matricol, este nscris la o
specializare, ntr-un an de studii)
NumeClient este atomic
Client nu !
Atributul Telefon (numrul) este atomic
Atributul Telefoane nu !
Problema identificrii

Cum difereniem:
O persoan de alta,
Un profesor de altul (toi sunt enervani!),
O carte de alt carte (asta chiar c nu v
intereseaz!),
O factur de alt factur ?
Oamenii fac diferenierea uneori
incontient, pe baza unei imagini de
ansamblu
Calculatoarele au nevoie de informaii
precise pentru a face identificarea
Identificatori

ntr-otabel (relaie) este interzis


existena a dou (sau mai multe) linii
(nregistrri) complet identice
Trebuie s existe un atribut (sau o
combinaie de atribute) ale crui valori nu
se repet pe alte linii, orict de mare ar fi
tabela (miliarde de nregistrri)
Dac o tabel nu are niciun identificator,
atunci trebuie reproiectat (de obicei i se
mai adaug cteva atribute) !
Cheia primar
Definiie: Atribut sau un grup de atribute
care identific fr ambiguitate fiecare
tuplu (linie) al relaiei (tabelei)
Cerine:
unicitate:
compoziie minimal
valori non-nule
Restricie: Nici un atribut din cheia
primar nu poate avea valori nule
(restricia entitii)
Chei candidat, primare,
alternative
Dac ntr-o relaie exist mai multe
combinaii de atribute care confer
unicitate tuplului, acestea sunt denumite
chei candidate.
O cheie candidat care nu este
identificator primar este referit ca i cheie
alternativ.

Criterii de alegere a cheii primare:


- Familiaritate
- Stabilitate
- Minimalitate
Pretendeni la cheia primar -
1
Se d tabela STUDENI, pentru BD a FEAA,
cu atributele:
{ Matricol, NumePren, CNP, Adresa,
CodPotal, Localitate, ar, TelFix, TelMobil,
E-Mail, SerieNrCardIdentit, CicluStudii,
AnStudii, FormaStudii, Modul, Specializare,
SerieCurs, Grupa, Observ}

Care este cheia primar a tabelei ?


Pretendeni la cheia primar -
2
Pasul 1: se elimin toate atributele ale cror
valori se pot repeta (pentru doi sau mai
muli studeni):
NumePren (exist studeni cu acelai nume
i acelai prenume)
Adresa (fraii sau soii/concubinii locuiesc
(uneori) la aceeai adres)
CodPotal, Localitate, ar, TelFix vezi
explicaia de la Adres
CicluStudii, AnStudii, FormaStudii, Modul,
Specializare, SerieCurs, Grupa ntr-o grup
sunt mai muli studeni (chiar dac numai
Pretendeni la cheia primar -
3
Rmn n discuie:
Matricol (identific fiecare student a fost
valabil la nivel de facultate, apoi la nivel de
universitate, iar acum este valabil la nivelul
rii)
CNP (este unic la nivel naional)
TelMobil (de obicei, un telefon mobil este
folosit de o singur persoan)
E-Mail (i adresa de e-mail este personal)
SerieNrCardIdentit (combinaia Serie+Nr
card de identitate este unic la nivel
Pretendeni la cheia primar
-4
Pasul 2: se elimin toate atributele care ar
putea valori nule:
2: Nu toi studenii i declar numrul de
telefon mobil i adresa de e-mail (pentru a nu fi
terorizai de secretariat/decan/pro-decani); i-au
rmas doar trei: Matricol, CNP, SerieNrCardIdentit
2: Favorit pare CNP deoarece:
SerieNrCardIdentit se modific la pierderea cardului,
la schimbarea adresei sau cstorie (nu este stabil)
Valorile atributului Matricol sunt mai lungi i utile
doar n universitate (prin comparaie, CNP-ul este
folosit i de Evidena Populaiei, Paapoarte, Poliie,
Moravuri, Anti-Drog etc. );
Pretendeni la cheia primar -
5
Problema CNP-ului: FEAA are i studeni
din ri care nu folosesc CNP-ul (Grecia,
Albania, China, Frana, Germania etc.)

Risc:n unele nregistrri din tabela


STUDENI (corespunztoare studenilor
care provin din rile de mai sus) valoarea
CNP va fi NULL !!!

Soluie: cheia primar a tabelei STUDENI


va fi atributul Matricol
Chei alternative
n ex. anterior (tabela STUDENI), atributul:
SerieNrCardIdentit
i atributele ale cror valori nu trebuie s se
repete, dar pot avea valori NULLe:
CNP
TelMobil
E-Mail
pot fi declarate chei alternative (clauza
UNIQUE din SQL); SGBD-ul va veghea ca
valorile nenule ale acestora s nu se
repete
Cheie primar compus - 1
Care este cheia primar a tabelei
FACTURRI ?

Niciun atribut, singur (individual) nu


difereniaz o linie de toate celelalte
Cheie primar compus - 2

Specificaii minimale 1:
Numrul facturii nu se recicleaz
O factur este adresat unui singur client
O factur conine oricte linii
Pe o linie se afl un singur produs
Un produs poate aprea de dou sau mai multe
ori ntr-o factur

Cheie primar: (NumrFactur, Linie)


Chei alternative: -
Cheie primar compus - 3
Specificaii minimale 2:
Numrul facturii nu se recicleaz
O factur este adresat unui singur client
O factur conine oricte linii
Pe o linie se afl un singur produs
Un produs nu poate aprea de dou sau mai
multe ori ntr-o factur

Cheie primar: (NumrFactur, Linie)


Cheie alternativ: (NumrFactur,
Produs)
Cheie primar compus - 4
Specificaii minimale 3:
Numrul facturii se recicleaz annual
O factur este adresat unui singur client
O factur conine oricte linii
Pe o linie se afl un singur produs
Un produs nu poate aprea de dou sau mai
multe ori ntr-o factur

Cheie primar:(NumrFactur,
DataFactur, Linie)
Cheie alternativ:(NumrFactur,
DataFactur,
Produs)
Cheie primar compus - 5
Specificaii minimale 4:
Numrul facturii se recicleaz annual
O factur este adresat unui singur client
O factur conine oricte linii
Pe o linie se afl un singur produs
Un produs poate aprea de dou sau mai multe ori
ntr-o factur

Cheie primar:(NumrFactur,
DataFactur, Linie)
Cheie alternativ: - (niciuna)
nclcarea cheii primare (n
PostgreSQL)
Restricia referenial

O BD este alctuit din mai multe tabele (pentru a diminua redundanele i anomaliile ce pot aprea la
editare)
Multe perechi de tabele se afl n relaia printe-copil (relaie stabilit printr-un atribut cu aceeai
semnificaie i deseori cu acelai nume; n cele dou tabele atributul se numete cheie primar (sau
alternativ), respectiv cheie strin, (sau cheie extern sau coloan de referin))
Restricia referenial interzice apariia nregistrrilor orfane
Exemplu de restricie referenial
tabel copil tabel printe

cheie primar
cheie strin
Exemplu de restricie referenial
n care cheia strin poate avea
valori nule
tabel
abel copil print
e
cheie primar

cheie strin
Declararea restriciei
refereniale
CREATE TABLE clienti(
codclN U M ERIC(6) N O T N U LL,
denclVARCH AR(30), codfi scalCH AR(9),
..., CO N STRAIN T pk_clientiPRIM ARY KEY (codcl), ...
);
CREATE TABLE facturi(
nrfact N U M ERIC(8,0) N O T N U LL, datafact D ATE,
codclN U M ERIC(6),
CO N STRAIN T fk_facturi_clientiFO REIG N KEY (codcl)
REFEREN CES clienti(codcl)
O N U PD ATE N O ACTIO N
O N D ELETE N O ACTIO N ) ;
nclcarea restriciei refereniale
Operaiuni ce pot periclita
restricia referenial

ntr-o tabel copil (ex. FACTURI)

Inserarea unei nregistrri (valoarea cheii strine nu


exist n tabela printe)
Modificarea valorii unei chei strine (noua valoare a cheii
strine nu exist n tabela printe)
ntr-o tabel printe (ex. CLIENTI)

tergerea unei nregistri (nregistrrile copil rmn


orfane)
Modificarea valorii unei chei primare (nregistrrile copil
ale vechii valori a cheii primare rmn orfane)
Reguli de implementare a
unei restricii refereniale
La tergerea unei nregistrri printe - ON DELETE

Se blocheaz operaiunea dac exist mcar o


nregistrare copil (RESTRICT)
Se terg n cascad toate nregistrrile copil (CASCADE)
La modificarea unei valori a cheii primare (ntr-o nregistrare printe) - ON UPDATE

Se blocheaz operaiunea dac exist mcar o


nregistrare copil (RESTRICT)
Se modific n cascad valori cheilor strine n toate
nregistrrile copil (CASCADE)
(Re)Declararea restriciei
refereniale
CREATE TABLE clienti (
codclN U M ERIC(6) N O T N U LL,
denclVARCH AR(30), codfi scalCH AR(9),
..., CO N STRAIN T pk_clientiPRIM ARY KEY (codcl), ...
);
CREATE TABLE facturi (
nrfact N U M ERIC(8,0) N O T N U LL, datafact D ATE,
codclN U M ERIC(6),
CO N STRAIN T fk_facturi_clientiFO REIG N KEY (codcl)
REFEREN CES clienti(codcl)
O N U PD ATE CASCAD E
O N D ELETE RESTRICT ) ;
Restricii de comportament

Reguli la nivel de atribut:


AnStudii cuprins ntre 1 si 3:
AnStudii BETWEEN 1 AND 3
Sex poate fi doar F sau B: Sex IN (F, B)
Stare civila: N, C, D: StareCiv IN (N,C,D)

Reguli la nivel de nregistrare:


Dac CicluStudii = 2, atunci AnStudii poate fi doar 1
sau 2:
CASE WHEN CicluStudii=2
THEN AnStudii <3 END
Declararea unei reguli la nivel de
atribut
CREATE TABLE facturi(
nrfact N U M ERIC(8) N O T N U LL,
datafact D ATE D EFAU LT CU RREN T_D ATE,

CO N STRAIN T ck_datafact CH ECK
(datafact > = D ATE2010-08-01
AN D datafact < = D ATE2015-01-01)

);
nclcarea regulii la nivel de
atribut
Schema i coninutul unei BDR

Coninutul unei relaii (tabele) este


reprezentat de ansamblul tuplurilor
(nregistrrilor, liniilor) ce o alctuiesc la
un moment dat.

O schem relaional - un ansamblu de


relaii (tabele) asociate semantic prin
domeniul lor de definiie i prin restricii de
integritate
Schema unei BD simple (TRIAJ)
Schem simplificat a BD
VNZRI
Schema BD VNZRI n
Oracle Data Modeler
Teme de discuie la curs
Se d schema aplicaiei DVD Rental (vezi
portal)
Precizai ce entitate descrie o nregistrare din fiecare
tabel a bazei de date
Discutai cheia primar i cheile alternative ale fiecrei
tabele
Care sunt atributele pentru care ai declara restricia de
nenulitate i de ce?
Discutai fiecare restricie referenial
Propunei ntre dou i cinci reguli de validare pentru
fiecare tabel din BD
Propunei atribute suplimentare i justificai-le.
Repetai operaiunile pentru BD Northwind
Tabele virtuale (view-uri)
View (engl) - imagine, relaie (tabel)
virtual, derivat sau dinamic.
O tabel virtual stabilete o legtur
semantic ntre tabele obinuite (statice)
i/sau alte tabele virtuale (dinamice),
nefiind definit explicit, prin tupluri proprii,
ca o tabel de baz (static), ci printr-o
expresie relaional.
Pt. tabelele virtuale pe disc se memoreaz
numai schema, nu i coninutul.
Proceduri stocate

Module de program (cod) care fac parte


integrant din baza de date.
Procedurile stocate sunt pstrate n
dicionarul de date (catalogul sistem).

Exemple:
funcii pentru calculul unor valori implicite,
proceduri/funcii de validare la nivel de atribut
module de validare la nivel de nregistrare
funcii/proceduri de calcul a unor expresii complexe etc.
Declanatoare (triggere)

Declanatorul (trigger) este un tip special


de procedur stocat care este executat
automat odat cu un eveniment predefinit
(ex. inserare, actualizare sau tergere)
Faciliti:
actualizarea automat a unor atribute calculate
restricii utilizator complexe
jurnalizarea actualizmodificrilor suferite de baza de
date,
pstrarea integritii refereniale etc.
Tipologie diferit de la SGBD la SGBD
(Alte) Cteva tutoriale
video
Relational Database Concepts
[Link]

Database Lesson #2 of 8 - The


Relational Model
[Link]

Database Fundamentals
[Link]

02-01-relational-model.mp4
[Link]

Chapter 3: Data models - relational

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