Таблиці та поля
Кожна таблиця basedb — це таблиця PostgreSQL; кожне поле — типізований стовпець. Підпис,
який ви вводите («Échéance»), стає зрозумілою фізичною назвою (echeance) завдяки стабільній
слагіфікації: без діакритики, малими літерами, без зарезервованих слів.
| Тип | Стовпець PostgreSQL | Примітки |
|---|---|---|
| Короткий текст | text | один рядок |
| Довгий текст | text | Markdown: уривок у сітці, відформатований вигляд під час наведення, окремий редактор; може посилатися на стовпець |
| Форматований текст | text + CHECK | HTML, очищений під час запису, створений у візуальному редакторі — див. нижче |
| Число | numeric | ніколи не число з рухомою комою: сума не «пливе» |
| Валюта, Відсоток, Тривалість, Оцінка | numeric | число та його формат відображення: 12,50 €, 15 %, 1:30, ★★★★☆ |
| Прапорець | boolean | |
| Дата | date | |
| Дата й час | timestamptz | абсолютний момент часу, показаний у часовому поясі читача |
| Одиночний вибір | text + CHECK | колір, піктограма або зображення для кожного варіанта |
| Множинний вибір | text[] + CHECK | фільтрується операторами для масивів |
| Електронна пошта | text + CHECK | адреса, яку перевіряє база, відкривається одним клацанням |
| Телефон, Штрихкод, Адреса | text | короткий текст і його формат: посилання для дзвінка, моноширинний шрифт, посилання на мапу |
| URL | text + CHECK | доповнюється під час введення (exemple.fr → https://exemple.fr) |
| Особа | uuid | учасник робочого простору; якщо його вказати, він отримає сповіщення |
| Автоматичний номер | bigint (identity) | нумерує й рядки, що вже існують; ніхто не вводить його вручну |
| Зв’язок | uuid + FOREIGN KEY | справжній зовнішній ключ на цільову таблицю |
| Множинний зв’язок | uuid[] | кілька пов’язаних рядків, цілісність яких забезпечує тригер |
| Формула | згенерований стовпець STORED | обчислюється PostgreSQL — або під час читання, див. Формули |
| Підстановка, Зведення, Кількість | немає | обчислюються під час читання, через зв’язок |
| Кнопка | немає | відкриває адресу або запускає автоматизацію |
| Файл, Зображення | jsonb (метадані) | самі байти потрапляють у сховище файлів |
Кожна таблиця також має системні стовпці: _id (UUID v7), _created_at,
_updated_at, _created_by, _updated_by — їх підтримує тригер, і API ніколи не може їх
записувати. Сітка розміщує їх у групі Системна інформація в меню стовпців: вони є в кожній
таблиці, але корисні лише в небагатьох.

Обмеження, які забезпечує база
Section titled “Обмеження, які забезпечує база”Те, що обіцяє інтерфейс, гарантує PostgreSQL. Одиночний вибір — це обмеження CHECK;
зв’язок — FOREIGN KEY; URL або адреса електронної пошти — регулярний вираз. Запис через
прямий SQL, що їх порушує, відхиляється так само, як в інтерфейсі:
Check constraints: "ck_opportunites__statut__enum" CHECK (statut = ANY (ARRAY['nouveau', 'qualifie', …]))Foreign-key constraints: "fk_opportunites__clients_id" FOREIGN KEY (clients_id) REFERENCES b_t4z56fq_ventes.clients(_id)Формати відображення
Section titled “Формати відображення”Валюта, Відсоток, Тривалість, Оцінка, Телефон, Штрихкод і Адреса вибираються як типи, але насправді це формати: стовпець лишається числом або текстом, змінюється лише спосіб читання.
| Формат | Для | Як читається й вводиться |
|---|---|---|
| Валюта | числа | 12 500,00 € — євро, долар, фунт, швейцарський франк, канадський долар, єна |
| Відсоток | числа | 15 % |
| Тривалість | кількості секунд | 1:30, а вводиться як 1h30, 90 min |
| Оцінка | числа | від 1 до 10 зірок, задається одним клацанням |
| Телефон | короткого тексту | посилання для дзвінка |
| Штрихкод | короткого тексту | моноширинним шрифтом |
| Адреса | короткого тексту | посилання на мапу; у деталях рядка Знайти адресу пропонує відповідні адреси, записані повністю; подання Мапа розміщує рядок |
Формат можна змінити згодом (Відображення в редагуванні поля), не торкаючись збережених значень. Він не обмежує значення: оцінка 7 за шкалою з 5 так і лишається 7.
Значення за замовчуванням
Section titled “Значення за замовчуванням”У редагуванні поля Значення за замовчуванням визначає, яке значення отримує рядок, створений без нього:
| Варіант | Для | Створений рядок отримує |
|---|---|---|
| Фіксоване значення | більшості типів | вибране значення — статус «Новий», пріоритет 3 |
| Сьогоднішня дата | дати | день його створення, у часовому поясі особи |
| Момент створення | дати й часу | точний час |
| Особа, яка створює рядок | особи | того, хто його створив — «Відповідальний: я» |
Панель нового рядка і форми відкриваються вже заповненими; спорожнення поля залишає його порожнім. Замовчання стосується будь-якого створення — інтерфейсу, API, MCP, імпорту, опублікованої форми, автоматизації, — навіть поля, яке особа не може змінювати: це правило таблиці. Наявні рядки не змінюються, а вставлення прямим SQL не отримує жодного значення: його застосовує basedb, а не стовпець.
Формули
Section titled “Формули”Формула пишеться англійською (французькі назви теж працюють): поля — у квадратних дужках, аргументи розділяються ,:
ROUND([Montant HT] * (1 + [Taux de TVA]), 2)IF([Payée], FALSE, DAYS(TODAY(), [Échéance]) > 0)DAYS([Fin], [Début])Редактор пропонує поля для вставлення та панель функцій; повідомлення про помилку називає поле або символ, що її спричинив.
| Група | Функції |
|---|---|
| Логіка | IF, IFBLANK, ISBLANK, AND, OR, NOT, TRUE, FALSE |
| Числа | ROUND, ABS, CEILING, FLOOR, MIN, MAX |
| Текст | UPPER, LOWER, TRIM, LEFT, RIGHT, LEN, TEXT, VALUE |
| Дати | YEAR, MONTH, DAY, WEEKDAY, DAYS, ADD_DAYS, DATE, TODAY, NOW |
| Оператори | + - * /, & для з’єднання тексту, = <> < <= > >= |
Формула стає згенерованим стовпцем PostgreSQL: psql і ваші інструменти читають її, як і
будь-який інший стовпець. Формула, що залежить від поточного дня (TODAY(),
NOW()) або посилається на підстановку чи зведення, обчислюється під час читання:
її можна фільтрувати й сортувати в basedb, але в прямому SQL її не існує.
Формула не посилається ні на іншу формулу, ні безпосередньо на зв’язок — для цього є підстановка. Виділення або заміна частини тексту з’являться пізніше.
Підстановка, зведення та кількість
Section titled “Підстановка, зведення та кількість”Три поля читають дані через зв’язок, в один чи в інший бік — «клієнт проєкту», але також «завдання, пов’язані через Projet»:
- підстановка повертає значення з пов’язаного рядка або список значень: місто клієнта проєкту;
- зведення обчислює значення за пов’язаними рядками: кількість значень, суму, середнє, мінімум, максимум — оборот клієнта, середню оцінку його відгуків;
- кількість рахує пов’язані рядки: кількість завдань проєкту.
Вони обчислюються під час кожного читання, з дозволами того, хто читає: якщо пов’язана таблиця для вас закрита, поле теж закрите. Їх можна фільтрувати й сортувати. Вони проходять лише через один зв’язок, не записуються, не мають стовпця — тож не існують у прямому SQL — і не беруть участі ні в імпорті, ні у формах, ні в історії.
Зв’язки
Section titled “Зв’язки”Зв’язок пов’язує рядок із рядком іншої таблиці тієї самої бази. Сітка показує значення
відображення цільового рядка — стовпець, який ви призначили полем відображення його таблиці, —
а фільтри проходять через зв’язок (clients_id.ville eq "Lyon"). Рядки, що посилаються на
рядок, показуються в деталях цього рядка.
Позначте Кілька рядків на запис, і зв’язок стане множинним: завдання залежить від
кількох завдань, стаття належить до кількох категорій. Пов’язані рядки показуються плашками,
вибираються через пошук і відкриваються одним клацанням із деталей рядка. Видалення цільового
рядка прибирає його зі списків, що на нього посилалися, — або відхиляється, якщо ви так
налаштували. Працюють фільтри has_any, has_all та is_null, і вони теж проходять через
зв’язок (taches_ids.titre contains "logo"). Множинний зв’язок поки що не сортується, не
групується й не імпортується.
Кнопка
Section titled “Кнопка”Поле Кнопка не має значення: воно діє. Воно відкриває адресу — https:// або
mailto:, яка може посилатися на рядок (mailto:{{E-mail}}), — або запускає автоматизацію
з тригером «кнопка» в тій самій таблиці. Воно відображається в клітинці, на картці та в
деталях рядка.
База, таблиця й поле мають опис, який можна змінювати без міграції. Він копіюється в
COMMENT ON, що його читає psql, у згенеровану документацію та в те, що агент читає через
describe_table.
Форматований текст і змінні
Section titled “Форматований текст і змінні”Форматований текст — це HTML-варіант довгого тексту, який вибирають під час створення поля
(«Форматований текст (HTML)»): заголовки, жирний, курсив, підкреслений, закреслений, списки,
цитати, код, посилання й роздільники — у візуальному редакторі. HTML очищується під час
запису, хоч би звідки він надходив — з інтерфейсу, API, сервера MCP чи імпорту, — а обмеження
CHECK додатково відхиляє небезпечні конструкції, записані безпосередньо через SQL (<script>,
атрибути on…, javascript:). Ні зображень, ні таблиць, ні кольорів: те, чого база не
збереже, не пропонується.
Довгий текст — простий чи форматований — може посилатися на стовпець свого рядка. Меню
Стовпець редактора вставляє посилання в позицію курсора: плашку у форматованому тексті,
{{Ville}} у Markdown.
Доставку заплановано на
{{Livraison}}до{{Ville}}.
- Стовпець зберігає посилання так, як його записано, —
{{ville}}, за фізичною назвою: саме це читаєpsql. - Усюди в інших місцях — у сітці, деталях рядка, API, сервері MCP, опублікованих поданнях, автоматизаціях — текст читається зі значенням рядка: «Доставку заплановано на 02/10/2026 до Lyon.» Змініть місто — зміниться й текст.
- Одиночний вибір читається за своїм підписом, особа — за іменем, дата — у вашому форматі; значення, вставлене у форматований текст, ніколи не стає розміткою.
- Стовпець, який читач не може читати, не дає нічого: ні свого значення, ні своєї назви.
Форматований текст не може заповнювати ШІ: модель пише текст, а не очищений HTML.
Зміна структури
Section titled “Зміна структури”Екран Структура бази — у її меню ⋯ на бічній панелі — показує таблиці та їхні поля: додавати, перейменовувати, робити обов’язковими, змінювати порядок, описувати, призначати поле відображення.

Зміна структури потребує рівня Керування. Без нього екран доступний лише для перегляду й нічого не пропонує: ні кнопок, ні олівця, ні маркерів для перетягування — обов’язковість і поле відображення лише вказано, а не запропоновано змінити. Сервер у будь-якому разі відхиляє кожну зміну; екран більше не вдає, що її приймає.
Додавання, перейменування та зміна типу поля проходять через рушій міграцій: план із кроків, короткі блокування та зрозуміла відмова, коли дані не вдається перетворити.
Перейменування бази, таблиці чи поля виконується в одному діалозі. Підпис змінюється
завжди, без міграції. Адміністратор бачить нижче «Перейменувати також у базі даних:
clients → comptes»: якщо позначити цей прапорець, змінюється й фізична назва, а також
показується аналіз впливу — запити, SQL-подання та автоматизації, що посилаються на стару
назву. Стара назва й далі обслуговується псевдонімом сумісності — поданням, — поки ви
оновлюєте свої запити.
Видалення нічого не стирає одразу: таблицю чи базу переміщено вбік
(zz_supprime_…), і вона лишається доступною для читання через SQL. Видалену базу можна
відновити; повернення окремої таблиці з інтерфейсу ще попереду.
Остаточне очищення доступне лише в адмініструванні, через тридцять днів, і починається з
перевіреного експорту в CSV.
basedb — вільне програмне забезпечення від Eodia, студії ШІ-орієнтованого програмного забезпечення.