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 reprezintă, 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. Domeniul de definiţie al datei este mulţimea
valorilor pe care le poate lua data în procesul prelucrării ei.
Atributele
datei stabilesc caracteristici
specifice datei. Unul dintre cele mai importante 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. Structura
de date poate fi compusă din date
elementare sau din alte structuri de date. Fiecare componentă 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 componente (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 masivele
– structuri 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 – structuri statice;
d) Timpul de utilizare.
Structurile pot fi permanente sau temporare. De exemplu, fişierele 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 independente 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 bazelor de date este proiectarea modelului conceptual
de date al bazei, care nu depinde de parametrii 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 organizate sub formă de noduri la care sînt
conectate ramurile unui arbore. Fiecare nod se subordonează 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ă.