Manual:Page table/fr

La table des pages peut être considérée comme le « coeur 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. Introduit pour la première fois dans r6710, dans MediaWiki 1.5.

Le texte de la page elle-même est contenu dans la table. 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 dans la table, et  est obtenu dans le processus. La valeur obtenue pour est utilisée pour chercher  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.

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, cette valeur est encore 'préservée' des suppressions par un champ analogue dans la table d'archive (introduit dans MediaWiki 1.11).

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 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/, redirige vers la page actuelle.
 * index.php accepte le paramètre  pour accéder aux pages avec leur ID de page. Par exemple, [///w/index.php?curid= /w/index.php?curid=] 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,, 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,  , 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.

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
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 »).

page_counter
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 pour les détails.

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

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  , cela signifie que la page est nouvelle; sinon, la veleur est  . 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 pour plus de détails). Généré par.

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 à au moment de la création de la page.

page_links_updated
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 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.

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  du fichier est utilisée comme ce dernier et se trouve dans le champ.

La classe  dans   possède deux méthodes,   et   responsables du remplissage de ces détails.

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

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

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

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] :

Autres considérations importantes :


 * to find undeleted pages add "r.rev_deleted = 0"
 * to find pages in namespace 0 add "p.page_namespace = 0"
 * to find pages that are not redirects add "p.page_is_redirect = 0"

These additional statements can be added either as conditions to a Where statement or as conditions on the appropriate Inner Join statement.

Deleting pages with their relationships in text and revision tables
The following shows the steps to run to help you delete pages and their children from the main pages in the page, revision and text tables.

Listing all related table keys

Deleting from database the rows

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

 +--+--+--+ +--+--+--+ +--+--+--+ 1 row in set (0.07 sec)
 * 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) |

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

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