Новости | 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)';