Příručka:Databázová tabulka page - stránek
↑ 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 page
.
Poté se page_latest použije k vyhledání rev_id v tabulce 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 tabulce text
za účelem získání textu.
Když je stránka odstraněna, revize se přesunou do tabulky archive .
page
, a pro všechny revize stránky v tabulce revision
a všechny řádky textu. odpovídající pouze stránce v text
tabulce. To lze provést odstraněním řádku stránky a spuštěním maintenance/deleteOrphanedRevisions.php.
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:
- Nápověda:ID stránky - zaměřené na uživatele.
- Manual:Page ID - zaměřené na vývojáře.
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 Příručka:Náhodná stránka ). 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 |
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 .
titlevector
- Only used by PostgreSQL
Používá místo tabulky searchindex PostgreSQL pro usnadnění fulltextového vyhledávání.
Přehled změn ve schématu tabulky
Verze 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 | | +--------------------+---------------------+------+-----+---------+----------------+
Verze 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 | | +--------------------+---------------------+------+-----+---------+----------------+
Verze 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 | | +--------------------+---------------------+------+-----+---------+----------------+
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
.