Manual:Table page

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Manual:Page table and the translation is 99% complete.

Outdated translations are marked like this.
Other languages:
English • ‎Yorùbá • ‎dansk • ‎español • ‎français • ‎polski • ‎українська • ‎中文 • ‎日本語 • ‎한국어
Manuel:Contenu Schéma de base de données MédiaWiki page table/fr


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 le titre Supression des pages avec leurs relations dans les tables de texte et de révision 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 d'archive et les pages restaurées essaient de récupérer leur ancien ID de page.

MediaWiki offre un nombre d'outils adaptés :

  • L'ID de chacune des pages (excepté les pages spéciales) peut être recherché par le lien « page information » du menu Outils.
  • Le mot magique {{PAGEID}} peut être utilisé pour retourner l'Id de chaque page.
  • La page spéciale Special:Redirect peur être utilisée pour accéder aux pages via leur ID de page. Par exemple, Special:Redirect/page/931424, redirige vers la page actuelle.
  • index.php accepte le paramètre curid pour accéder aux pages avec leur ID de page. Par exemple, /w/index.php?curid=931424 va charger la page actuelle.

Il existe aussi beaucoup de fonctionalités d' API qui soit retournent, soit prennent entrée l'ID des pages. Par exemple, pour la page actuelle, page_id = 10501, voir http://www.mediawiki.org/w/api.php?action=query&prop=info&titles=Manual:Page%20table et http://www.mediawiki.org/w/api.php?action=query&prop=info&pageids=10501. Ce champ peut être accédé par WikiPage::getId(), Title::getArticleID(), etc.

page_namespace

Un nom de page est composé d'un espace de noms et d'un titre. Les clés des espaces de noms sont des constantes indépendantes de la langue de l'interface utilisateur, et 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 à 15 est pour les espaces de noms standards, et celui de 100 à 2147483647 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_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 »).

A partir de MediaWiki 1.10, les contrôles de protection de page ont été déplacés vers la table des restrictions de page, ainsi ce champ sera vide dans les bases de données générées par les versions plus récentes de MediaWiki. Néanmoins, ce champ est encore utilisé dans les versions actuelles de MediaWiki pour les lignes générées par les anciennes versions de MediaWiki!

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.

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 Manual:Random page 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 exitants 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 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é étrangère 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.

Résumé du schéma

Version de MediaWiki : 1.25

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

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

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 | name_title                  |            1 | page_namespace   | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
| page  |          0 | 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 dans les tables système [page, revision, text] :

SELECT
    p.page_id AS "page_id",
    CAST(p.page_title AS CHAR(10000) CHARACTER SET utf8) AS "page_title",
    r.rev_text_id AS "revision_id",
    t.old_id AS "text_id"
FROM
    page p
        INNER JOIN revision r
            ON p.page_latest = r.rev_id
        INNER JOIN text t
            ON r.rev_text_id = t.old_id

Autres considérations importantes :

  • pour trouver les pages non supprimées, ajoutez r.rev_deleted = 0
  • 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 au Inner Join respectif.

Suppression des pages avec leurs relations dans les tables text et revision

Ci-dessous nous donnons les étapes pouvant vous aider à supprimer des pages et leurs filles à partir des pages principales trouvées dans les tables page, revision et text.

Afficher toutes les clés associées de la table

-- 
-- Listing page titles and related relationships to other tables (revision, text, page)
--
SELECT
    `p`.`page_id` AS "page_id",
    CAST(`p`.`page_title` AS CHAR(10000) CHARACTER SET utf8) AS "page_title",
    `r`.`rev_text_id` AS "revision_id",
    `t`.`old_id` AS "text_id"
FROM
    page p
        INNER JOIN `revision` r
            ON `p`.`page_id` = `r`.`rev_page`    -- Confirmed to be reference to page.page_id
        INNER JOIN `text` t
            ON `r`.`rev_text_id` = `t`.`old_id`  -- Confirmed to be reference to revision table
WHERE 
     `p`.`page_title` LIKE '%Tests/parent-a%';    -- Match with title of a parent page

Suprimer les lignes de la base de données

-- 
-- Making a comma separated list of each table ids to delete, Will be used in a delete transaction
--
SELECT
    CONCAT('IN(', GROUP_CONCAT(`p`.`page_id`), ')') AS 'page',
    CONCAT('IN(', GROUP_CONCAT(`r`.`rev_text_id`), ')')  AS 'revision',
    CONCAT('IN(', GROUP_CONCAT(`t`.`old_id`), ')')  AS 'text'
FROM
    page p
        INNER JOIN `revision` r
            ON `p`.`page_id` = `r`.`rev_page`        -- Confirmed to be reference to page.page_id
        INNER JOIN text t
            ON `r`.`rev_text_id` = `t`.`old_id`      -- Confirmed to be reference to revision table
WHERE 
     p.page_title LIKE '%Tests/parent-a%';    -- Match with title of a parent page

Vous devriez obtenir un résultat se présentant ainsi :

+--------------------------------------------------+--------------------------------------------------+--------------------------------------------------+
| page                                             | revision                                         | text                                             |
+--------------------------------------------------+--------------------------------------------------+--------------------------------------------------+
| IN(5530,5528,5529,5530,5529,5528,5532,5532,5532) | IN(9918,9921,9917,9919,9920,9916,9922,9915,9923) | IN(9918,9921,9917,9919,9920,9916,9922,9915,9923) |
+--------------------------------------------------+--------------------------------------------------+--------------------------------------------------+
1 row in set (0.07 sec)

Remplacez l'ID concaténé dans la requête suivante

-- 
-- DELETING pages in one transaction
-- NOTE: adjust the content IN(...) with your own :)
--
SET autocommit=0;
START TRANSACTION;
  DELETE FROM `page` WHERE page_id IN(5530,5528,5529,5530,5529,5528,5532,5532,5532);
  DELETE FROM `revision` WHERE rev_text_id IN(9918,9921,9917,9919,9920,9916,9922,9915,9923);
  DELETE FROM `text` WHERE old_id IN(9918,9921,9917,9919,9920,9916,9922,9915,9923);
COMMIT;

Vous pouvez ensuite faire un peu de nettoyage en utilisant ce script de maintenance :

php maintenance/deleteOrphanedRevisions.php

Voir aussi