| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Sanja v.2 08.08.2003 18:13
продумывал её долго, а оказалось... гм.#
# В таблице site_doctree описывается древовидная структура страниц на сайте.
# Для каждого элемента хранится информация о его собственном номере, номере
# "родительского" по отношению к нему элемента и общем для всей ветви номере.
#
# Поскольку сайт может быть многоязычным, в дереве хранится информация
# о языке элемента.
#
# В этой таблице хранится лишь информация о структуре дерева документов;
# содержание страниц вынесено в отдельную таблицу site_content, поскольку
# требуется хранить старые версии документов, иметь возможность вернуть
# старую версию какого-то документа и т.п.
#
# Для каждого элемента вводятся дополнительные атрибуты, такие как
# отображение/неотображение в меню, кеширование, права доступа
# (все посетители или специальные условия - таблица site_access).
DROP TABLE IF EXISTS site_doctree;
CREATE TABLE site_doctree (
# Уникальный идентификатор документа:
doc_id int(16) NOT NULL auto_increment,
# Поле для сортировки записей внутри одной ветви:
orderidx int(16) NOT NULL default '0',
# Идентификатор "родительского" документа:
parent_id int(16) default '',
# Идентификатор, общий для всех документов в одной ветви:
thread_id int(16) NOT NULL default '',
# Можно ли двигать документ?
is_locked enum('yes','no') NOT NULL default 'no',
# язык документа (определяет, в какой папке, "/", "/en/"
# или "/de/" будет находиться fullpath, о котором ниже):
lang char(2) NOT NULL default 'ru',
# Имя документа в виртуальной "файловой системе":
filename varchar(255) NOT NULL default '',
# Полный путь - избыточная информация для ускорения
# обращений, например, "/en/about/boss/":
fullpath varchar(255) NOT NULL default '',
# Тип элемента (нормальная страница или ссылка на другой сайт):
itemtype enum('page','extlink')
NOT NULL default 'page',
# Удаляемые страницы не стираются из базы, а становятся 'невидимыми':
is_deleted enum('yes','no') NOT NULL default 'no',
# Дополнительный комментарий:
notes text NOT NULL default '',
# Права доступа к элементу (все посетители или согласно
# специальным условиям - таблица site_access):
access enum('all','custom') NOT NULL default 'all',
# Автор документа:
author varchar(255) NOT NULL default 'Unknown',
# IP-адрес автора правок:
ipaddr varchar(255) NOT NULL default 'Not detected',
# Отображать ли страницу в меню / на карте сайта?
in_menu enum('yes','no') NOT NULL default 'no',
# На сколько минут кешировать документ (0 - не кешировать)
is_cached int(3) NOT NULL default '0',
# Индексы
PRIMARY KEY (doc_id),
KEY idx_lang (lang),
KEY idx_orderidx (orderidx),
KEY idx_filename (filename),
KEY idx_fullpath (fullpath),
KEY idx_parent_id (parent_id),
KEY idx_tread_id (thread_id),
KEY idx_in_menu (in_menu),
KEY idx_is_deleted (is_deleted)
) COMMENT='Documents tree';
# Таблица с содержимым элементов дерева - связывается с таблицей
# site_doctree по ключевому полю doc_id, таблица site_content
# является keyed table.
DROP TABLE IF EXISTS site_content;
CREATE TABLE site_content (
# Уникальный ID записи в базе:
id int(16) NOT NULL auto_increment default '',
# Указывает, с контентом какого документа в дереве мы имеем дело:
doc_id int(16) NOT NULL default '',
# Заголовок страницы:
page_title text NOT NULL default '',
# Тело страницы (если это - не страница сайта, а ссылка на внешний сайт, тут пишется ссылка):
page_body text NOT NULL default '',
# является ли тело страницы кодом на Parser или чистым HTML?
is_code enum('yes','no') NOT NULL default 'no',
# Другие свойства документа:
# Keywords в <title>:
keywords varchar(255) NOT NULL default '',
# Description в <title>:
description text NOT NULL default '',
# Добавочный CSS:
add_css varchar(255) NOT NULL default '',
# Дозволять индексирование поисковиками?
allow_robots enum('yes','no') NOT NULL default 'yes',
# Шаблон оформлеения страницы:
template varchar(255) NOT NULL default 'default',
# Дата этой редакции документа:
revision datetime NOT NULL default '0000-00-00 00:00:00',
# Дополнительный комментарий:
notes text NOT NULL default '',
# Автор правок:
author varchar(255) NOT NULL default 'Unknown',
# IP-адрес автора правок:
ipaddr varchar(255) NOT NULL default 'Not detected',
# Индексы
PRIMARY KEY (id),
# Полнотекстовое индексирование <title> и <body>
# (не забыть тонкости поиска по <body> где is_code = yes !!!)
# FULLTEXT (page_title,page_body),
# Индексы для ускорения выборок
KEY idx_doc_id (doc_id)
) COMMENT='Documents content - multiple versions (linked to the items in the documents tree)';