ER diagrammas

thumb|320px|ER diagrammas paraugs
**ER diagrammas** () ir datu bāzu modelēšanas metode, kura tiek izmantota, lai izveidotu datu bāzes shēmu vai datu modeli un izprastu veidojamās datu bāzes uzbūvi un pamatprincipus. Diagrammas parasti izmanto relāciju datu bāzes izstrādē.

Programmatūras izstrādē. ER diagrammas ir abstrakta un konceptuāla datu reprezentācija. Entītiju relāciju (ER) diagrammas ļauj datus uztvert kā objektus un izprast to savstarpējo saistību. Pirmajā datu bāzu izstrādes posmā ER diagrammas tiek lietotas lai analizētu to, kāda informācija vai informācijas tips tiks glabāts datu bāzē.

Pirmo pilnīgo skaidrojumu entītiju relāciju diagrammu modelēšanai devis *Peter Chen* savā 1976. gadā izdotajā rakstā. Tomēr dažādi šīs idejas varianti pastāvēja arī pirms tam.

## ER diagrammu sastāvs
frame|Divas saistītas entītijas
frame|Entītija ar atribūtu
frame|Relācija ar atribūtu
[frame|[Primārā atslēga]]
ER diagramma sastāv no entītijām, relācijām un atribūtiem
* Entītijas: 
Entītija ir datu objekts, kas pārstāv kādu analizējamās sistēmas objektu, par kuru tiek vākta informācija. Entītija var tikt raksturota kā eksistējoša, taustāma, parasti pastāvīga realās pasaules lieta. Kad tiek runāts par entītiju parasti tiek domāts kāds objekts, kurš var tikt atdalīts no citiem reālās pasaules objektiem. Entītija var būt fizisks objekts, piemēram, mākslinieks, dziesma, vai notikums, kā mājas pārdošana, automašīnu serviss, vai arī kā jēdziens, piemēram, klienta samaksas pārskaitījums. Diagrammās entītijas tiek attēlotas kā taisnstūris.
* Relācijas
Relācijas parāda kā savstarpēji saistītas divas vai vairākas entītijas. Relāciju var uztver ka darbības vārdu, kurš saista divus vai vairāk lietvārdus. Diagrammā relācijas tiek attēlotas kā līnijas ar rombu vidū, un rombā ir ierakstīta pazīme kas saista entītijas, piemēram, persona *dzīvo* pilsētā, dators *pieder* uzņēmumam, mākslinieks(artist) *rada(performs)* dziesmu(song).
* Atribūti
Atribūts paskaidro entītijas un relācijas, glabājot noteiktu informāciju par tām, piemēram, entītijai *persona* var būt atribūts *matu krāsa* vai entītijai *darbinieks(employee)* var būt atribūts *sociālās apdrošināšanas numurs(SSN)*, bet relācijai *pierādīts(proved)* var būt atribūts *datums(date)*.

Katrai entītijai (ja vien tā nav vāja entītija) ir jāsatur atribūtus, kas spēj to unikāli identificēt. Šo atribūtu kopu sauc par primāro atslēgu.
Atribūtus diagrammās attēlo kā ovālus un tie ir saistīti tieši ar vienu entītiju vai relāciju kopu. 
Ja kāds no atribūtiem var tikt izmantots kā primārā atslēga, tad tas tiek pasvītrots.

Entītiju relāciju diagrammas parasti nerāda vienu entītiju vai vienu relāciju, parasti tās norāda entītiju kopu un relāciju kopu. Piemēram, atsevišķa *dziesma* ir entītija, bet *dziesmu* kolekcija, kas ir apkopota datu bāzē ir entītiju kopa,bet *ir apēdis* attiecības starp *bērnu* un tā *pusdienām* ir viena relācija, bet apkopojums no *bērns-pusdienas* attiecībām, kas glabājas datu bāzē ir relāciju kopa.

## ER diagrammu zīmēšana
320px|right
Entītijas, atribūti un relācijas var tikt attēloti ne tikai kā attiecīgi taisnstūri, ovāli un rombi ar nepārtrauktu kontūrlīniju, bet arī mazliet atšķirīgi, ņemot vērā to tipu.

**Entītijas** var būt ar dubultu kontūrlīniju, kas nozīmē, ka šī entītija ir vāja entītija (īsi sakot, tai jālieto ārējā atslēga (foreign key) kopā ar atribūtiem, lai veidotu primāro atslēgu). Šī entītija ar citu ir saistīta lietojot rombu ar tādu pašu dubultu kontūrlīniju.

Arī **atribūti** var būt ar dubultu kontūrlīniju. Tas nozīmē, ka šie ir atribūti, kas var iekļaut vairākas vērtības, piemēram, atribūtā *iegūtais grāds* var tikt glabāts *bakalaura grāds matemātikā*, kā arī *bakalaura grāds bioloģijā*.

Kā arī atribūti var sastāvēt no vairākiem citiem atribūtiem. To apzīmē atribūtam pievienojot citus atribūtus, no kā tas sastāv. Piemēram, atribūts *adrese* var saturēt atribūtus *valsts*, *pilsēta*, *iela*, *mājas numurs*, *dzīvokļa numurs*.

Atribūti var būt arī atvasināti no kāda cita atribūta. Tad tie tiek apzīmēti ar raustītu kontūrlīniju, bet ir savienoti ar entītiju nevis ar citiem atribūtiem. Piemēram, atribūts *vecums* būs atvasināts no atribūta *dzimšanas datums* un *pašreizējā datuma* jeb tas mainīsies atkarībā no dzimšanas datuma un datuma, kas ir attiecīgajā dienā.

Kā jau iepriekš minēts sadaļā ER diagrammu sastāvs, atribūti, kuros ir pasvītrots vārds, ir primārās atslēgas, taču arī vājām entītijām var būt kaut kas līdzīgs primāro atslēgu veidojošam atribūtam. Tā saucas daļējā atslēga (foreign key) un to apzīmē ar raustītu līniju zem ovālā esošā vārda.

Vēl viena lieta, ko iekļauj ER diagrammās ir kardinalitāte.

**Kardinalitāte** norāda vai nu relācijas, vai asociācijas veidu kā viens reālās dzīves objekts ir saistīts ar citu reālās dzīves objektu. Šīs saistības var būt:
* viens pret vienu
* viens pret daudziem
* daudzi pret daudziem

**Piemērs** : slimnīcas datubāzē ir tabulas ārsti (satur informāciju par visiem ārstiem), pacienti (satur informāciju par visiem pacientiem) un nodaļas (satur informāciju par katru slimnīcas nodaļu). Starp pacientu un ārstu tabulām ir attiecības **daudzi pret daudziem**, jo vienam ārstam var būt daudzi pcienti, savukārt, katram pacientam var būt vairāki ārsti. Starp nodaļām un ārstiem būs attiecības **viens pret daudziem**, jo katrs ārsts strādā vienā nodaļā, bet katrai nodaļai ir vairāki ārsti. Bet **viens pret viens** attiecības pārsvarā izmanto, lai sadalītu kādu tabulu 2 daļās, piemēram, šādas attiecības būs starp tabulām ārsta personīgā informācija un ārsta administratīvā informācija.

Kardinalitātes var attēlot kā matricu:

# 0..1
# 1..1
# 1..N
# 0..N

Šajā matricā kardinalitāte norāda cik vienam objektam kaut kādā veidā ir piesaistīti citi objekti.
Pirmajā gadījumā kardinalitāte norāda, ka vienam objektam var būt 0 vai 1 piesaistīti objekti (piem.,persona – nāves datums).
Otrajā gadījumā kardinalitāte norāda, ka vienam objektam noteikti ir piesaistīts viens objekts (piem., persona – svars).
Trešajā gadījumā objektam piesaistīti viens vai daudzi citi objekti (piem., perona - valoda).
Ceturtajā gadījumā objektam vai nu nav piesaistītu elementu vai var būt daudzi (piem., persona - grāmata).

ER diagrammu zīmēšanā tiek izmantotas vairākas notācijas, kaut gan šajā rakstā ir aprakstīta tikai Čena notācija:
* Čena notācija
* Bachman notācija
* EXPRESS 
* IDEF1X 
* James Martin
* Min-Max-Notācija
* UML klašu diagrammas

## Ierobežojumi
* ER diagrammas pieņem informācijas saturu, kuru iespējams viegli attēlot relāciju datu bāzē. Tie raksturo tikai relāciju struktūru šai informācijai.
* Tās ir nepiemērotas sistēmām, kurās informāciju uzreiz nav iespējams parādīt relāciju formā, piemēram, ar daļēji strukturētiem datiem.
* Daudzas sistēmas pieļauj netriviālas un pietiekoši skaidri noteiktas informācijas izmaiņas.
* ER diagrammu mērķis ir konkritizēt informāciju no nulles. Dizains ir piemērots jaunām un patstāvīgām informācijas sistēmām, taču mazāk integrējams jau esošajos informācijas avotos, kuros tie definēti jau detalizētāk.
* ER diagrammu modelēšanu reti izmanto kā atsevišķu darbību, pat ja tā principā ir piemērota. Viens no iemesliem tam ir instrumentu pārpilnība mūsdienās, kuri atbalsta diagrammas un citus dizainus tieši relāciju datu bāzu vadības sistēmās. Šie instrumenti viegli izveido datu bāzes diagrammas, kas ir ļoti tuvas ER diagrammās no esošajiem datu bāzēm, un tie nodrošina alternatīvus uzskatus par ietverto informāciju šādās diagrammās.

## Skatīt arī
* Datu bāzes
* Dati
* Datu bāzu pārvaldības sistēma
* Datu struktūras
* Datu noliktava
* Datu posma slānis
* Datoru arhitektūra
* MySQL
* Relāciju datu bāzes

## Atsauces

## Literatūra
* Richard Barker (1990). *CASE Method: Tasks and Deliverables*. Wokingham, England: Addison-Wesley. 
* Paul Beynon-Davies (2004). *Database Systems*. Houndmills, Basingstoke, UK: Palgrave
*