Relācijas

Vizuāla diagramma, kas parāda attiecības starp abām tabulām bultiņas norādītajā virzienā.
Relāciju datu bāze ir datu bāze, kas atbilst relāciju modeļu teorijai. Relāciju datu bāzē izmantoto programmatūru sauc par relāciju datubāzes pārvaldības sistēmu (angliski RDBMS). Termina “relāciju datu bāze” ikdienas pielietojums var attiekties uz RDBMS programmu vai pašu relāciju datu bāzi. Relāciju datu bāze ir vadošā izvēle datu uzglabāšanai, pārspējot citus modeļus kā hierarhiskais datubāzes modelis vei tīkla modelis.


**Terminoloģija**

Terminu relāciju datu bāze pirmo reizi definēja un par autoru tiek uzskatīts Edgars Kods (Edgar Codd) IBM Almadenas Izptētes centrā 1970. gadā.
Relāciju datubāzu teorija izmanto virkni matemātisko terminu, kuri aptuveni atbilst SQL datubāzes terminoloģijai. Zemāk redzamajā tabulā apkopoti daži visbūtiskākie relāciju datubāzes termini un to SQL datubāzes ekvivalenti.


**Relācijas vai tabulas**

Relācija tiek definēta kā kortežu virkne, kuriem ir vienādi atribūti. Kortežs parasti raksturo objektu un informāciju par šo objektu. Objekti parasti it fizikāli objekti vai jēdzieni. Relācija parasti tiek aprakstīta kā tabula, kura ir sakārtota pa rindām un kolonnām. Visi atribūti, kas atsaucas uz atribūtu, atrodas vienā un tajā pašā domēnā un atbilst vieniem un tiem pašiem ierobežojumiem.
Relāciju modelis nosaka, ka relāciju kortežiem nav noteiktas kārtības un ka korteži, savukārt, neuzliek kārtību atribūtiem. Lietotnēm ir pieeja datiem, izmantojot vaicājumu precizēšanu, kuras izmanto tādas operācijas kā izvēlēties (select), lai identificētu kortežus, projicēt (project), lai identificētu atribūtus, un savienot (join), lai relācijas apvienotu. Relācijas var pārveidot, izmantojot operācijas iespraust (insert), dzēst (delete) un atjaunināt (update). Jaunus kortežus var nodrošināt precīzi formulētas vērtības vai tos var atvasināt no vaicājuma. Līdzīgi, vaicājumi identificē kortežus atjaunināšanai vai izdzēšanai. Katram relācijas kortežam ir svarīgi būt unikāli identificējamam pēc kādas tā atribūta vērtību kombinācijas (vienas vai vairākām). Šo kombināciju sauc par primāro atslēgu.


**Bāzes un atvasinātās relācijas**

Relāciju datubāzē visus datus uzglabā un tiem piekļūst izmantojot relācijas. Relācijas, kas uzglabā datus tiek sauktas par „bāzes relācijām”, un īstenošanas procesā tās sauc par „tabulām”. Citas relācijas datus neuzglabā, bet tās aprēķina relāciju operācijas pielietojot citām relācijām. Šīs relācijas reizēm tiek sauktas par „atvasinātajām relācijām”. Pielietošanas procesā tās sauc par "skati" vai "vaicājumi". Atvasinātās relācijas ir ērti pielietojamas tādā ziņā, ka, lai gan tās var savākt informāciju no vairākām relācijām, tās tomēr darbojas kā viena, atsevišķa relācija. Turklāt, atvasinātās relācijas var tikt izmantotas kā Derived relations are convenient in that though they may grab information from several relations, they act as a single relation. Also, derived relations can be used as an abstrakcijas slānis.


**Domēns**

Domēns apraksta iespējamo vērtību virkni dotajam atribūtam, un to var uzskatīt par atribūta vērtības ierobežojumu. Matemātiski pievienot domēnu atribūtam nozīmē to, ka jebkurai atribūta vērtībai jābūt noteiktā kopuma elementam.
Piemēram, simbola datu vērtība „ABC” nav veselo skaitļu domēnā. Veselā vērtība 123 apmierina domēna ierobežojumu.


**Ierobežojumi**

Ierobežojumi ļauj tālāk ierobežot atribūta domēnu. Piemēram, ierobežojums var ierobežot doto veselo atribūtu vērtību robežās no 1 līdz 10. Ierobežojumi nodrošina vienu metodi, kā datubāzē pielietot biznesa likumus. SQL ierobežojumu funkcionalitāta tiek ieviesta ierobežojumu pārbaudes formā.
Ierobežojumi limitē datus, kurus var uzglabāt relācijās. Tos parasti definē izmantojot tādas izteiksmes, kuru rezultāts ir Būla vērtība un kas norāda, vai dati apmierina vai neapmierina ierobežojumu. Ierobežojumi var attiekties uz atsevišķiem atribūtiem, uz kortežu (ierobežojot atribūtu kombinācijas) vai uz visu relāciju.
Tā kā katram atribūtam ir tam piesaistītais domēns, tad pastāv ierobežojumi (domēna ierobežojumi). Divi relāciju modeļa pamatlikumi ir entītiju integritāte un references integritāte. („References integritāte ir stāvoklis, kurā visas ārējo atslēgu vērtības ir derīgas. References integritāte balstās uz entītiju integritāti. Entītiju integritāte nosaka, ka katrai entītijai jābūt unikālai atslēgai. Piemēram, ja katra rnda tabulā atspoguļo unikālas entītijas attiecības, tabulai ir jābūt vienai kolonnai vai kolonnu kopumam, kas nodrošina tabulas rindām unikālu identifikatoru. Šo kolonnu (vai kolonnu kopumu) sauc par tabulas mātes atslēgu. Lai nodrošinātu, ka mātes atslēga nesatur dublicētas vērtības, ir jādefinē unikāls rādītājs kolonnai vai kolonnām, kas veido mātes atslēgu. Mātes atslēgas definēšanu sauc par entītiju integritāti.”)


**Primārās atslēgas**

Primārā atslēga definē unikālās attiecības datubāzē. Lai atribūts būtu laba primārā atslēga, tas nedrīkst atkārtoties. Lai gan dabiskie atribūti reizēm ir labas primārās atslēgas, to vietā bieži izmanto aizvietotājatslēgas. Aizvietotājatslēga ir mākslīgs atribūts, kas piešķirts objektam, kurš to vienīgais identificē (piemēram, informācijas tabulā par skolēniem skolā, tiem visiem var būt piešķirts skolēna ID, lai viņus atšķirtu). Aizvietotājatlsēgām nav nekādas būtiskas (raksturīgas) nozīmes, tās drīzāk noder to unikālo korteža identificēšanas spēju dēļ.
Cita bieži sastopama parādība, īpaši attiecībā uz N:M relācijas kopas lielumu , ir kompozītatslēga. Kompozītatslēga ir atslēga, kas sastāv no diviem vai vairāk atribūtiem tabulas ietvaros, kuri (kopā) unikāli identificē ierakstu. (Piemēram, datubāze, kas saistīta ar skolēniem, skolotājiem un klasēm. Klases varētu unikāli identificēt pēc to telpu numuru un laika slotu kompozītatslēgas, jo nevienai citai klasei nevar būt tieši tāda pati atribūtu kombinācija. Patiesībā, lai gan visai vājš,bet šāda veida kompozītatslēgas pielietojums, var būt datu pārbaudes veids.)


**Ārējā atslēga**

Ārējā atslēga ir atsauce uz atslēgu citā relācijā, t.i., attiecīgajai tabulai kā viens no tās atribūtiem kalpo atslēgas vērtības atsauces tabulā. Ārējām atslēgām nav nepieciešamas unikālās vērtības attiecīgajā relācijā. Ārējās atslēgas efektīvi izmanto atribūtu vērtības atsauces relācijā, lai ierobežotu viena vai vairāku atribūtu domēnu attiecīgajā relācijā.
Formāli ārējo atslēgu var raksturot kā: „Visiem kortežiem attiecīgajā relācijā, kas projicēti uz attiecīgajiem atribūtiem, ir jāeksistē kortežam atsauces relācijā, kas projicēts uz tiem pašiem atribūtiem tā, lai katra attiecīgā atribūta vērtības sakristu ar atbilstošajām atsauces atribūtu vērtībām."


**Iekļautās procedūras**

Iekļautā procedūra ir izpildāms kods, kas ir saistīts ar un sākotnēji jau ir iekļauts datubāzē. Iekļautās procedūras parsti apkopo un pielāgo biežāk sastopamās operācijas, kā korteža ievietošanu relācijā, savāc statistiskos datus par lietošanas veidiem vai rezumē sarežģītus biznesa loģiskos risinājumus un aprēķinus. Bieži tās izmanto kā lietotņu programmēšanas interfeisu (API) drošībai vai vienkāršībai. Iekļauto procedūru izmantošana SQL DBMS sistēmā bieži ļauj to attīstītājiem izmantot procesuālo paplašinājumu priekšrocības (bieži specifiskas piedāvājumam) SQL standarta deklaratīvajā sintaksē.
Iekļautās procedūras nav relāciju datubāzes modeļa daļa, bet tās ir iekļautas visās komerciālajās sistēmās.


**Rādītājs**

Rādītājs ir viens no veidiem, kā nodrošināt ātru pieeju datiem. Rādītāji var tikt veidoti jebkurai atribūtu kombinācijai relācijā. Vaicājumi, kas tiek filtrēti, izmantojot šos atribūtus, var atrast atbilstošus kortežus pēc nejaušības principa, izmantojot rādītāju, bez vajadzības pārbaudīt katru kortežu pēc kārtas. Tas ir analogs tam, kā, izmantojot grāmatas satura rādītāju, atšķirt tieši to lapu, kurā atrodas meklētā informācija, t.i., Jums nav jāizlasa visa grāmata, lai atrastu to, ko meklējat. Relāciju datubāzes parasti nodrošina vairākas indeksēšanas tehnikas, no kurām katra ir optimāla kādai datu sadalījuma kombinācijai, relācijas lielumam un tipiskajam pieejas veidam. B+ trees, R-trees, un bitmaps, jaucējrādītājs.
Rādītājus parasti neuzskata par datubāzes sastāvdaļu, tā kā tie tiek uztverti kā sistēmas detaļa, lai gan parasti rādītājus glabā tajā pat grupā, kur pārējās datubāzes daļas. Jāatzīmē, ka efektīvu rādītāju pielietošana gan primārajām, gan ārējām atslēgām var būtiski uzlabot vaicājumu sniegumu. Tā iemesls ir B-tree rādītāju rezultāts ir vaicājumu laiki proporcionāli log(n), kur N ir aiļu skaits tabulā, un jaucējrādītāju rezultāts ir konstanti laika vaicājum (nav atkarīgi no izmēra tikmēr, kamēr būtiskā rādītāja daļa ietilpst atmiņā).


**Relāciju oprācijas**

Vaicājumi, kas radīti pret relāciju datubāzi un atvasinātie relāciju mainīgie datubāzē tiek izteikti relācijas kalkulācijā vai relācijas algebrā. Savā oriģinālajā relāciju algebrā Kods raksturoja astoņus relāciju operatorus divās grupas, pa četri katrā grupā. Pirmo četru operatoru pamatā bija tradicionālās matemātiskās operācijas:
* Vienības operators kombinē divu relāciju kortežus un noņem visus dublicētos kortežus no rezultāta. Relācijas vienības operators ir ekvivalents SQL UNION operatoram.
* Pārklāšanās operators rada kortežu kopumu, kurš ir vienāds divām relācijām. Pārklāšanās ir iekļauta SQL INTERSECT operatora veidā.
* Diferences operators strādā ar divām relācijām un rada tādu kortežu kopumu no pirmās relācijas, kas neeksistē otrajā relācijā. Diference tiek iekļauta SQL EXCEPT vai MINUS operatora veidā.
* Divu relāciju Dekarta produkts ir saite, kuru neierobežo nekādi kritēriji, līdz ar to visi pirmās relācijas korteži tiek saskaņoti ar katru otrās relācijas kortežu. Dekarta produkts ir iekļauts SQL kā CROSS JOIN saites operators.
Dekarta produkts ir iekļauts SQL kā CROSS JOIN saites operators.
Pārējie Kods ieteiktie operatori sevī ietver speciālas operācijas, kas ir specifiskas relāciju datubāzei:
* Izvēle vai ierobežojums, operācija izvelk relācijas kortežus, ierobežojot rezultātus tikai līdz tiem, kas atbilst noteiktam kritērijam, t.i., apakškopai pēc kopas teorijas jēdzieniem. SQL ekvivalents izvēlei ir SELECT vaicājums ar WHERE teikumu.
* Projekcijas operācija no korteža vai kortežu kopas izņem tikai noteiktus atribūtus.
* Apvienošanas operācija relāciju datubāzes definīcijā bieži tiek attiecināta uz dabīgo saiti. Šajā saites gadījumā, divas relācijas savieno tās raksturojošie atribūti. SQL tuvinājums dabiskajai saitei ir INNER JOIN saites operators.
* Relācijas dalīšanas operācija ir nedaudz sarežģītāka operācija, kas sevī ietver pamatā vienas relācijas kortežu izmantošanu (dalāmais), lai sadalītu otru relāciju (dalītājs). Relācijas dalīšanas operators ir tieši pretējs Dekarta produkta operatoram (tādēļ arī nosaukums).
Kopš Koda teorijas pirmajiem astoņiem operatoriem ir ieviesti vai ieteikti citi operatori, ieskaitot relāciju salīdzināšanas operatorus un paplašinājumus, kas, cita starpā, piedāvā atbalstu ligzdošanai un hierarhiskajai datu apstrādei.


**Normalizācija**

Sākotnēji Kods normalizāciju aprakstīja kā relāciju modeļa neatņemamu sastāvdaļu. Tā ietver virkni procedūru, kas radītas, lai novērstu ne-vienkāršus domēnus (ne-atomiskas vērtības) un datu dublēšanos, kas, savukārt, aizkavē datu manipulāciju anomālijas un datu integritātes zudumu. Vispazīstamākie datu normalizācijas veidi, kurus pielieto datubāzēs ir normālformas. Normalizācija dublēšanās samazināšanu samaina pret paaugstinātu informācijas entropiju. Normalizāciju kritizē, jo tā palielina nepieciešamo sarežģītības un apstrādes papildu darbu, kas nepieciešams, lai savienotu daudzas tabulas, kas principā atspoguļo vienu kopēju vienību.


**Relāciju datubāzes pārvaldības sistēmas**

Relāciju datubāzes, kas iekļautas relāciju datubāzu pārvaldības sistēmā, ir kļuvušas par dominējošo informācijas uzglabāšanas veida izvēli jaunajās datubāzēs, kuras izmanto finanšu ierakstiem, ražošanā un loģistikas infromācijai, personāla datiem un daudzkur citur. Relāciju datubāzes bieži aizstāj hierarhiskās datubāzes and tīkla datubāzes, jo tās ir vieglāk saprast un izmantot, lai gan tās ir daudz mazāk efektīvas. Palielinoties datoru jaudām, relāciju datubāzu neefektivitāti, kas padarīja tās nepraktiskas agrāk, ir apsteigusi to vieglā pielietojamība. Tomēr, relāciju datubāzes ir pārspējušas Objektu Datubāzes, kuras tika ieviestas kā mēģinājums risināt relāciju datubāzu un XML datubāzu objekta-relāciju pilnās pretestības nesaskaņotību. 
Trīs vadošie komerciālo relāciju datubāzu pārdevēji ir Oracle, Microsoft, un IBM.[2] Trīs vadošās plašas pieejas programmatūras ir MySQL, PostgreSQL, un SQLite. Amazon Relational Database Service ir datubāze kā apkopes un uzturēšanas servisa piedāvājums MySQL un Oracle datubāzu dzinējiem.


**Relāciju datubāzu ūdenszīmes**

Digitālās ūdenszīmes relāciju datubāzēm parādījās, ka iespējamais risinājums autortiesību aizsardzībai, viltojumu atklāšanai, nodevēju izsekošanai, relāciju datu integritātes saglabāšanai. Literatūrā ir piedāvātas daudzas ūdenszīmju tehnikas, lai varētu realizēt minētos mērķus.