Vai diagrammas var jautāt par datiem?
Vai diagrammas var jautāt par datiem?
Kārlis Čerāns, Dr.dat
Iedomāsimies, ka mums ir nelielas universitātes informatīvā sistēma, kurā uzkrāta informācija par akadēmiskajām (studiju) programmām un tajās iekļautajiem studiju kursiem, kā arī par studentiem, kas var būt iesaistīti akadēmiskajās programmās un var ņemt (apgūt) studiju kursus. Students, kas apgūst studiju kursu, uz šo kursu reģistrējas. Par katru studenta reģistrāciju uz kursu var tikt ievadīts datums, kad šī reģistrācija veikta, kā arī datums, kad students ir kursu nokārtojis, un iegūtā atzīme. Papildus pieņemsim, ka par studentiem tiek uzkrātas ziņas par viņu valstisko piederību.
Datu struktūras diagramma
Pirms noskaidrot, vai diagramma var jautāt par datiem, izmantosim diagrammu, lai attēlotu informatīvajā sistēmā uzkrāto datu struktūru.
Apskatāmās mini-Universitātes informatīvās sistēmas datu struktūru attēlosim 1.attēlā ietvertās diagrammas veidā.
|
1.attēls. Mini-Universitātes informatīvās sistēmas datu struktūra (ontoloģija) |
Diagrammā kastīšu veidā ir attēloti dažādi sistēmā esošo informācijas vienību veidi, kas var tikt uztverti arī kā sistēmā pieejamās informācijas kategorijas jeb informācijas klases. Informatīvās sistēmas lietotājs var domāt par informācijas klasēm arī kā par dažādām tabulām, kurās ir organizēta sistēmā pieejamā informācija. Attēlā ietvertajā diagrammā informatīvās sistēmas klases ir: AcademicProgram – studiju programma, Course – kurss, Student – students, Registration – studenta reģistrācija uz kursu, un Nationality – valstiskā piederība.
Diagrammā katrai no informācijas klasēm ir norādīti atribūti – tekstuāli, skaitliski vai datumu informāciju saturoši lielumi, kas raksturo katru no atsevišķajām informācijas vienībām, kas atbilst konkrētajai informācijas klasei. Domājot par informācijas klasi kā par datu tabulu, klases atribūti būs atbilstoši šīs tabulas kolonnām. Piemēram, klasei/tabulai Student atbilstošie atribūti studentName (studenta vārds) un studentNumber (studenta numurs) nosaka, ka par katru no studentiem (klasei Student atbilstošo elementu, jeb tabulas Student rindiņu) informatīvajā sistēmā var būt pieejama studenta vārda un studenta numura informācija.
Līnijas, kas savieno kastītes, atbilst iespējamām saitēm starp informācijas klasēm. Tā katram studentam ir saite enrolled uz akadēmisko programmu, kurā students ir reģistrējies, saite nationality uz viņa valstisko piederību un saite takes uz kursiem, ko students apgūst (šādi kursi vienam studentam var būt vairāki). Katrai akadēmiskai programmai saite includes piesaista visus tos kursus, kas ir šajā programmā iekļauti.
Līdzīgā veidā diagrammas veidā attēlojamas arī citu informatīvo sistēmu datu struktūras, lai varētu tālāk veidot vaicājumus pār šajās informatīvajās sistēmās ietvertajiem datiem.
Vaicājumi pār datiem
Lai lietotājs varētu piekļūt informatīvajā sistēmā uzkrātajiem datiem, lietotājam ir jāspēj noformulēt, kādus tieši datus viņš vēlas iegūt.
Datu atlases vaicājumi var būt vienkārši jautājumi par elementu skaitu informatīvajā sistēmā, piemēram, mini-Universitātes gadījumā daži no tiem varētu būt:
· Cik sistēmā ir studentu?
· Cik sistēmā ir studiju kursu?
· Cik sistēmā ir studentu reģistrāciju uz kursiem?
Jautājumus par skaitu var būt vēlēšanās uzdot arī, norādot kādus papildus nosacījumus:
· Cik sistēmā ir kursu, kam ir vismaz 6 kredītpunkti?
· Cik sistēmā ir tādu studentu reģistrāciju uz kursiem, kurās studenta iegūtā atzīme ir vismaz 6?
· Cik ir studentu, kam atbilst valstiskā piederība ‘Latvija’?
Līdz ar jautājumiem par skaitu, lietotājs varētu vēlēties iegūt arī informāciju par konkrētiem informatīvās sistēmas elementiem (sistēmas datu tabulu rindiņām), piemēram:
· Atrast visus sistēmā ietvertos kursus, kam ir vismaz 6 kredītpunkti
· Atrast visus sistēmā ietvertos kursus, kam ir vismaz 6 kredītpunkti, katram no kursiem parādot kursa kodu un kursa nosaukumu (vārdu)
· Atrast visus studentus, kam valstiskā piederība ir Igaunija.
· Atrast visus studentus, kas katrs ņem vismaz vienu kursu.
· Atrast visas studentu reģistrācijas uz kursiem, kuros iegūtā atzīme ir vismaz 8, parādīt atzīmi, kursa nokārtošanas datumu, saistītā studenta vārdu, kā arī kursa nosaukumu un kursa kodu.
Informāciju par konkrētiem informatīvās sistēmas elementiem var būt dabiski papildināt arī ar informāciju par ar tiem saistīto elementu skaitu, piemēram:
· Atrast visus studentus kopā ar to ņemto kursu skaitu
· Atrast visus studentus kopā ar viszemāko un visaugstāko studenta iegūto atzīmi
· Atrast visus studentus, kas nokārtojuši vismaz vienu kursu, katram no tiem aprēķināt vidējo atzīmi
Lietotājam varētu būt interese arī par statistikas tipa jautājumiem:
· Cik reizes ir iegūta katra no atzīmēm?
· Katram kalendārajam gadam kāds ir kopējais šajā gadā studentu kursu nokārtošanas reižu skaits?
· Katram kalendārajam gadam kāds ir dažādo šajā gadā kursu studijas uzsākušo studentu skaits?
Lai varētu iegūt atbildes uz šādiem un līdzīgiem jautājumiem, svarīgi ir tos uzstādīt informatīvajā sistēmā viennozīmīgi saprotamā veidā. Bieži vien jautājuma precīza uzstādīšana ir uzdevums, kura risināšanā tiek iesaistīti programmētāji vai IT speciālisti, tomēr šāda veida darba organizācija var prasīt sarežģītu un ilgu procesu, lai iegūtu atbildes pat uz salīdzinoši vienkāršiem jautājumiem.
Diagrammas kā vaicāšanas rīks, kopā ar atbilstošo datu uzglabāšanas un vaicāšanas infrastruktūru, ir viens no veidiem, kā pašam gala lietotājam uzdot jautājumus pa tiešo informatīvajai sistēmai, saņemot atbildes (atkarībā no datu apjoma un vaicājuma sarežģītības) salīdzinoši īsā, optimāli – dažu sekunžu laikā.
Diagrammas kā vaicāšanas valoda
Diagrammas izmantot vaicāšanai pār datiem var līdzīgā veidā, kā diagrammas tiek izmantotas informācijas modelēšanā.
Vaicājumi informācijas izguvei no vienas klases
Lai iegūtu informāciju par noteiktas klases (datu tabulas) elementiem (te var tikt atlasīts gan elementu skaits, gan arī detalizēta informācija par atsevišķiem klases elementiem), diagrammā iezīmējam kastīti, kurā ierakstām šīs klases vārdu. Atlasot noteikta veida (noteiktu atribūtu) informāciju par klases elementiem, atlasāmo atribūtu vārdus norādām kastītes atlasāmo atribūtu sadaļā.
Papildus tam, vaicājumā var būt iespējams norādīt atribūtus, kas nosaka rezultātu attēlošanas secību (order by).
|
|
|
|
2.attēls. Vienkārši vaicājumi informācijas izguvei no vienas klases |
Gan skaita, gan arī konkrēto atribūtu informācijas atlasē ir iespējams pievienot papildus nosacījumus, kas vienkāršākajā gadījumā ir salīdzināšanas tipa izteiksmes, kas veidotas no atribūtu nosaukumiem un konkrētām vērtībām. 3.attēla piemērā vaicājumus uzdodam pār studiju kursus aprakstošo klasi Course.
|
|
|
|
3.attēls. Informācijas izguve no vienas klases: vaicājumi ar nosacījumiem |
Piezīme. Atlasot atribūtu informāciju klasei Student (un līdzīgi vēlāk klasei Course) tika izdarīts pieņēmums, ka katram studentam ir norādīta gan vārda, gan arī studenta numura informācija (līdzīgi – katram kursam ir norādīta gan kursa vārda, gan arī kursa koda informācija). Ja nu informatīvajā sistēmā būtu kāds students, kuram nav norādīta studenta vārda vai numura informācija, 2.attēla labās puses vaicājuma atbildē informācija par šādu studentu netiktu atrasta. Līdzīgi arī 3.attēla labās puses vaicājuma atbildē netiktu atrasta informācija par kursu, kuram nebūtu norādīta vai nu kursa nosaukuma vai arī kursa koda informācija. Ja nu pastāv iespēja, ka kāds no vaicājumā interesējošajiem atribūtiem informatīvajā sistēmā varētu būt arī neaizpildīts, arī vaicājumā šis atribūts jānorāda kā neobligāts (sk. 4.attēlu).
|
|
|
|
4.attēls. Informācijas atlase atbilstoši neobligātiem atribūtiem |
Vaicājumi informācijas izguvei no vairākām klasēm
Gan elementu skaita, gan arī konkrēto elementu atlases vaicājumus ir iespējams veidot arī situācijās, kad dati vaicājumu atbildēšanai ņemami no vairākām savā starpā saistītām klasēm. Jebkurā no vaicājumiem, kas tiek veidots šeit aprakstītajā diagrammu veida vaicāšanas valodā, tieši vienai no izmantotajām klasēm ir jābūt iezīmētai kā galvenajai (oranžā krāsā); visas pārējās klases ir papildus klases jeb nosacījumu klases (pelēki violeta krāsa).
Vienkāršos vaicājumos (piemēram, 5.attēlā attēlotajā) galveno klasi var izvēlēties patvaļīgi (tiks iegūti tie paši rezultāti neatkarīgi no tā, kura klase būs izvēlēta kā galvenā), tomēr tālākās vaicājumu konstrukcijās (neobligātas vaicājumu diagrammas daļas, agregātfunkcijas, apakšvaicājumi, u.c.) galvenās klases izvēle kļūst nozīmīga. Galvenās klases elementā ir ierakstāmas uz visu vaicājumu attiecināmās papildus opcijas: sakārtošana, noteikta sākotnējo rindu skaita izvēle, u.c.
No vaicājuma diagrammas intuīcijas viedokļa ir labi domāt par galveno klasi kā par to, kura ir saturiski nozīmīgākā vaicājumam (ja intuitīvi izvēle par galveno klasi nav skaidra, var izvēlēties jebkuru no saistītām informācijas klasēm).
|
|
|
|
Piezīme. Lai atbrīvotos no T00:00:00 tekstiem dateCompleted kolonnā, sākotnējā datu shēmā (1.attēls) atribūtu dateCompleted klasei Registration bija jāveido ar tipu date sākotnēji izvēlētā dateTime vietā. Varētu tikt iegūts šāds rezultāts: |
|
|
|
|
|
5.attēls. Reģistrācijas, studentu un kursu informācija: Atrast visas studentu reģistrācijas uz kursiem, kuros iegūtā atzīme ir vismaz 8, parādīt atzīmi, kursa nokārtošanas datumu, saistītā studenta vārdu, kā arī kursa nosaukumu un kursa kodu |
6. attēls parāda 5.attēla vaicājumu diagrammai analoģiskas vaicājumu diagrammas ar citu galvenās klases izvēli (iegūtie rezultāti ir sakrītoši ar 5.attēla vaicājumu).
|
|
|
|
6.attēls. Studenta un kursa klases kā vaicājuma par reģistrācijas datiem galvenās klases |
5. un 6. attēlos ietvertajos vaicājumos visās iesaistītajās klasēs bija kādi atribūti, kas tiek ietverti arī rezultāta atlasē. Kā piemērs vaicājumam, kurā atlasīti tiek dati no vienas klases, bet nosacījums uzlikts uz citas (saistītās) klases atribūtiem, ir 7.attēls, kurā tiek parādīti divi veidi, kā prasīt atlasīt visus studentus (rādot studenta vārdu un studenta numuru), kuriem valstiskā piederība ir Igaunija.
|
|
|
|
7.attēls. Atlasīt visus studentus, kam valstiskā piederība ir Igaunija |
Atlasīt visus studentus, kas katrs ņem vismaz vienu kursu, var ar vienkāršu 8.attēlā ietverto vaicājumu.
|
|
|
|
8.attēls. Visi studenti, kas katrs ņem vismaz vienu kursu |
Tomēr atbilde uz šo vaicājumu nav optimāla, jo studenti, kas ņem vairākus kursus, vaicājuma atbildē tiek iekļauti vairākkārtīgi.
Lai norādītu, ka katru studentu jāiekļauj atbildē ne vairāk, kā vienu reizi, viena opcija ir vaicājuma galvenajā klasē norādīt, ka no vaicājuma vēlamies iegūt tikai dažādos rezultātus (9.attēla kreisā puse).
Niansētāka iespēja, kā iegūt šo pašu rezultātu, ir klasēs bez atribūtiem (šajā gadījumā klase Course) norādīt, ka katram atlasīto atribūtu komplektam ņemam tikai vienu klases bez atribūtiem (t.i. Course) ierakstu, ja tāds eksistē (stereotips , 9.attēla labā puse).
|
|
|
|
9.attēls. Studenti, kas katrs ņem vismaz vienu kursu: atlasīt studentu tikai vienu reizi |
Vaicājumi ar agregētām instancēm vai atribūtiem
Divi vienkārši veidi, kā atlasīt informāciju par studentu ņemto kursu skaitu (kopā ar pamata informāciju par studentiem) parādīti 10.attēlā. Kreisajā pusē kā galvenā tiek izvēlēta studentu klase, no kuras tiks atlasīta studentu pamata informācija. Papildus caur saiti takes katram studentam atrodam viņam piesaistītos kursus; stereotips norāda, ka katram studentam atbilstošos kursus saskaitām.
Labās puses diagrammā (tikai viena galvenā klase) kursu skaits katram studentam tiek aizstāts ar šī studenta takes-saišu skaitu (šis vaicājums ir ekvivalents ar iepriekšējo, jo takes-saite no studenta var vest tikai uz kursu).
|
|
|
|
10.attēls. Studenti un viņu ņemto kursu skaits |
Lai atlasītu studentus kopā ar viszemāko un visaugstāko iegūto atzīmi, saistām kopā studenta un reģistrācijas klases (jo informācija par studenta atzīmi ir pieejama atribūtā mark, kas ir reģistrāciju aprakstošajā klasē Registration). Lai no studentam atbilstošajiem reģistrācijas rakstiem iegūtu minimālo un maksimālo atzīmes, atlasē veidojam divas agregētas atribūta rindas, no kurām vienā atzīmējam, ka atribūtam mark vēlamiem minimālo vērtību, bet otrā – maksimālo vērtību. Ja nu mēs vēlētos iegūt visu atzīmju summu (šāda vēlme gan varētu nebūt ļoti saturīga), mēs atribūta izteiksmē rakstītu sum(mark). 11.attēla kreisajā pusē attēlots vaicājums, kurā minimālā un maksimālā atzīmes atrastas tiem studentiem, kam vispār ir kaut kādas atzīmes, bet labās puses vaicājuma atbildē iekļauti arī tādi studenti, kam vispār atzīmju nav (to nodrošina saites student kā neobligātas saites (apzīmēta ar raustītu līniju) norādīšana).
|
|
|
|
11.attēls. Informācija par studentiem un viņu lielākajām un mazākajām saņemtajām atzīmēm |
Katra studenta vidējo atzīmi vienkāršotā veidā var atrast ar 12.attēlā doto vaicājumu.
|
|
|
|
12.attēls. Studenta vidējā atzīme; neņemot vērā katras atzīmes “svaru” |
Tomēr šāda vaicāšana, kā parādīta 12.attēlā, var būt pārāk vienkāršota, jo dažādiem kursiem var būt dažāds kredītpunktu skaits (kursa apjoms), un līdz ar to var būt vēlēšanās katru no atzīmēm ierēķināt vidējā atzīmē ar svaru, kas proporcionāls kārtotā kursa kredītpunktu skaitam. Lai iegūtu šādu “nosvarotu” vidējo atzīmi, viens no veidiem ir vispirms aprēķināt summu pa atzīmēm, kas reizinātas ar kredītpunktu skaitu, un tad to izdalīt ar kopējo studenta ņemto kredītpunktu skaitu.
13. attēlā vaicājums parāda vienu no iespējām, kā katram studentam iegūt šos abus skaitļus (apzīmējam tos ar marksum un credsum)
|
|
|
|
13.attēls. Summa no atzīmju un kredītpunktu skaita reizinājuma, kā arī kredītpunktu summa. |
Tā kā šie marksum un credsum skaitļi ir iegūti ar agregācijas (summas) operācijām, tad vaicājumu valodas vienkāršajā variantā tālākas darbības ar tiem viena vaicājuma ietvaros netiek atbalstītas. Viena iespēja iegūt rezultātu, kas ir marksum/credsum, ir eksportēt rezultāta tabulu, piemēram, uz Excel, kur tālāk ar vienkāršu formulu paveikt dalīšanas operāciju.
Studenta vidējā atzīme: apakšvaicājumi
Otra iespēja, kas ļauj palikt diagrammatiskās vaicājumu valodas ietvaros, ir izmantot atklāti uzdotus apakšvaicājumus.
14.attēlā pirmais no vaicājumiem atkārto 13.attēla vaicājumu agregātvaicājumu notācijā (klase Registration un saite student no tās uz klasi Student tiek ietvertas apakšvaicājumā; ja vēlamies pamata vaicājumā padarīt redzamus kādus no apakšvaicājumā atlasītajiem elementiem (šajā gadījumā marksum un credsum)), tos ir atklāti jāiekļauj arī pamata vaicājuma atlasē.
Otrais no 14.attēla vaicājumiem jau vairs neatlasa atsevišķi marksum un credsum, bet gan piedāvā katram studentam atbilstošo meanMark, kas iegūts kā šo divu vērtību dalījums, un ir studenta vidējā atzīme, kas ņem vērā kredītpunktu skaitu, kas atbilst katrai no studenta iegūtajām atzīmēm.
|
|
||
|
|
||
|
|||
|
|
||
|
|
||
|
|||
|
|||
14.attēls. Apakšvaicājumu piemēri: studenta vidējā atzīme |
|
||
Statistikas tipa vaicājumi
Statistikas tipa vaicājumi ir tādi, kuros interesējamies nevis par konkrētām tabulas rindām datu bāzē, bet gan par dažādām atribūtu vērtībām un tām atbilstošiem tabulas rindu skaitiem.
Var būt situācijas, kad statistikas tipa vaicājumus var pārformulēt par vaicājumiem ar agregētām instancēm vai atribūtiem, kā pamata klasi vaicājumā izmantojot kādu klasifikatoru klasi. Piemēram, 15.attēlā parādīta iespēja iegūt studentu skaita statistiku pa to valstiskajām piederībām.
|
|
|
|
15.attēls. Studentu skaita statistika pa valstiskajām piederībām |
16. attēls piedāvā divus analoģiskus vaicājumus, kuros kā galvenā klase izvēlēta klase Student, un studentu skaita statistika tiek veidota atbilstoši piesaistītajā klasē Nationality ietvertā atribūta nCode vērtībām. 16.attēla labās puses vaicājuma priekšrocība ir tā, ka tā atļauj papildus iegūt arī statistiku par studentiem, kam valstiskā piederība nav uzrādīta.
|
|
|
|
16.attēls. Studentu skaita statistika pa valstiskajām piederībām: studentu skaita atbilstība uzrādītām vai uzrādītām un neuzrādītām valstiskajām piederībām |
Piezīme. 16.attēla kreisās puses vaicājums no rezultāta viedokļa ir ekvivalents 15.attēla vaicājumam, ja datu bāzē nav divu valstiskās piederības informācijas ierakstu, kam būtu sakrītoši nCode atribūti (jo 15.attēlā grupēšana skaitīšanai notiek pēc Nationality tabulas rindas, bet 16.attēla kreisajā pusē: pēc nCode atribūta vērtības šajā rindā).
Tālāki statistikas tipa vaicājumi parādīti 17. un 18.attēlos.
|
|
|
|
17.attēls. Statistikas tipa vaicājumu piemēri |
|
|
|
|
18.attēls. Statistikas tipa vaicājumu piemēri: katram kalendārajam gadam dažādo šajā gadā kursus paņēmušo studentu skaits |
Secinājumi
Aplūkotie diagrammu piemēri ļauj iegūt apstiprinošu atbildi uz sākotnējo jautājumu: vai diagramma var jautāt par datiem. Ilustrētās vaicāšanas konstrukcijas spēj noklāt visus sākotnēji teksta formā uzdotos vaicājumus, kā arī tiem analoģiskus, kas var būt interesanti arī citas sākotnējās datu ontoloģijas situācijā.