Таблиці
Важливих таблиць у Смереці всього дві – Вершини та Атрибути. Ще дві таблиці використовуються для кешування сторінок (див. розділ «Смерекеш»), і ще одна – для організації зовнішнього перенаправлення.
Вершини (nodes)
Таблиця складається з наступних полів:
id – 4-байтове ціле число без знаку. Є первісним ключем таблиці.
parent – 4-байтове ціле число без знаку. Є вказівником на вершину-господиню даної вершини.
seqpos – 4-байтове ціле число без знаку. Задає послідовність вершин з однаковою ієрархічною позицією (рівних вершин, sibling nodes).
class – 4-байтове ціле число без знаку. Задає клас вершини, фактично є вказівником на вершину метакласу даної вершини. Див. розділ Класи вершин.
accesslevel – 1-байтове ціле число без знаку. Задає рівень доступу для вершини. Див. розділ Права доступу.
link – 4-байтове ціле число без знаку. Посилання на іншу вершину в дереві, за умовчанням 0 – тобто немає посилання.
zone – 4-байтове ціле число без знаку. Визначає зону адміністрування, до якої належить вершина. Див. розділ Права доступу.
symbname – строка змінної довжини, до 32 символів. Містить символічне ім’я вершини для обчислення її URL.
lastupdate – дата останньої модифікації вершини.
Вершини Смереки утворюють дерево, організоване за допомогою полів parent та seqpos. Це дерево в найпростішому випадку безпосередньо відображається в дереві документів сайту. Наприклад, якщо коренева вершина сайту example.com має підпорядковану вершину Shop, а ця остання – підпорядковану вершину Mercedes, то для купівлі Мерседеса треба ввести example.com/Shop/Mercedes.html.
Атрибути (attrs)
Смерека зберігає всі атрибути в одній таблиці. Таблиця складається з наступних полів:
id – 4-байтове ціле число без знаку. Є первісним ключем таблиці.
nodeid – 4-байтове ціле число без знаку. Вказівник на вершину, до якої належить даний атрибут. Мусить містити значення якогось первісного ключа з таблиці вершин.
name – строка змінної довжини, до 32 символів. Позначає внутрішнє ім’я даного атрибуту. Смерека використовує це ім’я для ідентифікації атрибуту, але само це ім’я на веб-сторінках здебільшого не з’являється.
datatype – 1-байтове ціле число, яке визначає тип даних атрибута. Допустимі значення :
1 – ціле число (зі знаком)
2 – ціле число (без знаку)
3 – посилання на вершину
4 – строка
5 – текст (до 16 Мб)
6 – календарна дата (і час)
7 – файл (в тому числі зображення)
8 – дійсне число (з плаваючою точкою)
lang – поле на 2 символи, яке визначає мовну версію атрибута; мовно-незалежні атрибути містять тут NULL.
dwvalue – 4-байтове ціле число без знаку (double word). Спосіб використання визначається типом даних атрибута:
2 – ціле число (без знаку) – значення атрибута;
3 – посилання на вершину – вказівник на іншу вершину дерева Смереки. Отже, допустимими є значення 0 або ід якоїсь існуючої вершини. Це дозволяє контролювати цілісність посилань. Коли вершина видаляється безповоротно, всі вказівники на неї також видаляються, яким би вершинам вони не належали.
dblvalue – 8-байтове число з плаваючою точкою. Використовується для атрибутів типу «Дійсне число».
datevalue – 8-байтове поле дати. Використовується для атрибутів типу «Календарна дата».
strvalue – строка змінної довжини, до 512 символів. Спосіб використання визначається типом даних атрибута:
4 – строка – значення атрибута;
7 – файл (в тому числі зображення) – список атрибутів файлу у форматі name="value", розділених пробілами. Див. далі «Файлові атрибути».
txtvalue – текстове поле розміром до 16 мегабайт, яке є значенням атрибуту типу текст.
Файлові атрибути
Атрибут типу файл – приклад структурного атрибуту, значення якого не є просто число чи строка, а колекція примітивних типів даних. Атрибути такого типу описують зовнішні файли, в тому числі зображення. Але вони не містять самих файлових даних – вони зберігаються як окремі файли в серверній ОС. Смерека зберігає всі елементи файлового атрибуту у вигляді строки.
fname – строка, яка містить ім’я файлу. Якщо файл не підлягає кешуванню, fname містить повний шлях та ім’я файла на сервері. Якщо файл тільки кешується на сервері, а постійно зберігається в іншому місці (сховищі), то fname містить повний шлях та ім’я файла у сховищі. На сервері кешований файл міститься у певному фіксованому каталозі.
casheable – логічне поле, яке дозволяє кешування файлу. За умовчанням false, файл не кешується.