TUTORIALE  TIC

COLEGIUL  ECONOMIC  "DPM"  ALBA   IULIA

Profesor  Simona  Dogaru ,    ISBN    978-973-0-31260-7 Alba Iulia, 2020

ISBN   978-973-0-31261-4 ;   Alba Iulia, 2020  

 

 

Clasa a IX-a Structura calculatorului Windows
Word Formatare Tabele, obiecte si formule matematice Cuprins,note subsol, unelte de desenare
HTML Tema 9
Clasa a X-a
Excel Formatari si grafice Formule si calcule matematice. Functii Baze de date Scenarii
Power Point Tema 10
Clasa a XI-a
Access Tabele Relatii intre tabele Interogari Rapoarte, formulare si etichete
Proiecte Tema 11
MATEMATICA Analiza matematica XI Reprezentarea functiilor Calcul financiar Recapitulare clasa 9 Ecuatii-Inecuatii 10 Trigonometrie 10
COMUNICARE Administrarea corespondentei Comunicarea Comunicare
Clasa a XII-a HTML PhP Formulare PHP Instructiuni conditionale MySQL Tema 12

 

Relaţii între tabele

 

 

 

În acest capitol vom verifica cheile relaţiilor, apoi vom defini relaţiile permanente din cadrul bazei de date. Se vor stabili reguli de menţinere a integrităţii referenţiale.

 

 

Operaţii care trebuie cunoscute

 

-        Realizarea relaţiilor între tabele: Stabilirea relaţiei se face din meniul Tools→Relationships sau prin click pe butonul . Selectăm tabelele, poziţionăm mouse-ul pe câmpul tabelei părinte şi glisăm(tragem) peste câmpul din tabela fiu. Automat se deschide fereastra  de editare a legăturii unde vom apăsa pe primul buton cu numele Creare.

-        Menţinerea integrităţii referenţiale: Deschidem fereastra Relationships, dăm dublu click pe relaţia dintre tabelele, activăm opţiunea Impunere integritate referenţială. Aici putem activa şi opţiunile  Actualizare în cascadă câmpuri corelate şi Ştergere în cascadă câmpuri corelate.

-        Vizualizarea relaţiilor:  deschidem fereastra Relationships

 

 

 

Consideraţii generale:

 

Stabilirea unei relaţii între tabelele unei baze de date este determinată de obţinerea unor informaţii prin interogări. De asemenea procesul de actualizare sau ştergere se realizează concomitent în ambele tabele.

Tabelele care participă la o relaţie se numesc: tabela părinte şi tabela fiu. Între ele pot exista relaţiile:

-         Relaţie una-la-una: unei înregistrări din tabela părinte îi corespunde o singură înregistrare în tabela fiu

-        Relaţie una-la-mai-multe: unei înregistrări din tabela părinte îi corespund mai multe înregistrări în tabela fiu

-        Relaţie mai-multe-la-una: unei înregistrări din tabela fiu îi corespund mai multe înregistrări în tabela părinte

 

Tipul relaţiei va fi dat de tipul indexului din tabela fiu. Dacă indexul este cheie unică atunci relaţia va fi una-la-una; dacă nu este cheie unică atunci relaţia va fi una-la-mai-multe. Ambii indecşi trebuie fie de acelaşi tip.

Rezultatul returnat de o relaţie îl puteţi privi ca un tabel care are pe fiecare linie valori şi din primul tabel şi din al doilea.

 

Tipuri de relaţii:

 

-        Inner join (Uniune internă) : include numai acele rânduri din ambele tabele care au valori egale în câmpul de legătură.

-        Left join (Uniune externă la stânga): include toate articolele tabelei părinte şi numai acele linii din tabela fiu pentru care există corespondent în tabela părinte

-        Right join (Uniune externă la dreapta):  include toate articolele tabelei fiu şi numai acele linii din tabela părinte pentru care există corespondent în tabela fiu

 

Reguli de integritate referenţială

 

Integritatea referenţială funcţionează astfel: nu pot fi şterse înregistrări din tabela părinte dacă există înregistrări cu aceeaşi valoare în tabela fiu, adică nu putem lăsa orfani.

Atunci când impunem această regulă se vor activa opţiunile pentru actualizare şi pentru ştergere.

-        Opţiunea pentru actualizare: actualizează toate înregistrările legate în tabela fiu cu noile valori ale cheii modificate din tabela părinte. Dacă nu impunem această regulă atunci se interzice corectarea valorii cheii primare în tabela părinte dacă sunt înregistrări legate.

-        Opţiunea pentru ştergere: se şterg toate înregistrările care au aceeaşi valoare în tabela fiu şi în tabela părinte. Dacă nu impunem această regulă atunci se interzice ştergerea valorii cheii primare în tabela părinte dacă sunt înregistrări legate.

 

 

 

 

Aplicaţia 1

 

Vom realiza o evidenţă informatizată a elevilor din liceu.

 

Rezolvare:

Vom crea tabelele având structurile de mai jos. Cheile primare sunt boldate. Stabiliţi legătura Clase→1,n→Elevi.

 

Tabela  Clase

Denumire câmp

Tip de dată

Dimensiune câmp

Clasa

Text

3

Diriginte

Text

20

Sala

Text

10

profil

Text

35

Tabela  Elevi

Denumire câmp

Tip de dată

Dimensiune câmp

Nr matricol

Numar

Intreg

Nume elev

Text

20

Media

Numar

Simpla precizie, 2 zecimale

Data nasterii

Data/Ora

Data medie

Caminist

Da/Nu

 

Clasa

Text

3

 

1.      Deschidem în modul Design View şi creem cele două tabele.

2.      Tabela Clase are ca şi index primar câmpul Clasa.

3.      Tabela Elevi se indexează neunic – Da (Cu dubluri) după câmpul cu acelaşi nume.

4.      Introducem valori, ca în imaginea de mai jos:

 

 

Observaţie:

 

            Tabela Clase conţine două clase, 12D şi 12E, cărora nu le-au fost alocate elevi. Tabela Elevi conţine elevi în clasa 12F care nu a fost încă definită în tabela Clase.

 

5.      Stabilirea relaţiei se face astfel:

o   Selectăm tabelul Clase şi activăm fila Foaie de date.

o   Din Grupul Relaţii alegem comanda Relaţii

 

 

 

o   Din fila Proiectare care se activează alegem Afişare tabel.

o   În fereastra de dialog care se deschide selectăm tabelele Clase şi Elevi prin dublu-click pe numele lor după care dăm click pe butonul Închidere.

 

 

o   Poziţionăm mouse-ul pe câmpul (cheia) de legătură a tabelei părinte şi glisăm(tragem) peste câmpul (cheia) din tabela fiu. Automat se deschide fereastra  de editare a legăturii unde vom apăsa pe primul buton cu numele Creare.

o   Această fereastră conţine informaţii despre tabelele relaţionate, tipul legăturii precum şi despre câmpurile participante la relaţie. Tipul relaţiei o putem stabili dând click pe butonul Tip asociere.., poziţia tabelelor relaţionate cu ajutorul celui de-al doilea buton cu numele Creare...

 

 

            Tabelele între care există o relaţie vor arăta astfel:

 

 

6.      Prin faptul că s-a ales primul tip de asociere, vor fi afişaţi numai elevii care au clase asociate în tabela părinte, ca în figura de mai jos:

 

 

 

 

 

Aplicaţia 2

 

Cu aceleaşi tabele de la aplicaţia 1 veţi realiza pe rând legătură la stânga şi apoi legătura la dreapta. Observaţi rezultatul.

 

Rezolvare:

 

1.      După ce s-a stabilit relaţia între cele două tabele, se pot edita rapid elevii fiecărei clase în modul Foaie de date, deoarece tabelul Elevi apare ca subset de date asociat clasei.

Dacă deschidem tabela Clase se va observa semnul plus în faţa primului câmp.

 

 

Dacă apăsăm pe el, se va deschide o subfereastră cu valorile din tabela legată, Elevi.

 

 

 

2.      Deci în tabela părinte, Clase, avem clase care nu au elevi iar în tabela fiu, Elevi, avem elevi a căror clasă nu a fost încă definită în tabela părinte. Deschidem fereastra de Relaţii şi apăsăm pe butonul Tip asociere şi bifăm pentru relaţie la stânga, adică 2.

3.      Prin această asociere obţinem toate clasele cu elevii corespunzători. Vor lipsi elevii din clasa 12F .

 

 

4.      Ne întoarcem în fereastra de relaţii, dăm dublu click pe relaţie , selectăm butonul Tip asociere şi bifăm opţiunea 3, adică uniune la dreapta.

5.      Prin această asociere obţinem toţi elevii cu clasele corespunzătoare. Vor lipsi clasele 12D şi 12E.

 

 

 

 

 

 

Aplicaţia 3

 

Proiectaţi baza de date Firma ce conţine informaţii despre comenzile de produse ale furnizorilor cu care lucrează firma.

a)      Pentru tabelele de mai jos stabiliţi relaţiile: Furnizori→1,n→Comenzi şi Comenzi→1,n→Produse.

b)      Impuneţi condiţia de actualizare. Faceţi actualizări asupra primului furnizor în tabela Furnizori . Schimbaţi numele acestuia şi urmăriţi efectul în tabela Comenzi.

c)      După impunerea integrităţii referenţiale între tabelele Comenzi şi Produse şi impunerea restricţiei la ştergere, ştergeţi comanda cu numărul 1 din tabela Comenzi. Observaţi ce se întâmplă în tabela Produse.

 

Tabela  Comenzi

Denumire câmp

Tip de dată

Dimensiune câmp

Nr comanda

numar

Intreg

Data

Data/Ora

Data medie

Furnizor

text

20

Valoare

numar

Simpla precizie, 3 zecimale

 

Tabela  Produse

Denumire câmp

Tip de dată

Dimensiune câmp

Nr comanda

numar

Intreg

Codprodus

Text

5

Cantitate

Numar

Simpla precizie, 2 zecimale

Pret

Numar

Simpla precizie, 2 zecimale

 

Tabela  Furnizori

Denumire câmp

Tip de dată

Dimensiune câmp

Furnizor

Text

20

Adresa

Text

50

 

 

Rezolvare:

 

a)

1.      Deschidem fereastra Relaţii şi introducem cele trei tabele folosindu-ne de fereastra Afişare tabel.

2.      Cu ajutorul mouse-ului prin operaţia de glisare vom trasa legăturile astfel:

-        Din tabela Furnizori spre tabela Comenzi , câmpul (cheia) de legătura fiind furnizor (vezi figura de mai jos)

-        Din tabela Comenzi spre tabela Produse, câmpul (cheia) de legătura fiind nr_comanda (vezi figura de mai jos)

-        Salvăm relaţiile stabilite

 

  

 

3.      Relaţiile vor arăta ca în figura de mai jos:

 

 

b)

1.        Deschidem fereastra Relaţii. Dăm dublu click pe relaţia dintre tabelele Furnizori şi Comenzi.

2.        Activăm opţiunea Impunere integritate referenţială precum şi cel de actualizare adică: Actualizare în cascadă câmpuri corelate. Şi apoi OK

3.          Relaţia va arăta  ca în figura de mai jos. Observaţi simbolurile introduse: 1 şi ∞

 

 

4.        Deschidem tabela Furnizori şi schimbăm numele primei societăţi. Salvăm şi închidem .

5.        Deschidem tabela Comenzi şi vom observa că s-a produs modificarea automat şi aici.

 

c)

1.      Deschidem fereastra Relationships. Dăm dublu click pe relaţia dintre tabelele Comenzii şi Produse.

2.      Activăm opţiunea Impunere integritate referenţială precum şi cel de ştergere automată adică: Ştergere în cascadă câmpuri corelate. Şi apoi OK

3.      Relaţia va arăta  ca în figura de mai jos. Au apărut şi în acest caz simbolurile: 1 şi ∞.

 

032

 

4.      Deschidem tabela Comenzi,  ştergem prima comandă şi salvăm.

5.      Deschidem tabela Produse şi observăm că nr_comandă cu valoarea 1 nu mai există în tabelă. Deci ştergerea s-a efectuat automat datorită măsurilor de integritate stabilite.