---
title: 'Unifikatsiya komponentlari'
section: 'Concepts'
weight: 2
description: Maʼlumotlarni unifikatsiya qilishning asosiy tarkibiy qismlari — format standartlashtirish, struktura unifikatsiyasi, semantik unifikatsiya, normallashtirish va unifikatsiyalangan maʼlumotlardan foydalanish.
related:
  - architecture/abstract-data-layer
  - basic-modules/modules
  - data-representation/main-goals
  - rest-api
---

## Format standartlashtirish

Turli manbalardan keladigan barcha maʼlumotlar yagona formatga keltiriladi.

Masalan, IoT qurilmalaridan kelgan maʼlumotlar JSON formatida keladi:

```json title="example.json"
{
  "device_id": "sensor-123",
  "temp": 27.3,
  "time": 1739960923
}
```

## Maʼlumotlar strukturasini unifikatsiya qilish

Manbasidan qatʼi nazar, barcha maʼlumotlar uchun yagona struktura aniqlanadi.

Barcha maʼlumotlar `channel_data` jadvalida saqlanadi, bu ularni jihoz, seanslar, kanallar va oʻlchov birliklari bilan bogʻlaydi:

| Maydon            | Tur                              | Tavsif                                             |
| ----------------- | -------------------------------- | -------------------------------------------------- |
| `id`              | `bigint`                         | Yozuvning yagona identifikatori (birlamchi kalit). |
| `equipment_id`    | `bigint`                         | Jihozga havola (`equipment.id`).                   |
| `seance_id`       | `bigint`                         | Seansga havola (`seances.id`).                     |
| `channel_id`      | `bigint`                         | Kanalga havola (`channels.id`).                    |
| `unit_id`         | `bigint`                         | Oʻlchov birligiga havola (`units.id`).             |
| `archive_type_id` | `integer`                        | Arxiv turiga havola (`referenceparameters.id`).    |
| `event_time`      | `integer`                        | Hodisa vaqti (masalan, vaqt belgisi).              |
| `value`           | `character varying(100)`         | Kanaldan olingan qiymat.                           |
| `created_at`      | `timestamp(6) without time zone` | Yozuv yaratilgan vaqt.                             |
| `updated_at`      | `timestamp(6) without time zone` | Yozuv oxirgi marta yangilangan vaqt.               |

Bu yerda:

- `equipment_id`: Jihozning yagona identifikatori.
- `seance_id`: Seansning yagona identifikatori.
- `channel_id`: Kanalning yagona identifikatori.
- `unit_id`: Oʻlchov birligining yagona identifikatori.

Turli qurilmalardan kelgan maʼlumotlar markaziy omborda saqlanganda:

- maʼlumotlar yagona format va strukturaga keltiriladi;
- ular `channel_data` unifikatsiyalangan maʼlumotlar jadvalida saqlanadi.

## Semantik unifikatsiya

Barcha maʼlumotlar barcha tizimlarda bir xil maʼno va talqinga ega.

Masalan:

- Barcha vaqt belgilari `UTC` formatida boʻladi. Bu tizimni loyihalash bosqichida amalga oshirilgan.
- Barcha tizimlar bir xil oʻlchov birliklaridan foydalanadi (masalan, Selsiy gradusi).

Oʻlchov birliklarini unifikatsiya qilish uchun tizimga Units modeli qoʻshildi. Unda kanal maʼlumotlari uchun ishlatiladigan oʻlchov birliklari saqlanadi.

| Maydon              | Tur                              | Tavsif                                             |
| ------------------- | -------------------------------- | -------------------------------------------------- |
| `id`                | `bigint`                         | Yozuvning yagona identifikatori (birlamchi kalit). |
| `name`              | `character varying(30)`          | Oʻlchov birligining nomi.                          |
| `varname`           | `character varying(30)`          | Oʻlchov birligining qisqa oʻzgaruvchi nomi.        |
| `description`       | `character varying(100)`         | Oʻlchov birligining tavsifi.                       |
| `conversion_factor` | `double precision`               | Oʻlchov birligi uchun aylantirish koeffitsiyenti.  |
| `rounding`          | `smallint`                       | Yaxlitlanadigan oʻnli kasr xonalari soni.          |
| `synonyms`          | `character varying[]`            | Oʻlchov birligi sinonimlari massivi.               |
| `created_at`        | `timestamp(6) without time zone` | Yozuv yaratilgan vaqt.                             |
| `updated_at`        | `timestamp(6) without time zone` | Yozuv oxirgi marta yangilangan vaqt.               |

## Maʼlumotlarni normallashtirish

Tizimning maʼlumotlar modeli atomar (skalyar) qiymatlar nuqtai nazaridan Boyce-Codd (uchinchi) normal formaga keltirilgan. Maʼlumotlar modelidagi baʼzi obyektlar kam uchraydigan, nostandart atributlar bilan ishlashni optimallashtirish uchun kompozit strukturalardan foydalanadi.

Maʼlumotlar mantiqiy jadvallarga (`equipment`, `channels`, `units`, `sessions`) boʻlinadi, bu ortiqchalik va takrorlanishni bartaraf etadi.

Masalan:

- `channel_data` jadvali `equipment`, `channels`, `units` va `sessions` jadvallariga tashqi kalitlar orqali murojaat qiladi.

## Unifikatsiyalangan maʼlumotlardan foydalanish

Unifikatsiyalangan maʼlumotlar tahlil, vizualizatsiya, mashinaviy oʻqitish va boshqa vazifalar uchun ishlatilishi mumkin.

### SQL yordamida maʼlumotlarni tahlil qilish

```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
```

### REST API orqali maʼlumotlarni soʻrash

Soʻrov namunasi:

```bash
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3
```

Javob namunasi:

```json
[
  {
    "id": 123,
    "equipment_id": 1,
    "seance_id": 2,
    "channel_id": 3,
    "archive_type_id": 4,
    "value": 42.5,
    "event_time": 1739950861
  }
]
```
