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 samazina informācijas dublēšanos datubāzē līdz minimumam.

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

1M5L_02_31_01

Tabulā Tūrisms dotā informācija var tikt attēlota divās tabulās (Klienti un Maršruti), kas saistītas savā starpā. Redzams, ka informācijas dublēšanās ir novērsta:

1M5L_02_31_02a

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 saistību 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:

1M5L_02_31_03

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 šādu iemeslu dēļ:

  • OpenOffice.org Base pieļauj tabulas ar ne vairāk kā 1024 datu kolonnām. Ja objekta īpašību definēšanai ir nepieciešamas vairāk nekā 1024 kolonnas, tad tabula tiek sadalīta 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ā.

Tabula Maršruti


Tabula Maršruti_info

Maršruta ID

1 <-> 1

Maršruta ID

Valsts


Raksturojums

Transports


Attēli

Izbraukšanas datums



Ilgums, dienas



Cena, Ls



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: ∞ - ∞.

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:
1M5L_02_31_04

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

Referentā (attiecinošā) integritāte nozīmē, ka datu bā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.