sâmbătă, 10 mai 2014

CONCEPTE GENERALE DESPRE BAZE DE DATE

    După studierea acestui capitol, veţi fi capabili să:
explicaţi sensul termenilor dată elementară, structură de date, bază de date;
recunoaşteţi date elementare, structuri de date şi baze de date;
descrieţi structura bazelor de date ierarhice, în reţea şi relaţionale;
recunoaşteţi modelul conceptual al unei baze de date.
6.1. Noţiuni şi concepte despre date şi despre baze de date
6.1.1. Date elementare şi structuri de date
Data este un model de reprezentare a informaţiei, accesibilă unui procesor (om, program etc.), model cu care se poate opera pentru a obţine informaţii noi.
Data elementară este o entitate indivizibilă atît în raport cu informaţia pe care o repre­zintă, cît şi în raport cu procesorul logic (programul) sau cel fizic (unitatea centrală care o prelucrează).
Din punct de vedere logic, data elementară este caracterizată de:
a) identificatorul datei;
b) valoarea datei;
c) atributele datei.
Identificatorul datei se foloseşte pentru a apela (a accesa) această dată.
Valoarea datei este conţinutul zonei de memorie în care este stocată data. Dome­niul de definiţie al datei este mulţimea valorilor pe care le poate lua data în procesul pre­lucrării ei.
Atributele datei stabilesc caracteristici specifice datei. Unul dintre cele mai impor­tante atribute ale datei este tipul, care defineşte apartenenţa datei la o anumită clasă de date. Fiecărui tip de date îi corespunde un model de reprezentare internă.
Exemplul 1: Declaraţia var c: integer, din Pascal, defineşte variabila c care în orice moment de timp al execuţiei programului identifică o dată elementară de tip integer ce va „ocupa” o zonă de memorie de doi octeţi. Domeniul de definiţie al tipului integer este mulţimea numerelor {–32 768, –32 767, ..., 32 767}. În urma instrucţiunii c:= 8, în zona de memorie menţionată se va stoca valoarea 8.
Exemplul 2: Valorile tipurilor simple din Pascal sînt date elementare.
Structura de date este un ansamblu de date, între elementele căruia sînt stabilite anumite relaţii care definesc metodele de identificare şi prelucrare a acestor date. Struc­tura de date poate fi compusă din date elementare sau din alte structuri de date. Fiecare compo­nentă a structurii de date poate fi localizată cu ajutorul identificatorului ei sau prin poziţia ei în cadrul structurii.
Exemplul 3: Valorile tipului record din Pascal sînt structuri de date ale căror compo­nente (cîmpurile) pot fi apelate folosind numele lor, adică identificatorii cîmpurilor. Un masiv este o structură de date, ale cărui componente (elementele masivului) pot fi apelate utilizînd poziţia acestei componente (adică indicele ei).
Principalele caracteristici ale unei structuri de date sînt:
a) Omogenitatea. O structură omogenă are toate componentele de acelaşi tip. Astfel, înregistrările (valori de tip record) sînt structuri neomogene, iar masi­vele – struc­turi omogene;
b) Modul de acces al componentelor. Componentele unei structuri pot fi accesate direct sau secvenţial. De exemplu, fişierele text sînt structuri de date cu acces secvenţial;
c) Stabilitatea structurii. Dacă pe parcursul execuţiei programului o structură nu-şi schimbă numărul de elemente şi relaţiile dintre ele, atunci această structură este statică. În caz contrar, o astfel de structură se numeşte structură dinamică. De exemplu, listele înlănţuite sînt structuri dinamice, iar înregistrările – struc­turi statice;
d) Timpul de utilizare. Structurile pot fi permanente sau temporare. De exemplu, fişie­rele externe sînt structuri de date permanente, iar masivele – structuri temporare.
6.1.2. Baze de date
Pînă-n prezent am prelucrat diferite tipuri de date şi structuri de date utilizînd un limbaj de programare sau o aplicaţie software (editor de texte, procesor tabelar etc.). Cea mai complexă structură de date prelucrată a fost fişierul.
Evident, informaţiile despre o firmă, companie sau instituţie pot fi păstrate în fişiere. De exemplu, în cazul unui liceu, se pot crea fişierele Profesori, Elevi, Clase, Discipline etc., în care se vor stoca datele, respectiv, despre profesori, elevi, clase, discipline studiate etc. Pentru a păstra informaţii despre repartizările profesorilor pe clase, se va crea alt fişier, Profesor_Clasa, pe baza conţinuturilor fişierelor Profesori şi Clase. Să presupunem că un şef de studii proaspăt angajat creează acest fişier. Dacă informaţia despre un profesor (din fişierul Profesori) este inexactă, atunci ea va apărea eronată şi în tabelul Profesor_Clasa. Eventual, aceeaşi greşeală va fi şi în fişierul Orarul_lecţiilor. Sesizînd-o, şeful de studii va fi nevoit să corecteze pe rînd toate cele trei fişiere. Mult mai simplu ar fi dacă actualizînd fişierul Profesori, automat vor fi actualizate şi toate fişierele care „l-au utilizat”. În acest mod, s-ar asigura integritatea datelor.
În afară de complexitatea actualizărilor, metoda prelucrării datelor prin fişiere inde­pendente are şi alte dezavantaje:
Prezenţa aceloraşi date în cîteva fişiere independente poate duce la duplicarea datelor, deci şi la consumul mare de memorie.
Dificultatea obţinerii informaţiilor spontane rezidă din independenţa fişierelor (de exemplu, pentru a obţine lista profesorilor de sex feminin care predau ştiin­ţele exacte în clasa a 10-a, profil real, trebuie prelucrate cel puţin fişierele Profesori, Clase, Discipline).
Formatele incompatibile de fişiere încetinesc prelucrarea informaţiilor (de exemplu, fişierele generate cu diferite limbaje de programare este posibil să aibă formate diferite, deci va fi necesară o aplicaţie care le va transforma în fişiere cu acelaşi format).
Acestea şi alte probleme pot fi rezolvate dacă se foloseşte o structură de date de tip bază de date.
O bază de date este un ansamblu de informaţii (date), organizate într-un mod special, fapt care facilitează stocarea şi extragerea lor. Informaţiile dintr-o bază de date sînt păstrate sub formă de înregistrări sau de fişiere, între care există legături logice. În afară de depozitul de informaţii, baza de date conţine descrierea lor: tipul, structura, modul de organizare şi relaţiile dintre ele.
Întrebări şi exerciţii
Œ Numiţi tipurile de date studiate. Care dintre ele sînt:
a) tipuri de date elementare;
b)            tipuri de date structurate?
 Selectaţi datele elementare: simbol, număr real, şir de caractere, masiv de numere, element al unei mulţimi, număr întreg, valoarea false, fişier.
Ž Care este domeniul de definiţie al tipului:
a) integer;
b)      char;
c) lit_M declarat astfel type lit_M = ’A’.. ’Z’;
d)      boolean?
 Caracterizaţi structurile de date:
a) mulţime;
b)            masiv;
c) înregistrare;
d)            listă înlănţuită;
e) fişier.
Repere: omogenitate, mod de acces, stabilitate şi timp de utilizare.
 Explicaţi sensul noţiunii bază de date.
Argumentaţi de ce pentru păstrarea şi prelucrarea informaţiei unei companii este mai avantajos utilizarea unei baze de date comparativ cu utilizarea unui sistem de fişiere.
Care sînt deosebirile dintre o bază de date şi o structură de date?
6.2. Tipuri de baze de date
După cum vom vedea în capitolul următor, un pas important în elaborarea ba­zelor de date este proiectarea modelului conceptual de date al bazei, care nu depinde de parame­trii fizici ai mediului de păstrare a datelor şi defineşte modul lor de organizare.
Modelul conceptual al unei baze de date reprezintă o descriere generală a bazei de date cu ajutorul limbajului natural, al celui matematic, al diagramelor şi organigramelor, al graficelor şi al altor mijloace înţelese de cei care elaborează baza de date.
Cele mai răspîndite modele conceptuale sînt:
a) ierarhic (sau arborescent);
b) reţea;
c) relaţional.
În funcţie de modelul ei conceptual, baza de date se numeşte ierarhică, în reţea sau relaţională.
Entităţile (colecţiile de date) ale bazei de date ierarhice (hierarhical database) sînt orga­nizate sub formă de noduri la care sînt conectate ramurile unui arbore. Fiecare nod se subor­do­nează cel mult unui nod de nivel ierarhic imediat superior (numit nod-părinte) şi poate fi legat cu niciunul, unul sau cu cîteva noduri de nivel inferior (numite noduri-copii).
Exemplu: Baza de date a adreselor Internet are următorul model ierarhic:
În cazul bazei de date în reţea (network database), entităţile la fel sînt aranjate ierarhic, însă unui nod-copil poate să-i corespundă cîteva noduri-părinte.
Exemplu: Baza de date a unei ramuri industriale poate avea următorul model:
O bază de date relaţională (relational database) are cel mai flexibil model conceptual de organizare a datelor. Parcurgerea entităţilor unei astfel de baze nu este ierarhică.
Modelul relaţional este simplu, dar riguros din punct de vedere matematic. Pentru prima dată acest model a fost propus în 1970 de către savantul Edgar Frank Codd.
Baza de date relaţională este formată din tabele, denumite relaţii. Fiecare tabel este format din rînduri şi coloane. Rîndurile se numesc înregistrări de date, iar coloanele – cîmpuri de date. Capul de tabel (sau antetul tabelului) defineşte structura tabelului. Prin crearea unui tabel se subînţelege, de fapt, definirea capului de tabel.
În figura 6.1 este reprezentată o parte din schema conceptuală a unei baze de date relaţionale.
Între tabelele unei baze de date relaţionale există interdependenţe (despre care vom afla mai detaliat în următoarele capitole).
Observaţie: În continuare vom examina doar baze de date relaţionale.
Întrebări şi exerciţii
Œ Descrieţi structura bazelor de date:
a) ierarhice;
b)            în reţea;
c) relaţionale.
 Stabiliţi tipul bazei de date ştiind că:
a) între fiecare două entităţi ale bazei există o legătură;
b)            entităţile bazei sînt noduri ale unui arbore binar;
c) o entitate este legată cu toate celelalte entităţi şi alte legături nu există;
d) informaţiile din bază sînt organizate în zece tabele.
Ž Reprezentaţi schematic un model ierarhic pentru o bază de date cu informaţii despre:
a) un liceu;
b)un magazin de produse alimentare;
c) o bibliotecă.
 Rezolvaţi exerciţiul 3 pentru cazul:
a) modelul reţea;
b)            modelul relaţional.

 Stabiliţi tipul bazei de date a numerelor de telefoane fixe din ţară.