Manuel:table page
↑ 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 page
.
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 text
pour récupérer le texte.
Quand une page est supprimée, les révisions sont déplacées vers la table archive .
page
, et toutes les versions de cette page dans la table revision
, ainsi que toutes les lignes textuelles correspondant seulement à cette page dans la table text
. Ceci peut être fait en supprimant la ligne de la page, puis en exécutant maintenance/deleteOrphanedRevisions.php.
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.
Pour plus d’informations, voir :
- Help:Page ID - destiné aux utilisateurs.
- Manual:Page ID - destiné aux développeurs.
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 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 la valeur 1
, cela signifie que la page est nouvelle; sinon, la valeur est 0
.
Les liens de restauration ne sont pas affichés quand la page est nouvelle parce qu'il n'y a rien eu à 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.
page_touched
Cette référence horaire est mise à jour chaque fois que la page est modifiée et que sa regénération est nécessaire 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èle 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 |
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.
titlevector
- Utilisé uniquement par PostgreSQL
Utilisé à la place de la table searchindex par PostgreSQL pour faciliter la recherche en texte intégral.
Résumé du schéma
Version de MediaWiki : | ≥ 1.43 |
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_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 | binary(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.39 – 1.42 |
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_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 | | +--------------------+---------------------+------+-----+---------+----------------+
Versions de MediaWiki : | 1.36 – 1.38 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
.