---
title: 'Komponente unifikacije'
section: 'Concepts'
weight: 2
description: Sastavni dijelovi unifikacije podataka – standardizacija formata, unifikacija strukture, semantička unifikacija, normalizacija i korištenje unificiranih podataka.
related:
  - architecture/abstract-data-layer
  - basic-modules/modules
  - data-representation/main-goals
  - rest-api
---

## Standardizacija formata

Svi podaci koji stižu iz različitih izvora pretvaraju se u jedinstveni format.

Na primjer, podaci s IoT uređaja stižu u formatu JSON:

```json title="example.json"
{
  "device_id": "sensor-123",
  "temp": 27.3,
  "time": 1739960923
}
```

## Unifikacija strukture podataka

Za sve podatke definirana je jedinstvena struktura, bez obzira na njihov izvor.

Svi se podaci pohranjuju u tablicu `channel_data`, koja ih povezuje s opremom, sesijama, kanalima i jedinicama mjere:

| Polje             | Tip                              | Opis                                                |
| ----------------- | -------------------------------- | --------------------------------------------------- |
| `id`              | `bigint`                         | Jedinstveni identifikator zapisa (primarni ključ).  |
| `equipment_id`    | `bigint`                         | Referenca na opremu (`equipment.id`).               |
| `seance_id`       | `bigint`                         | Referenca na sesiju (`seances.id`).                 |
| `channel_id`      | `bigint`                         | Referenca na kanal (`channels.id`).                 |
| `unit_id`         | `bigint`                         | Referenca na jedinicu mjere (`units.id`).           |
| `archive_type_id` | `integer`                        | Referenca na tip arhive (`referenceparameters.id`). |
| `event_time`      | `integer`                        | Vrijeme događaja (npr. vremenska oznaka).           |
| `value`           | `character varying(100)`         | Vrijednost primljena s kanala.                      |
| `created_at`      | `timestamp(6) without time zone` | Vrijeme stvaranja zapisa.                           |
| `updated_at`      | `timestamp(6) without time zone` | Vrijeme posljednjeg ažuriranja zapisa.              |

Značenje polja:

- `equipment_id`: jedinstveni identifikator opreme.
- `seance_id`: jedinstveni identifikator sesije.
- `channel_id`: jedinstveni identifikator kanala.
- `unit_id`: jedinstveni identifikator jedinice mjere.

Kada se podaci s različitih uređaja smještaju u središnje skladište:

- podaci se pretvaraju u jedinstveni format i strukturu;
- pohranjuju se u unificiranu tablicu podataka `channel_data`.

## Semantička unifikacija

Svi podaci imaju isto značenje i tumačenje u svim sustavima.

Na primjer:

- Sve su vremenske oznake u formatu `UTC`. To je implementirano u fazi projektiranja sustava.
- Svi sustavi koriste iste jedinice mjere (npr. Celzijeve stupnjeve).

Radi unifikacije jedinica mjere, u sustav je dodan model Units. U njemu se pohranjuju jedinice mjere koje se koriste za podatke kanala.

| Polje               | Tip                              | Opis                                               |
| ------------------- | -------------------------------- | -------------------------------------------------- |
| `id`                | `bigint`                         | Jedinstveni identifikator zapisa (primarni ključ). |
| `name`              | `character varying(30)`          | Naziv jedinice mjere.                              |
| `varname`           | `character varying(30)`          | Kratko ime varijable za jedinicu mjere.            |
| `description`       | `character varying(100)`         | Opis jedinice mjere.                               |
| `conversion_factor` | `double precision`               | Faktor pretvorbe za jedinicu mjere.                |
| `rounding`          | `smallint`                       | Broj decimalnih mjesta za zaokruživanje.           |
| `synonyms`          | `character varying[]`            | Niz sinonima za jedinicu mjere.                    |
| `created_at`        | `timestamp(6) without time zone` | Vrijeme stvaranja zapisa.                          |
| `updated_at`        | `timestamp(6) without time zone` | Vrijeme posljednjeg ažuriranja zapisa.             |

## Normalizacija podataka

Podatkovni model sustava doveden je u Boyce-Coddovu (treću) normalnu formu u pogledu atomičnih (skalarnih) vrijednosti. Pojedini entiteti podatkovnog modela koriste složene strukture kako bi se optimizirao rad s rijetkim, nestandardnim atributima.

Podaci su podijeljeni na logičke tablice (`equipment`, `channels`, `units`, `sessions`), čime se uklanjaju redundancija i dupliciranje.

Na primjer:

- Tablica `channel_data` putem stranih ključeva upućuje na tablice `equipment`, `channels`, `units` i `sessions`.

## Korištenje unificiranih podataka

Unificirani se podaci mogu koristiti za analizu, vizualizaciju, strojno učenje i druge zadatke.

### Analiza podataka pomoću jezika SQL

```sql
SELECT equipment_id, AVG(value) as avg_value
FROM channel_data
WHERE archive_type_id = 4 AND channel_id = 3
GROUP BY equipment_id
ORDER BY equipment_id
```

### Preuzimanje podataka putem REST API-ja

Primjer zahtjeva:

```bash
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3
```

Primjer odgovora:

```json
[
  {
    "id": 123,
    "equipment_id": 1,
    "seance_id": 2,
    "channel_id": 3,
    "archive_type_id": 4,
    "value": 42.5,
    "event_time": 1739950861
  }
]
```
