OpenOffice.org Base 3.2
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
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:
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:
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:
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.