ServerDatabase

Translation in progress.

User
Single user account


 * name

Käyttäjäryhmä
Käyttäjäryhmillä jäljittimen omistaja voi antaa tietylle käyttäjäryhmälle oikeuksia, esim read-only.

Session
A collection of events. This concept joins together a group of related events. E.g "Hunting trip on saturday".


 * name
 * description?
 * event count?
 * timestamp of first and latest event


 * Belongs to Tracker
 * Contains Events

Tracker
Single physical tracker device


 * tracker_code - unique identifier. e.g. IMEI code
 * shared secret - for authentication
 * name - human readable name ("Musti", "Rekku", "Punainen V1.0"). Name given by the user.

Event
Single event received from the Tracker. For example location, dog barking, temperature. Several pieces of information can be related to a single event.

Yksi jäljittimeltä saatu tapahtuma. Esim sijaintitieto, koiran haukahdus tms. Yhteen tapahtumaan voi liittyä monia eri tietoja.


 * Received at server timestamp
 * Created timestamp (time when event was created in tracker device)


 * Belongs to Tracker
 * Belongs to Event

Tapahtuman kommentti
Yhteen tapahtumaan liittyvä kommentti. Liittyy aina yhteen käyttäjään.

Näillä voi merkitä muistiinpanoja jälkeenpäin. "Tuossa kohtaa Rekku taas hukkasi jäniksen, pitäisiköhän käydä katsomassa mitä siellä on".

Sijainti

 * leveyskoordinaatti
 * pituuskoordinaatti
 * GPS aikaleima
 * tarkkuus
 * korkeus
 * satelliittien lukumäärä?
 * Viittaus tapahtumaan

Sovelluskohtaiset tiedot
Vastaten API:n laajennusparametreja (X- alkuiset parametrit)

Tietokantapalvelin
Oletustietokantaengine: PostgreSQL

Pyritään käyttämään standardia SQL:ää

Schema

 * Kaikki foreign key rajoitteet ovat tyyppiä ON DELETE CASCADE
 * Kaikki id -loppuiset kentät (eli primary keyt) ovat surrogaatti avaimia, eli niiden arvo saadaan sekvenssistä tai auto_increment kentästä. Kenttä siis sisältää kokonaisluvun.
 * primarykeyt ovat table_id nimisiä ja single referenssit viittaa suoraa fieldin nimellä. Tällöin joinissa voi käyttää suoraa JOIN foo USING (foo_id)
 * Tablen nimet monikossa overlappien välttämiseksi. Monikkomuodoissa säännönmukainen taivutus (s) myös epäsäännöllisissä nimissä, jotta nimet voi muodostaa tarvittaessa esim ormilla. Esim companys
 * foreing keyt alusta asti kuntoon niin pysyy schema kasassa kovemmassakin devauksessa.

SCHEMA_METADATA
Metadataa tietokannasta. Mm. versionumero helpottamaan migraatioita versiosta N versioon N +1.

Tähän tauluun lisätään rivi aina versiomigraatioiden yhteydessä. Monissa web/database frameissa on jokin migrations ominaisuus jossa luodaan taulu pitämään tietoa siitä mitkä schema päivitykset on ajettu. Mikäli tällainen tuki löytyy käytetyistä välineistä valmiiksi, käytetään sitä SCHEMA_METADATA taulun sijaan.

USERS_GROUPS
primary key (user_id, group_id)

TRACKERS_GROUPS
Joins trackers to a group

primary key (user_id, group_id)

EVENT_SESSIONS
Event sessiot, yhdistää esim tiettyyn aikaväliin, matkaan tai reittiin liittyvät eventit toisiinsa.

Käyttö esim seuraavasti. Käynnistyessään tracker luo uniikin sessio id:n (esim aikaleima), ja laittaa sen mukaan kaikkiin lähettämiinsä viesteihin. Kaikki näistä sanomista syntyvät eventit liittyvät samaan sessioon (= samaan EVENT_SESSIONS riviin). Tracker luo uuden sessio id:n kun se käynnistyy seuraavan kerran tai kun sille jotain kautta (SMS?) kerrotaan että nyt alkaa uusi sessio.

EVENTS
Yllä on kaksi aikaleimaa jotka voivat poiketa suurestikin toisistaan. Esim tracker ei saa lähetettyä tietoa palvelimelle, tieto puskuroidaan ja lähetetään myöhemmin. Tällöin received_time kertoo milloin tapahtuma tuli palvelimelle ja event_time kertoo milloin tracker tallensi tapahtuman.

EVENT_ANNOTATIONS
Tapahtumakohtaiset kommentit. Tänne voi esim käyttöliittymän kautta tallentaa vapaamuotoisia kommentteja liittyen tiettyyn tapahtumaan jne.

EVENT_LOCATIONS
Sisältää tapahtumiin liittyvän paikannusdatan eli GPS:stä saadut koordinaatit ja muut datat.

EVENT_EXTENSION_TYPES
Tälle on oma taulu jottei parametrien nimi tallenneta turhaan montaa kertaa

EVENT_EXTENSION_VALUES
Sisältää sovelluskohtaiset tapahtumakohtaiset arvot joille ei ole erityistä paikkaa tietokannassa. Tracker-API:n X- alkuiset laajennusparametrit tallennetaan tänne.