Příručka:Databázová tabulka page - stránek

This page is a translated version of the page Manual:Page table and the translation is 100% complete.
Manuál:Obsah MediaWiki schéma databáze Tabulka page
Verze MediaWiki:
1.5

Tabulku page lze označit za "jádro wiki". Každá stránka v instalaci MediaWiki zde má položku, která ji identifikuje podle názvu a obsahuje některá zásadní metadata. Poprvé byla představena v r6710, v MediaWiki 1.5.

Samotný text stránky je uložen v tabulce text . Chcete-li získat text článku, MediaWiki nejprve hledá page_title v tabulce stránek. Poté se page_latest použije k vyhledání rev_id v tabulce revizí revision a v procesu se získá rev_text_id . Hodnota získaná pro rev_text_id se používá k vyhledání old_id v textové tabulce za účelem získání textu. Když je stránka odstraněna, revize se přesunou do tabulky archive .

Pokud chcete zcela ručně odstranit stránku z databáze, nezapomeňte odstranit položku pro stránku v tabulce stránek, a pro všechny revize stránky v tabulce revizí a všechny řádky textu. odpovídající pouze stránce v textové tabulce. To lze provést odstraněním řádku stránky a spuštěním maintenance/deleteOrphanedRevisions.php. Viz také níže jak postupovat.

Pole

page_id

Jedinečně identifikující primární klíč. Tato hodnota je zachována během úprav a přejmenování.

ID stránek se nemění, když jsou stránky přesunuty, ale mohou se změnit, když jsou stránky smazány a poté obnoveny. Od MediaWiki 1.27 zůstávají historické ID stránky v tabulce archive a obnovené stránky se pokoušejí získat zpět své staré ID stránky.

Další podrobnosti najdete na:

page_namespace

Název stránky je rozdělen na jmenný prostor a titulek. Klíče jmenného prostoru jsou konstanty nezávislé na jazyce uživatelského rozhraní, definované v includes/Defines.php.

Toto pole obsahuje číslo jmenného prostoru stránky. Hodnoty se pohybují od 0 do 99 pro základní jmenné prostory a od 100 do 10 000 pro vlastní jmenné prostory.

page_title

Vyčištěný název stránky bez jmenného prostoru s maximálně 255 znaky (binární). Je uložen jako text s mezerami nahrazenými podtržítky. Skutečný název zobrazený v článcích je pouze tento název s podtržítky (_) převedenými na mezery ( ). Například stránka s názvem "Talk:Foo Bar" by v tomto poli měla "Foo_Bar".

page_is_redirect

Hodnota 1 zde znamená, že článek je přesměrován; ve všech ostatních případech je to 0.

page_is_new

V tomto poli je uloženo, zda je stránka nová, což znamená, že má buď pouze jednu revizi, nebo nebyla upravena od doby, kdy byla obnovena, i když existuje více než jedna revize. Pokud pole obsahuje hodnotu 1, znamená to, že stránka je nová; jinak je to 0. Odkazy Rollback se nezobrazují, pokud je stránka nová, protože není k čemu se vrátit.

page_random

Náhodná desítková hodnota, mezi 0 a 1, použitá pro Special:Random (další podrobnosti viz Manual:Random page ). Generováno wfRandom() .

Kolem roku 2005 chyba způsobila, že tyto náhodné hodnoty nebyly jednotné. Protože je pole nastaveno při vytváření stránky, wikiny, které existují již dlouhou dobu, mohou mít stále některé z těchto chybných hodnot. Viz T208909.

page_touched

Toto časové razítko se aktualizuje vždy, když se stránka změní způsobem, který vyžaduje její opětovné vykreslení, což znehodnotí mezipaměť. Kromě úprav to zahrnuje změny oprávnění, vytváření nebo mazání propojených stránek a změny obsažených šablon. Při vytváření stránky nastaveno na $dbw->timestamp() .

page_links_updated

Verze MediaWiki:
1.23

Toto časové razítko se aktualizuje vždy, když je stránka znovu analyzována a jsou pro ni aktualizovány všechny tabulky sledování odkazů. To je užitečné pro deduplikaci cenných úloh aktualizace zpětných odkazů. Nastavte na výchozí hodnotu NULL, když stránku vytvoří WikiPage::insertOn() .

page_latest

Toto je cizí klíč k rev_id pro aktuální revizi. Při vytváření stránky může být 0. Musí odkazovat na revizi s platnou revision.rev_page, jinak se při pokusu o zobrazení stránky objeví chyba "Revize #0 stránky s názvem 'Foo' neexistuje" . Lze získat na WikiPage::getLatest().

page_len

Nekomprimovaná délka aktuálního zdrojového textu stránky v bajtech.

To však neplatí pro snímky, které mají stále záznamy v této tabulce. Místo toho se použije nekomprimovaná délka description souboru v bajtech, protože druhý je uveden v poli text.old_text.

Třída Wikipage v includes/WikiPage.php má dvě metody, viz. insertOn() a updateRevisionOn() které jsou zodpovědné za vyplnění těchto údajů.

page_content_model

Verze MediaWiki:
1.21

Model obsahu, viz konstanty CONTENT_MODEL_XXX. Srovnatelné s revision.rev_content_model.

page_lang

Verze MediaWiki:
1.24

Jazyk obsahu stránky. Nastavte na výchozí hodnotu NULL v době vytvoření stránky.

page_restrictions

Verze MediaWiki:
1.9

Čárkami oddělená sada klíčů oprávnění označujících, kdo může stránku přesouvat nebo upravovat. Sekce úprav a přesunutí jsou odděleny dvojtečkou (např. "edit=autoconfirmed,sysop:move=sysop").

Verze MediaWiki:
1.10 – 1.38
Počínaje MediaWiki 1.10 byly ovládací prvky ochrany stránky přesunuty do tabulky page_restrictions , takže toto pole bude v databázích generovaných aktuálnějšími verzemi MediaWiki prázdné. (odstraněno od 1.39)

page_counter

Verze MediaWiki:
1.24

Počet zobrazení stránky. Tato funkce byla v MediaWiki 1.25 zcela odstraněna na základě žádosti o komentář. Ještě předtím jej mnoho webů včetně projektů WikimediE zakázalo, aby zvýšilo výkon; podrobnosti viz Příručka:$wgDisableCounters .


Přehled změn ve schématu tabulky

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

Indexy

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

Příklad MySQL kódu

Výpis stránek a vztahů s jinými základními tabulkami

Následující kód vybere nejnovější verze všech článků za předpokladu, že se nepoužívá komprese nebo externí úložiště:

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";

Další důležité úvahy:

  • K nalezení stránek ve jmenném prostoru 0 přidejte p.page_namespace = 0
  • Chcete-li najít stránky, které nejsou přesměrovány, přidejte p.page_is_redirect = 0

Tyto dodatečné příkazy lze přidat buď jako podmínky k příkazu Where, nebo jako podmínky příslušného příkazu INNER JOIN.

Související odkazy