Таблицы
Важных таблиц в Смереке всего две – Вершины и Атрибуты. Еще две таблицы используются для кэширования страниц (см. раздел «Смерека»), И еще одна – для организации внешнего перенаправления.
Вершины (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, файл не кэшируется.