Page table

Материал из свободной русской энциклопедии «Традиция»
Перейти к: навигация, поиск

Таблица Page - это центральная таблица Вики. Каждой странице сайта, работающего под Mediawiki, соответствует запись в этой таблице. В записи хранится имя и некоторые метаданные.

Впервые появилась в версии r6710 MediaWiki 1.5.

Сам текст страницы хранится в таблице text. Чтобы извлечь текст статьи, Mediawiki сначала ищет Заголовок статьи - Поле page_title в таблице Page. Соответствующий заголовку идентификатор версии page_latest используется для поиска по rev_id, в таблице revision table. Из соответствующей записи в таблице revision table извлекается идентификатор rev_text_id который используется уже для поиска по old_id в text table. В результате мы таки получаем указатель на текст.

Кстати, о птичках. Если Вы хотите полностью удалить страницу вручную из базы - надо удалять не только запись о страницы в таблице Page, но и все записи о версиях страницы в таблице revisions, и все записи, соответствующие странице в таблице text. Удаление записей из таблицы text без удаления соответствующих ссылок в таблицах revisions и Page приведёт к непредсказуемой работе движка. Потому что текста в базе физически не будет, но ссылки на него останутся.

Note Предупреждение! Due to the way the archive table operates, these revisions cannot be restored. They are permanently deleted.

Поля[править]

page_id[править]

Уникальный идентификатор. Первичный ключ. Остаётся неизменным в процессе редактирований и переименований, но не защишается при удалении и восстановлении страницы.

page_namespace[править]

Имя страницы делится на пространство имён (namespace) и заголовок.

Ключи namespace являются цифровыми идентификаторами, независимыми от языка. См. includes/Defines.php.

Данное поле хранит номер namespace в котором расположена страница. Эти номера лежат в диапазоне от 0 до 15 для стандартных пространств имён и от 100 до 255 для настраиваемых.

page_title[править]

Заголовок статьи, очищенный от наименования пространства имён. Все пробелы заменены подчёркиваниями.

page_restrictions[править]

MediaWiki version: 1.9 and earlier

Comma-separated set of permission keys indicating who can move or edit the page.

Beginning with MediaWiki 1.10, page protection controls were moved to the page restrictions table.

page_counter[править]

Счётчик просмотров страницы.

page_is_redirect[править]

Содержит единицу 1 если страница является Страницей перенаправления, 0, если нет.

page_is_new[править]

Содержит 1, если статья является новой (т.е. была всего одна правка). 0, если нет.

page_random[править]

Случайное число от 0 до 1, используется в Special:Randompage.

page_touched[править]

timestamp Обновляется каждый раз, когда страница изменяется способом, требующим обновления закэшированных страниц. Не только при редактировании, но и при изменении прав доступа, создании или удалении связанных страниц, изменении употреблённых на странице шаблонов.

page_latest[править]

Внешний ключ к rev_id, соответствующий актуальной версии страницы. Может быть равен 0 во время создания страницы.

page_len[править]

Uncompressed (??) длина в байтах актуального исходного (т.е. со всей разметкой) текста страницы.

Структура таблицы[править]

MediaWiki version: 1.10
MediaWiki version: 1.9
MediaWiki version: 1.8
MediaWiki version: 1.7
MediaWiki version: 1.6
MediaWiki version: 1.5

DESCRIBE page in MediaWiki 1.5 through 1.10 results in:

mysql> describe mw_page;
+-----------------------+---------------------+------+-----+---------+----------------+
| Field                 | Type                | Null | Key | Default | Extra          |
+-----------------------+---------------------+------+-----+---------+----------------+
| page_id               | int(8) unsigned     | NO   | PRI | NULL    | auto_increment |
| page_namespace        | int(11)             | NO   | MUL | NULL    |                |
| page_title            | varchar(255)        | NO   |     | NULL    |                |
| page_restrictions     | tinyblob            | NO   |     | NULL    |                |
| page_counter          | bigint(20) unsigned | NO   |     | 0       |                |
| page_is_redirect      | tinyint(1) unsigned | NO   |     | 0       |                |
| page_is_new           | tinyint(1) unsigned | NO   |     | 0       |                |
| page_random           | double unsigned     | NO   | MUL | NULL    |                |
| page_touched          | char(14)            | NO   |     | NULL    |                |
| page_latest           | int(8) unsigned     | NO   |     | NULL    |                |
| page_len              | int(8) unsigned     | NO   | MUL | NULL    |                |
+-----------------------+---------------------+------+-----+---------+----------------+
11 rows in set (0.02 sec)

Ссылки[править]

Оригинал на английском