Перейти до вмісту

Таблиці та поля

Кожна таблиця basedb — це таблиця PostgreSQL; кожне поле — типізований стовпець. Підпис, який ви вводите («Échéance»), стає зрозумілою фізичною назвою (echeance) завдяки стабільній слагіфікації: без діакритики, малими літерами, без зарезервованих слів.

ТипСтовпець PostgreSQLПримітки
Короткий текстtextодин рядок
Довгий текстtextMarkdown: уривок у сітці, відформатований вигляд під час наведення, окремий редактор; може посилатися на стовпець
Форматований текстtext + CHECKHTML, очищений під час запису, створений у візуальному редакторі — див. нижче
Числоnumericніколи не число з рухомою комою: сума не «пливе»
Валюта, Відсоток, Тривалість, Оцінкаnumericчисло та його формат відображення: 12,50 €, 15 %, 1:30, ★★★★☆
Прапорецьboolean
Датаdate
Дата й часtimestamptzабсолютний момент часу, показаний у часовому поясі читача
Одиночний вибірtext + CHECKколір, піктограма або зображення для кожного варіанта
Множинний вибірtext[] + CHECKфільтрується операторами для масивів
Електронна поштаtext + CHECKадреса, яку перевіряє база, відкривається одним клацанням
Телефон, Штрихкод, Адресаtextкороткий текст і його формат: посилання для дзвінка, моноширинний шрифт, посилання на мапу
URLtext + 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)

Валюта, Відсоток, Тривалість, Оцінка, Телефон, Штрихкод і Адреса вибираються як типи, але насправді це формати: стовпець лишається числом або текстом, змінюється лише спосіб читання.

ФорматДляЯк читається й вводиться
Валютачисла12 500,00 € — євро, долар, фунт, швейцарський франк, канадський долар, єна
Відсотокчисла15 %
Тривалістькількості секунд1:30, а вводиться як 1h30, 90 min
Оцінкачиславід 1 до 10 зірок, задається одним клацанням
Телефонкороткого текступосилання для дзвінка
Штрихкодкороткого текстумоноширинним шрифтом
Адресакороткого текступосилання на мапу; у деталях рядка Знайти адресу пропонує відповідні адреси, записані повністю; подання Мапа розміщує рядок

Формат можна змінити згодом (Відображення в редагуванні поля), не торкаючись збережених значень. Він не обмежує значення: оцінка 7 за шкалою з 5 так і лишається 7.

Значення за замовчуванням

Section titled “Значення за замовчуванням”

У редагуванні поля Значення за замовчуванням визначає, яке значення отримує рядок, створений без нього:

ВаріантДляСтворений рядок отримує
Фіксоване значеннябільшості типіввибране значення — статус «Новий», пріоритет 3
Сьогоднішня датадатидень його створення, у часовому поясі особи
Момент створеннядати й часуточний час
Особа, яка створює рядокособитого, хто його створив — «Відповідальний: я»

Панель нового рядка і форми відкриваються вже заповненими; спорожнення поля залишає його порожнім. Замовчання стосується будь-якого створення — інтерфейсу, API, MCP, імпорту, опублікованої форми, автоматизації, — навіть поля, яке особа не може змінювати: це правило таблиці. Наявні рядки не змінюються, а вставлення прямим SQL не отримує жодного значення: його застосовує basedb, а не стовпець.

Формула пишеться англійською (французькі назви теж працюють): поля — у квадратних дужках, аргументи розділяються ,:

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 — і не беруть участі ні в імпорті, ні у формах, ні в історії.

Зв’язок пов’язує рядок із рядком іншої таблиці тієї самої бази. Сітка показує значення відображення цільового рядка — стовпець, який ви призначили полем відображення його таблиці, — а фільтри проходять через зв’язок (clients_id.ville eq "Lyon"). Рядки, що посилаються на рядок, показуються в деталях цього рядка.

Позначте Кілька рядків на запис, і зв’язок стане множинним: завдання залежить від кількох завдань, стаття належить до кількох категорій. Пов’язані рядки показуються плашками, вибираються через пошук і відкриваються одним клацанням із деталей рядка. Видалення цільового рядка прибирає його зі списків, що на нього посилалися, — або відхиляється, якщо ви так налаштували. Працюють фільтри has_any, has_all та is_null, і вони теж проходять через зв’язок (taches_ids.titre contains "logo"). Множинний зв’язок поки що не сортується, не групується й не імпортується.

Поле Кнопка не має значення: воно діє. Воно відкриває адресу — 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.

Екран Структура бази — у її меню ⋯ на бічній панелі — показує таблиці та їхні поля: додавати, перейменовувати, робити обов’язковими, змінювати порядок, описувати, призначати поле відображення.

Екран «Структура» бази

Зміна структури потребує рівня Керування. Без нього екран доступний лише для перегляду й нічого не пропонує: ні кнопок, ні олівця, ні маркерів для перетягування — обов’язковість і поле відображення лише вказано, а не запропоновано змінити. Сервер у будь-якому разі відхиляє кожну зміну; екран більше не вдає, що її приймає.

Додавання, перейменування та зміна типу поля проходять через рушій міграцій: план із кроків, короткі блокування та зрозуміла відмова, коли дані не вдається перетворити.

Перейменування бази, таблиці чи поля виконується в одному діалозі. Підпис змінюється завжди, без міграції. Адміністратор бачить нижче «Перейменувати також у базі даних: clients → comptes»: якщо позначити цей прапорець, змінюється й фізична назва, а також показується аналіз впливу — запити, SQL-подання та автоматизації, що посилаються на стару назву. Стара назва й далі обслуговується псевдонімом сумісності — поданням, — поки ви оновлюєте свої запити.

Видалення нічого не стирає одразу: таблицю чи базу переміщено вбік (zz_supprime_…), і вона лишається доступною для читання через SQL. Видалену базу можна відновити; повернення окремої таблиці з інтерфейсу ще попереду. Остаточне очищення доступне лише в адмініструванні, через тридцять днів, і починається з перевіреного експорту в CSV.

basedb — вільне програмне забезпечення від Eodia, студії ШІ-орієнтованого програмного забезпечення.