Manuel:table page

From mediawiki.org
This page is a translated version of the page Manual:Page table and the translation is 80% complete.
Outdated translations are marked like this.
Manuel:Contenu Schéma de base de données MédiaWiki table page
Version de MediaWiki :
1.5

La table page peut être considérée comme le « cœur du wiki ». Chaque page d'une installation MediaWiki a une entrée ici qui l'identifie par le titre et qui contient quelques métadonnées essentielles. Elle a été introduite pour la première fois dans r6710, dans MediaWiki 1.5.

Le texte de la page elle-même est contenu dans la table text . Pour récupérer le texte d'un article, MediaWiki cherche d'abord page_title dans la table des pages. Ensuite, page_latest est utilisé pour chercher rev_id dans la table revision , et rev_text_id est obtenu dans le processus. La valeur obtenue pour rev_text_id est utilisée pour chercher old_id dans la table des textes pour récupérer le texte. Quand une page est supprimée, les révisions sont déplacées vers la table archive .

Si vous voulez complètement supprimer une page manuellement de la base de données, soyez sûr de supprimer l'entrée de cette page dans la table des pages, et toutes les versions de cette page dans la table des révisions, ainsi que toutes les lignes textuelles correspondant seulement à cette page dans la table de texte. Ceci peut être fait en supprimant la ligne de la page, puis en exécutant maintenance/deleteOrphanedRevisions.php. Voir aussi ci-dessous pour savoir comment faire.

Champs

page_id

Clé primaire d'identification unique. Cette valeur est préservée des modifications et des renommages.

Les IDs des pages ne changent pas lorsque les pages sont déplacées, mais ils sont toujours modifiés lorsque les pages sont supprimées puis restaurées. Depuis MediaWiki 1.27, l'ID de page historique est conservé dans la table archive et les pages restaurées essaient de récupérer leur ancien ID de page.

For further information, see:

page_namespace

Un nom de page est composé d'un espace de noms et d'un titre. Les clés de l'espace de noms sont des constantes indépendantes du langage de l'interface utilisateur, définies dans includes/Defines.php.

Ce champ contient le numéro de l'espace de noms de la page. L'intervalle des valeurs de 0 à 99 est pour les espaces de noms du noyau, et celui de 100 à 10.000 pour les espaces de noms personnalisés.

page_title

Titre de la page expurgé, sans l'espace de noms, sur un maximum de 255 caractères (binaires). Il est enregistré comme texte, avec les espaces remplacés par des soulignés '_'. Le vrai titre affiché dans les articles est simplement ce titre dans lequel les soulignés (_) sont remplacés par des espaces ( ). Par exemple, une page dont le titre est « Talk:Foo Bar » aurait « Foo_Bar » dans ce champ.

page_is_redirect

La valeur 1 indique ici que l'article est une redirection; dans tous les autres cas, la valeur est 0 .

page_is_new

Ce champ mémorise l'indication que la page est nouvelle, c'est à dire que, soit elle ne possède qu'une révision, soit qu'elle n'a pas été éditée depuis qu'elle a été restaurée, même s'il y a plus d'une révision. Si le champ contient une valeur de 1, cela signifie que la page est nouvelle; sinon, la veleur est 0 . Les liens de Rollback ne sont pas affichés si la page est nouvelle, parce qu'il n'y a rien à restituer.

page_random

Valeur décimale aléatoire, entre 0 et 1, utilisée pour Special:Random (voir Manuel:Page aléatoire pour plus de détails). Généré par wfRandom() .

Vers 2005, un bogue fut responsable de ces valeurs aléatoires non-uniformes. Parce que le champ est initialisé à la création de la page, les wikis existants depuis un long moment pourraient encore comporter certaines de ces fausses valeurs. Voir T208909. See T208909.

page_touched

Cette référence horaire est mise à jour chaque fois que la page est modifiée et que cela nécessite de la regénérer, en invalidant les caches. En plus de l'édition, ceci inclue les modifications des droits, la création ou la suppression des pages liées, et la modification des modèles inclus. Mis à $dbw->timestamp() au moment de la création de la page.

page_links_updated

Version de MediaWiki :
1.23

Cette référence horaire est mise à jour à chaque fois qu'une page est re-analysée et que toutes ses tables de suivi des liens ont été mises à jour. Ceci est utile pour éviter la duplication des tâches coûteuses de mise à jour des liens arrière. Initialisé à la valeur par défaut NULL lorsque la page est créée par WikiPage::insertOn() .

page_latest

Ceci est une clé externe de rev_id pour la révision actuelle. Peut être à zéro pendant la création de la page. Il doit pointer vers une révision ayant un revision.rev_page valide, sinon vous aurez l'erreur « La révision numéro 0 de la page nommée 'Foo' n'existe pas » quand vous essayerez d'afficher la page. Peut être obtenu via WikiPage::getLatest().

page_len

Longueur non compressée en octets du texte source actuel de la page.

Néanmoins, ceci ne s'applique pas aux images qui ont encore des enregistrements dans cette table. Au lieu de cela, la longueur non compressée en octets de la description du fichier est utilisée comme ce dernier et se trouve dans le champ text.old_text .

La classe Wikipage dans includes/WikiPage.php possède deux méthodes, insertOn() et updateRevisionOn() responsables du remplissage de ces détails.

page_content_model

Version de MediaWiki :
1.21

Modèles de contenu, voir les constantes CONTENT_MODEL_XXX . Comparable à revision.rev_content_model.

page_lang

Version de MediaWiki :
1.24

Langue de la page de contenu. Initialiser avec la valeur NULL par défaut au moment de la création de page.

page_restrictions

Version de MediaWiki :
1.9

Ensemble de clés d'autorisation, séparées par des virgules, et indiquant qui a le droit de déplacer ou de modifier la page. Les sections de modification et de déplacement sont séparées par une virgule (par exemple, « edit=autoconfirmed,sysop:move=sysop »).

Versions de MediaWiki :
1.10 – 1.38
A partir de MediaWiki 1.10, les contrôles de protection de page ont été déplacés vers la table page_restrictions , ainsi ce champ sera vide dans les bases de données générées par les versions plus récentes de MediaWiki. (supprimé en 1.39)

page_counter

Version de MediaWiki :
1.24

Nombre de fois où la page a été vue. Cette fonctionnalité a été complètement supprimée dans MediaWiki 1.25, suite à une RFC (request for comment) . Même avant cela, beaucoup de sites incluant les projets Wikimedia l'ont désactivé pour améliorer les performances; voir Manuel:$wgDisableCounters pour les détails.


Résumé du schéma

Version de MediaWiki :
1.36
Gerrit change 690067

DESCRIBE page;

+--------------------+---------------------+------+-----+---------+----------------+
| 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    |                |
+--------------------+---------------------+------+-----+---------+----------------+
Version de MediaWiki :
1.35
Gerrit change 581141

DESCRIBE page;

+--------------------+---------------------+------+-----+----------------+----------------+
| 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           |                |
+--------------------+---------------------+------+-----+----------------+----------------+
Versions de MediaWiki :
1.25 – 1.34
Gerrit change 167655

DESCRIBE page;

+--------------------+---------------------+------+-----+----------------+----------------+
| 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           |                |
+--------------------+---------------------+------+-----+----------------+----------------+
Version de MediaWiki :
1.24
Gerrit change 135312

DESCRIBE page;

+--------------------+---------------------+------+-----+---------+----------------+
| 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    |                |
+--------------------+---------------------+------+-----+---------+----------------+
Version de MediaWiki :
1.23
Gerrit change 101170

DESCRIBE page;

+--------------------+---------------------+------+-----+---------+----------------+
| 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    |                |
+--------------------+---------------------+------+-----+---------+----------------+
Versions de MediaWiki :
1.21 – 1.22

DESCRIBE page;

+--------------------+---------------------+------+-----+---------+----------------+
| 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    |                |
+--------------------+---------------------+------+-----+---------+----------------+
Versions de MediaWiki :
1.19 – 1.20

DESCRIBE page;

+-------------------+---------------------+------+-----+---------+----------------+
| 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    |                |
+-------------------+---------------------+------+-----+---------+----------------+
Versions de MediaWiki :
1.10 – 1.18

DESCRIBE page;

+-------------------+---------------------+------+-----+---------+----------------+
| 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    |                |
+-------------------+---------------------+------+-----+---------+----------------+
Versions de MediaWiki :
1.5 – 1.9

DESCRIBE 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) 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    |                |
+-------------------+---------------------+------+-----+---------+----------------+

Index

Version de MediaWiki :
1.28

SHOW INDEX IN page;

+-------+------------+-----------------------------+--------------+------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| 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      |         |               |
+-------+------------+-----------------------------+--------------+------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

Exemple de code MySQL

Pages de listing et relations avec les autres tables essentielles

Le code suivant va sélectionner la version la plus récente de tous les articles en supposant que, ni la compression, ni le stockage externe ne sont utilisés :

SELECT page_id, page_namespace, page_title, page_latest "rev_id", old_text "text"
   FROM page
   INNER JOIN slots on page_latest = slot_revision_id
   INNER JOIN slot_roles on slot_role_id = role_id and role_name = 'main'
   INNER JOIN content on slot_content_id = content_id inner join text on substring( content_address, 4 ) = old_id and left( content_address, 3 ) = "tt:" and old_flags = "utf-8";

Autres considérations importantes :

  • pour trouver les pages dans l'espace de noms 0 ajoutez p.page_namespace = 0
  • pour trouver les pages qui ne sont pas des redirections, ajoutez p.page_is_redirect = 0

Ces déclarations additionnelles peuvent être ajoutées soit comme des conditions à une commande Where, soit comme des conditions associées aux instructions INNER JOIN.

Voir aussi