Manual:Page table/uk

Таблиця page може вважатися "ядром вікі". Кожна сторінка в інсталяції MediaWiki має запис в цій таблиці, який ідентифікує цю сторінку за її назвою та містить деякі необхідні метадані. Таблиця була вперше запроваджена у r6710, в MediaWiki 1.5.

Текст сторінки зберігається в таблиці. Щоб отримати текст статті, MediaWiki спочатку шукає page_title в таблиці page. Далі, використовується page_latest для для пошуку в  table, і  отримується в процесі. Отримане значення використовується для пошуку  в таблиці text щоб врешті отримати сам текст. Коли сторінку видаляють, її версії переміщаються до таблиці.

page_id
Унікально ідентифікує первинний ключ. Це значення зберігається незмінним під час редагувань та перейменувань.

Ідентифікатори сторінок (page IDs) не змінюються, коли сторінки переміщуються, але вони можуть змінюватися, коли сторінки видаляються, а потім відновлюються. Починаючи з MediaWiki 1.27, історичний ідентифікатор сторінки (page ID) зберігається в таблиці, а відновлені сторінки намагаються відновити свій старий ідентифікатор сторінки.

MediaWiki пропонує низку відповідних інструментів:


 * Ідентифікатор будь-якої сторінки «ID сторінки» (крім спеціальних сторінок) можна знайти за посиланням «Iнформація про сторінку» в меню «Інструменти».
 * Магічне слово  можна використати для повернення ідентифікатора сторінки.
 * Спеціальну сторінку Special:Redirect можна використовувати для доступу до сторінок через їхні ідентифікатори сторінок. Наприклад, Special:Redirect/page/ перенаправляє на поточну сторінку.
 * index.php приймає параметр  для доступу до сторінок через їхні ідентифікатори. Наприклад, [///w/index.php?curid= /w/index.php?curid=] завантажить цю сторінку.

Існує також багато функцій API, які або повертають ідентифікатор сторінки (page ID), або використовують його як вхідні дані. Наприклад, для цієї сторінки  — див. https://www.mediawiki.org/w/api.php?action=query&prop=info&titles=Manual:Page%20table/uk і https://www.mediawiki.org/w/api.php?action=query&prop=info&pageids=833744. До цього поля можна отримати доступ через, тощо.

page_namespace
Ім'я сторінки (page name) розбивається на простір назв (namespace) і назву сторінки (page title). The namespace keys are UI-language-independent constants, defined in.

This field contains the number of the page's namespace. The values range from 0 to 99 for the core namespaces, and from 100 to 10,000 for custom namespaces.

page_title
The sanitized page title, without the namespace, with a maximum of 255 characters (binary). It is stored as text, with spaces replaced by underscores. The real title shown in articles is just this title with underscores (_) converted to spaces. For example, a page titled "Talk:Foo Bar" would have "Foo_Bar" in this field.

page_restrictions
Comma-separated set of permission keys indicating who can move or edit the page. Edit and move sections are separated by a colon (e.g., "edit=autoconfirmed,sysop:move=sysop").

page_counter
Number of times the page has been viewed. This feature was completely removed in MediaWiki 1.25, following a request for comment. Even before that, many sites including Wikimedia projects disabled it to increase performance; see for details.

page_is_redirect
A value of   here indicates the article is a redirect; it is   in all other cases.

page_is_new
This field stores whether the page is new, meaning it either has only one revision or has not been edited since being restored, even if there is more than one revision. If the field contains a value of  , then it indicates that the page is new; otherwise, it is  . Rollback links are not displayed if the page is new, since there is nothing to roll back to.

page_random
Random decimal value, between 0 and 1, used for Special:Random (see for more details). Generated by.

Around 2005, a bug caused these random values to be non-uniform. Since the field is set at page creation, wikis that have existed for a long time might still have some of these erroneous values. See T208909.

page_touched
This timestamp is updated whenever the page changes in a way requiring it to be re-rendered, invalidating caches. Aside from editing, this includes permission changes, creation or deletion of linked pages, and alteration of contained templates. Set to at the time of page creation.

page_links_updated
This timestamp is updated whenever a page is re-parsed and it has all the link tracking tables updated for it. This is useful for de-duplicating expensive backlink update jobs. Set to the default value of NULL when the page is created by.

page_latest
This is a foreign key to rev_id for the current revision. It may be 0 during page creation. It needs to link to a revision with a valid, or there will be the "The revision #0 of the page named 'Foo' does not exist" error when one tries to view the page. Can be obtained via.

page_len
Uncompressed length in bytes of the page's current source text.

This however, does not apply to images which still have records in this table. Instead, the uncompressed length in bytes of the  for the file is used as the latter is in the   field.

The  class in   has two methods, viz.,   and   that are responsible for populating these details.

page_content_model
Content model, see CONTENT_MODEL_XXX constants. Comparable to.

page_lang
Page content language. Set to the default value of NULL at the time of page creation.



Короткий опис схеми
++-+--+-+-++ ++-+--+-+-++ ++-+--+-+-++
 * Field             | Type                | Null | Key | Default | Extra          |
 * page_id           | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
 * page_namespace    | int(11)             | NO   | MUL | NULL    |                |
 * page_title        | varbinary(255)      | NO   |     | NULL    |                |
 * page_restrictions | tinyblob            | YES  |     | NULL    |                |
 * page_is_redirect  | tinyint(3) unsigned | NO   | MUL | 0       |                |
 * page_is_new       | tinyint(3) unsigned | NO   |     | 0       |                |
 * page_random       | double unsigned     | NO   | MUL | NULL    |                |
 * page_touched      | binary(14)          | NO   |     | NULL    |                |
 * page_links_updated | varbinary(14)      | YES  |     | NULL    |                |
 * page_latest       | int(10) unsigned    | NO   |     | NULL    |                |
 * page_len          | int(10) unsigned    | NO   | MUL | NULL    |                |
 * page_content_model | varbinary(32)      | YES  |     | NULL    |                |
 * page_lang         | varbinary(35)       | YES  |     | NULL    |                |

++-+--+-+++ ++-+--+-+++ ++-+--+-+++
 * Field             | Type                | Null | Key | Default        | Extra          |
 * page_id           | int(10) unsigned    | NO   | PRI | NULL           | auto_increment |
 * page_namespace    | int(11)             | NO   | MUL | NULL           |                |
 * page_title        | varbinary(255)      | NO   |     | NULL           |                |
 * page_restrictions | tinyblob            | YES  |     | NULL           |                |
 * page_is_redirect  | tinyint(3) unsigned | NO   | MUL | 0              |                |
 * page_is_new       | tinyint(3) unsigned | NO   |     | 0              |                |
 * page_random       | double unsigned     | NO   | MUL | NULL           |                |
 * page_touched      | binary(14)          | NO   |     |                |                |
 * page_links_updated | varbinary(14)      | YES  |     | NULL           |                |
 * page_latest       | int(10) unsigned    | NO   |     | NULL           |                |
 * page_len          | int(10) unsigned    | NO   | MUL | NULL           |                |
 * page_content_model | varbinary(32)      | YES  |     | NULL           |                |
 * page_lang         | varbinary(35)       | YES  |     | NULL           |                |

++-+--+-+++ ++-+--+-+++ ++-+--+-+++
 * Field             | Type                | Null | Key | Default        | Extra          |
 * page_id           | int(10) unsigned    | NO   | PRI | NULL           | auto_increment |
 * page_namespace    | int(11)             | NO   | MUL | NULL           |                |
 * page_title        | varbinary(255)      | NO   |     | NULL           |                |
 * page_restrictions | tinyblob            | NO   |     | NULL           |                |
 * page_is_redirect  | tinyint(3) unsigned | NO   | MUL | 0              |                |
 * page_is_new       | tinyint(3) unsigned | NO   |     | 0              |                |
 * page_random       | double unsigned     | NO   | MUL | NULL           |                |
 * page_touched      | binary(14)          | NO   |     |                |                |
 * page_links_updated | varbinary(14)      | YES  |     | NULL           |                |
 * page_latest       | int(10) unsigned    | NO   |     | NULL           |                |
 * page_len          | int(10) unsigned    | NO   | MUL | NULL           |                |
 * page_content_model | varbinary(32)      | YES  |     | NULL           |                |
 * page_lang         | varbinary(35)       | YES  |     | NULL           |                |

++-+--+-+-++ ++-+--+-+-++ ++-+--+-+-++
 * Field             | Type                | Null | Key | Default | Extra          |
 * page_id           | int(10) unsigned    | NO   | PRI | NULL    | AUTO_INCREMENT |
 * page_namespace    | int(11)             | NO   | MUL | NULL    |                |
 * page_title        | varchar(255) binary | NO   |     | NULL    |                |
 * page_restrictions | tinyblob            | NO   |     | NULL    |                |
 * page_counter      | bigint(20) unsigned | NO   |     | 0       |                |
 * page_is_redirect  | tinyint(3) unsigned | NO   | MUL | 0       |                |
 * page_is_new       | tinyint(3) unsigned | NO   |     | 0       |                |
 * page_random       | real unsigned       | NO   | MUL | NULL    |                |
 * page_touched      | binary(14)          | NO   |     | NULL    |                |
 * page_links_updated | varbinary(14)      | YES  |     | NULL    |                |
 * page_latest       | int(10) unsigned    | NO   |     | NULL    |                |
 * page_len          | int(10) unsigned    | NO   | MUL | NULL    |                |
 * page_content_model | varbinary(32)      | YES  |     | NULL    |                |
 * page_lang         | varbinary(35)       | YES  |     | NULL    |                |

++-+--+-+-++ ++-+--+-+-++ ++-+--+-+-++
 * Field             | Type                | Null | Key | Default | Extra          |
 * page_id           | int(10) unsigned    | NO   | PRI | NULL    | AUTO_INCREMENT |
 * page_namespace    | int(11)             | NO   | MUL | NULL    |                |
 * page_title        | varchar(255) binary | NO   |     | NULL    |                |
 * page_restrictions | tinyblob            | NO   |     | NULL    |                |
 * page_counter      | bigint(20) unsigned | NO   |     | 0       |                |
 * page_is_redirect  | tinyint(3) unsigned | NO   | MUL | 0       |                |
 * page_is_new       | tinyint(3) unsigned | NO   |     | 0       |                |
 * page_random       | real unsigned       | NO   | MUL | NULL    |                |
 * page_touched      | binary(14)          | NO   |     | NULL    |                |
 * page_links_updated | varbinary(14)      | YES  |     | NULL    |                |
 * page_latest       | int(10) unsigned    | NO   |     | NULL    |                |
 * page_len          | int(10) unsigned    | NO   | MUL | NULL    |                |
 * page_content_model | varbinary(32)      | YES  |     | NULL    |                |

++-+--+-+-++ ++-+--+-+-++ ++-+--+-+-++
 * Field             | Type                | Null | Key | Default | Extra          |
 * page_id           | int(10) unsigned    | NO   | PRI | NULL    | AUTO_INCREMENT |
 * page_namespace    | int(11)             | NO   | MUL | NULL    |                |
 * page_title        | varchar(255) binary | NO   |     | NULL    |                |
 * page_restrictions | tinyblob            | NO   |     | NULL    |                |
 * page_counter      | bigint(20) unsigned | NO   |     | 0       |                |
 * page_is_redirect  | tinyint(3) unsigned | NO   | MUL | 0       |                |
 * page_is_new       | tinyint(3) unsigned | NO   |     | 0       |                |
 * page_random       | real unsigned       | NO   | MUL | NULL    |                |
 * page_touched      | binary(14)          | NO   |     | NULL    |                |
 * page_latest       | int(10) unsigned    | NO   |     | NULL    |                |
 * page_len          | int(10) unsigned    | NO   | MUL | NULL    |                |
 * page_content_model | varbinary(32)      | YES  |     | NULL    |                |

+---+-+--+-+-++ +---+-+--+-+-++ +---+-+--+-+-++
 * Field            | Type                | Null | Key | Default | Extra          |
 * page_id          | int(10) unsigned    | NO   | PRI | NULL    | AUTO_INCREMENT |
 * page_namespace   | int(11)             | NO   | MUL | NULL    |                |
 * page_title       | varchar(255) binary | NO   |     | NULL    |                |
 * page_restrictions | tinyblob           | NO   |     | NULL    |                |
 * page_counter     | bigint(20) unsigned | NO   |     | 0       |                |
 * page_is_redirect | tinyint(3) unsigned | NO   | MUL | 0       |                |
 * page_is_new      | tinyint(3) unsigned | NO   |     | 0       |                |
 * page_random      | real unsigned       | NO   | MUL | NULL    |                |
 * page_touched     | binary(14)          | NO   |     | NULL    |                |
 * page_latest      | int(10) unsigned    | NO   |     | NULL    |                |
 * page_len         | int(10) unsigned    | NO   | MUL | NULL    |                |

+---+-+--+-+-++ +---+-+--+-+-++ +---+-+--+-+-++
 * Field            | Type                | Null | Key | Default | Extra          |
 * page_id          | int(10) unsigned    | NO   | PRI | NULL    | AUTO_INCREMENT |
 * page_namespace   | int(11)             | NO   | MUL | NULL    |                |
 * page_title       | varchar(255) binary | NO   |     | NULL    |                |
 * page_restrictions | tinyblob           | NO   |     | NULL    |                |
 * page_counter     | bigint(20) unsigned | NO   |     | 0       |                |
 * page_is_redirect | tinyint(3) unsigned | NO   |     | 0       |                |
 * page_is_new      | tinyint(3) unsigned | NO   |     | 0       |                |
 * page_random      | real unsigned       | NO   | MUL | NULL    |                |
 * page_touched     | binary(14)          | NO   |     | NULL    |                |
 * page_latest      | int(10) unsigned    | NO   |     | NULL    |                |
 * page_len         | int(10) unsigned    | NO   | MUL | NULL    |                |

+---+-+--+-+-++ +---+-+--+-+-++ +---+-+--+-+-++
 * 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) binary | 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      | real unsigned       | NO   | MUL | NULL    |                |
 * page_touched     | char(14) binary     | NO   |     | NULL    |                |
 * page_latest      | int(8) unsigned     | NO   |     | NULL    |                |
 * page_len         | int(8) unsigned     | NO   | MUL | NULL    |                |

Індекси
 +---++-+--+--+---+-+--++--++-+---+ +---++-+--+--+---+-+--++--++-+---+ +---++-+--+--+---+-+--++--++-+---+
 * Table | Non_unique | Key_name                   | Seq_in_index | Column_name      | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
 * page |          0 | PRIMARY                     |            1 | page_id          | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
 * page |          0 | page_name_title             |            1 | page_namespace   | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
 * page |          0 | page_name_title             |            2 | page_title       | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
 * page |          1 | page_random                 |            1 | page_random      | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
 * page |          1 | page_len                    |            1 | page_len         | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
 * page |          1 | page_redirect_namespace_len |            1 | page_is_redirect | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
 * page |          1 | page_redirect_namespace_len |            2 | page_namespace   | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
 * page |          1 | page_redirect_namespace_len |            3 | page_len         | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |



Приклади запитів на SQL


Список сторінок та їх зв'язків з іншими основними таблицями
Наступний запит вибере найостанніші версії всіх статей за умови, що стиснення або зовнішня пам’ять не використовуються:

Інші важливі аспекти:


 * щоб знайти невилучені сторінки, додайте
 * щоб знайти сторінки в просторі назв 0, додайте
 * щоб знайти сторінки, які не є перенаправленнями, додайте

Ці додаткові оператори можна додати або як умови до оператора Where, або як умови до відповідного оператора Inner Join.

