3. DATUBĀZES JĒDZIENI

3.3. Tabulu attiecības (relācijas)

Tabulu attiecību jeb relāciju (turpmāk mācību materiālā tiks lietots jēdziens relācija) lietošana līdz minimumam samazina informācijas dublēšanos datubāzē.

Pieņemsim, ka dota datu tabula Tūrisms ar informāciju par tūrisma firmas darbību (ar ID apzīmēts primārās atslēgas lauks). Redzams, ka daļa informācijas dublējas.

Tabula Tūrisms

06

Aplūkosim doto tabulu Tūrisms. Šajā datu tabulā redzams, ka dotā informācija vairākas reizes atkārtojas. Šo pašu informāciju var izkārtot divās tabulās, piemēram, Klienti un Maršruti, kas saistītas savā starpā.

7

Tabulā Klienti lauks Maršruta ID norāda tabulā Maršruti uz ierakstu, kas raksturo ceļojuma maršrutu, tādējādi novēršot informācijas dublēšanos.

Lai veidotu relācijas, tabulu saistīšanai parasti tiek izmantots primārās atslēgas lauks. Piemēram, tabulas Maršruti primārās atslēgas lauks Maršruta ID tiek saistīts ar tāda paša nosaukuma lauku tabulā Klienti.

2.3.1. Relāciju veidi

Tālāk tiks apskatīti raksturīgākie relāciju veidi.

Viendaudznozīmīga (one-to-many) relācija

Par viendaudznozīmīgu (one-to-many) relāciju sauc attiecību, kas norāda, ka tabulas ieraksts var būt saistīts ar vairākiem otras tabulas ierakstiem, bet otras tabulas ieraksts var būt saistīts vienīgi ar vienu ierakstu pirmajā tabulā. Parasti šādu relāciju apzīmē šādi: 1 - ∞.

Iepriekš apskatītajā piemērā maršruta primārās atslēgas saturs, kas tabulā Maršruti ir vienā ierakstā, tabulā Klienti var atkārtoties vairākos ierakstos, jo uz vienu maršrutu var braukt vairāki klienti. Šādu relāciju sauc par viendaudznozīmīgu relāciju.

8

Vienviennozīmīga (one-to-one) relācija

Par vienviennozīmīga (one-to-one) relāciju sauc attiecību, kas norāda, ka tabulas ieraksts var būt saistīts vienīgi (tieši) ar vienu ierakstu otrā tabulā un otrādi. Parasti šādu relāciju apzīmē šādi: 1 - 1.

Vienviennozīmīgas relācijas gadījumā katram pirmās tabulas ierakstam otrajā tabulā atbilst ne vairāk kā viens ieraksts. Šo saiti visbiežāk izmanto, lai sadalītu vienu tabulu vairākās daļās. Šādai tabulas sadalīšanai ir vairāki iemesli, piemēram:

  • Microsoft Access pieļauj tabulas ar ne vairāk kā 255 datu kolonnām. Ja objekta īpašību definēšanai ir nepieciešamas vairāk nekā 255 kolonnas, tad tabula tiek sadalīta vismaz divās tabulās;
  • tabulu sadala datu drošības vai konfidencialitātes dēļ. Vienā tabulā glabā pamatdatus, otrā – pārējo objekta informāciju.

Piemēram, tabulā Maršruti dota pamatinformācija, bet tabulā Maršruti_info papildinformācija. Relācija starp laukiem Maršruti ID ir vienviennozīmīga relācija, kas norāda, ka maršruta primārās atslēgas saturs, kas tabulā Maršruti ir vienā ierakstā, tabulā Maršruti info var atkārtoties tikai vienā ierakstā.

9

Daudzdaudznozīmīga (many-to-many) relācija

Visbiežāk sadzīvē ir sastopama daudzdaudznozīmīga (many-to-many) relācija, kas norāda, ka tabulas katrs ieraksts var būt saistīts ar vairākiem otrās tabulas ierakstiem un arī otrās tabulas katrs ieraksts var būt saistīts ar vairākiem pirmās tabulas ierakstiem. Parasti šādu saistību apzīmē šādi: ∞ - ∞.

Piemēram, viens klients var izvēlēties vairākus maršrutus un vienā maršrutā var doties vairāki klienti.

Tā kā daudzdaudznozīmīga relācija starp divām tabulām nevar tikt realizēta tieši, tad to iegūst, lietojot trešo tabulu un divas viendaudznozīmīgas relācijas. Piemēram, lietojot tabulu Biļete, var realizēt daudzdaudznozīmīgu relāciju starp tabulām Klienti un Maršruti, jo:

  • viens klients var braukt uz vairākiem maršrutiem;
  • uz vienu maršrutu var braukt vairāki klienti.
10

2.3.2. Referentā (attiecinošā) integritāte

Referentā (attiecinošā) integritāte nozīmē, ka datubāzē tiek veikti drošības pasākumi attiecībā uz darbībām ar saistītajiem laukiem. Pievienojot vai izdzēšot vienas tabulas ierakstus, tiek kontrolēts, kā tas ietekmē saistītās tabulas ierakstus. Piemēram, nevar izdzēst maršrutu, kamēr uz to būs pieteicies kaut viens klients, vai arī nevar pievienot klientu neeksistējošam maršrutam.