> ## Documentation Index
> Fetch the complete documentation index at: https://developer.tra.cy/llms.txt
> Use this file to discover all available pages before exploring further.

# Основні концепції

## Модель даних

Концептуально Tracy нагадує реляційну СУБД, дозволяючи зберігати й опрацьовувати інформацію різних типів.

* **Набір даних** (Dataset) — аналог таблиці в SQL. Визначає структуру інформації певного типу (завдання, товари, клієнти, замовлення тощо), складається з властивостей.
* **Властивість** (Property) — аналог колонки. Наприклад, товари можуть мати назву й ціну, а клієнти — ім’я й телефон.
* **Запис** (Record) — аналог рядка таблиці. Належить до конкретного набору даних та складається з датумів і метадатумів.
* **Датум** (Datum) — аналог значення певної комірки. Атомарна одиниця даних, належить до конкретного запису й відповідає певній властивості.

<Note>
  На відміну від звичайної SQL-комірки, запис може не містити взагалі або містити одразу декілька датумів однієї властивості (наприклад, декілька кольорових тегів або файлів).
</Note>

* **Метадатум** (Metadatum) — службова інформація, не містить користувацьких даних. Наприклад, порядок записів у колонці на канбан-дошці.

## Керування процесами й правами доступу

Окрім властивостей, набори даних також визначають **стани** (State), у яких можуть перебувати записи. Наприклад, товари можуть бути в наявності або розпроданими, а замовлення — новими, в обробці чи виконаними. Запис завжди перебуває в певному стані.

<Tip>
  Якщо набір даних описує процес, то стани можна розглядати як його етапи.
</Tip>

Для кожного стану можна окремо налаштувати **дозволи** (Permission) на перегляд або редагування властивостей записів і загалом до дій над ними (створення, зміна стану, архівування й видалення). Доступ налаштовується на основі **ролі** (Role) користувача й того, чи **прив’язаний** він до конкретного запису.

Наприклад, користувачі ролі «Менеджер» не можуть редагувати інформацію про чужих клієнтів і не можуть бачити їхні документи, тоді як можуть створювати й редагувати власних без обмежень.

Ці обмеження діють «вертикально»:

* Якщо користувач не бачить жодної властивості запису — **він не бачить увесь запис**.
* Якщо користувач не бачить жодної властивості набору даних — **він не бачить увесь набір даних**.

<Note>
  Обмеження доступу застосовуються **на сервері** й не залежать від способу взаємодії з ним (REST API чи вебсокети), тож якщо користувач не має дозволу на перегляд певних даних — для нього їх «не існуватиме».
</Note>
