# Handboek MediaWiki/Database-opbouw

Elke pagina wordt afzonderlijk in de database opgeslagen. Alle versies van elke pagina zijn afzonderlijk beschikbaar. Dat wil zeggen dat wanneer een gebruiker een verandering maakt op een pagina er een nieuwe database ingang wordt gemaakt. Dus er wordt niet, zoals weleens gedacht wordt, alleen de verandering opgeslagen, waaruit een vorige versie van de pagina wordt gegenereerd wanneer die bekeken wordt.
Naast tekstpagina's worden ook afbeeldingen en multimediabestanden in de database opgeslagen.

## Beschrijving van het afhandelen van een edit

Indien een edit wordt gedaan, wordt het artikel als cur opgeslagen. De vorige versie van het artikel wordt opgeslagen in old. Wordt een pagina verwijderd, dan wordt de informatie opgeslagen in archive.
Bij het opslaan van het artikel wordt informatie uit het bewerkingscherm opgedeeld in stukjes informatie die verdeeld wordt over verschillende tabellen, zoals:
* page met de hoofdinformatie (tekst, inclusief plaatshouders voor informatie die in een separate tabel is opgeslagen)
* interwiki, voor de interwikilinks
* interne en externe links
* zie verder hieronder in #Bestanden in de database.
Indien een pagina uit de geschiedenis actueel wordt gemaakt (een revert), dat wordt de informatie uit de old gekopieerd in de cur. De oude informatie in cur verdwijnt dan in old. Dit betekent dan dat er 2 gelijke versies bestaan in de geschiedenis van het artikel.

## Bestanden in de database

Allereerst een schematisch overzicht van een gedeelte van de tabellen in de database.
| Tabelnaam | Beschrijving (versie 1.8) | Velden |
| archive | In deze tabel worden verwijderde pagina's opgeslagen | ar_namespace, ar_title, ar_text, ar_comment, ar_user, ar_user_text, ar_timestamp, ar_minor_edit, ar_flags, ar_rev_id, ar_text_id |
| categorylinks | In deze tabel worden de links op een pagina, die het artikel verbindt met een categorie, opgeslagen | cl_from, cl_to, cl_sortkey, cl_timestamp |
| externallinks | In deze tabel worden de externe links op een pagina opgeslagen | el_from, el_to, el_index |
| filearchive | tabel met de data van de verwijderde files (afbeeldingen, geluidsbestanden en dergelijke), nieuw sinds versie 1.8, daarvoor waren files definitief verwijderd | fa_id, fa_name, fa_archive_name, fa_storage_group, fa_storage_key, fa_deleted_user, fa_deleted_timestamp, fa_deleted_reason, fa_size, fa_width, fa_height, fa_metadata, fa_bits, fa_media_type, fa_major_mime, fa_minor_mime, fa_description, fa_user, fa_user_text, fa_timestamp |
| hitcounter | telt het aantal malen dat een artikel bezocht is en wordt regelmatig leeggemaakt | hc_id |
| image | In deze tabel wordt de lijst met de afbeeldingen en andere multimediabestanden opgeslagen. De oude versies bevinden zich in old_table; de verwijderde versies (alleen de beschrijving op de pagina, de afbeelding is na verwijdering definitief weg) in archive_table | img_name, img_size, img_width, img_height, img_metadata, img_bits, img_media_type, img_major_mime, img_minor_mime, img_description, img_user, img_user_text, img_timestamp |
| imagelinks | Deze tabel slaat de links naar alle afbeeldingen op; dit wordt bijvoorbeeld gebruikt voor de Links naar deze pagina | il_from, il_to |
| interwiki | Deze tabel bevat de interwikilinks | iw_prefix, iw_url, iw_local, iw_trans |
| ipblocks | Deze tabel bevat de geblokkeerde IP's en gebruikers | ipb_id, ipb_address, ipb_user, ipb_by, ipb_reason, ipb_timestamp, ipb_auto, ipb_anon_only, ipb_create_account, ipb_expiry, ipb_range_start, ipb_range_end |
| job | Deze tabel bevat nog uit te voeren taken, namelijk het aanpassen van de referenties van pagina's nadat een sjabloon bewerkt is | job_id, job_cmd, job_namespace, job_title, job_params |
| langlinks | tabel met inter-taallinks | ll_from, ll_lang, ll_title |
| logging | De tabel voor de logboeken (verwijderde pagina's, nieuwe gebruikers, veranderde pagina's etc. | log_type, log_action, log_timestamp, log_user, log_namespace, log_title, log_comment, log_params |
| math | Tabel voor de gebruikte mathematische formules op een wiki. (zoals <math>a^2+b^2=c^2</math>) | math_inputhash, math_outputhash, math_html_conservativeness, math_html, math_mathml |
| objectcache | Hierin worden de standaardteksten, het menu en pagina's gecached. | keyname, value, exptime |
| oldimage | De tabel met de oude versies van afbeeldingen en multimediabestanden | oi_name, oi_archive_name, oi_size, oi_width, oi_height, oi_bits, oi_description, oi_user, oi_user_text, oi_timestamp |
| page | Dit is de kerntabel van de wiki met de pagina's/artikelen/modules | page_id, page_namespace, page_title, page_restrictions, page_counter, page_is_redirect, page_is_new, page_random, page_touched, page_latest, page_len |
| pagelinks | De tabel met de interne links van artikel naar artikel (of rode links als ze niet bestaan) | pl_from, pl_namespace, pl_title |
| querycache | Hierin worden resultaten van bepaalde speciale pagina's opgeslagen. | qc_type, qc_value, qc_namespace, qc_title |
| querycachetwo | Een tweede tabel met resultaten van bepaalde speciale pagina's opgeslagen. | qcc_type, qcc_value, qcc_namespace, qcc_title,qcc_namespacetwo, qcc_titletwo |
| querycache info | Tabel met details ten aanzien van de speciale pagina's in de query | qci_type, qci_timestamp |
| recentchanges | De tabel met de recente wijzigingen | rc_id, rc_timestamp , rc_cur_time, rc_user, rc_user_text, rc_namespace, rc_title, rc_comment, rc_minor, rc_bot, rc_new, rc_cur_id, rc_this_oldid, rc_last_oldid, rc_type, rc_moved_to_ns, rc_moved_to_title, rc_patrolled, rc_ip |
| redirect | De tabel met de verzameling van redirects | rd_from, rd_namespace, rd_table |
| revision | De tabel die de veranderingen (revisies) bijhoudt. Elke verandering krijgt een uniek nummer | rev_id, rev_page, rev_text_id, rev_comment, rev_user, rev_user_text, rev_timestamp, rev_minor_edit, rev_deleted |
| searchindex | Deze tabel bevat de index van teksten, waarmee de wiki kan worden doorzocht, werkt echter met de actuele dabatabase (current) | si_page, si_title, si_text |
| site_stats | De tabel met de algemene statistieken van de wiki (hoeveel maal pagina's bekeken, hoe vaak bewerkt, hoeveel artikelen, etc.) | ss_row_id, ss_total_views, ss_total_edits, ss_good_articles, ss_total_pages, ss_users, ss_admins, ss_images |
| templatelinks | Tabel met links naar sjablonen/pagina's die zijn ingevoegd met {{Sjabloon}} | tl_from, tl_namespace, tl_title |
| text | Tabel met (verwijzingen naar) de werkelijke inhoud van pagina's | old_id, old_text, old_flags |
| trackbacks | | tb_id, tb_page, tb_title, tb_url, tb_ex, tb_name |
| transcache | tabel met interwiki transclusie | tc_url, tc_contents, tc_time |
| user | De tabel met de gebruikers (inclusief voorkeuren) | user_id, user_name, user_real_name, user_password, user_newpassword, user_email, user_options, user_touched, user_token, user_email_authenticated, user_email_token, user_email_token_expires, user_registration |
| user_groups | De tabel met welke gebruiker tot welke groep behoort | ug_user, ug_group |
| user_newtalk | De tabel met gebruikers met een nieuw bericht op hun overlegpagina (geeft de oranje balk met nieuw bericht) | user_id, user_ip |
| watchlist | De tabel met de informatie over de volglijsten van de verschillende gebruikers | wl_user, wl_namespace, wl_title, wl_notificationtimestamp |
* Bron: Database_layout op meta

## Naamruimte

Elke entry wordt verbonden met een naamruimte. Deze naamruimtes zijn:
| nummer | naam |
| -2 | Media |
| -1 | Speciale pagina's |
| 0 | Artikel |
| 1 | Overleg bij artikel |
| 2 | Gebruiker |
| 3 | Overleg bij gebruiker |
| 4 | Projekt |
| 5 | Overleg bij projekt |
| 6 | Afbeelding |
| 7 | Overleg bij afbeelding |
| 8 | MediaWiki |
| 9 | Overleg bij MediaWiki |
| 10 | Sjabloon |
| 11 | Overleg bij sjabloon |
| 12 | Help |
| 13 | Overleg bij help |
| 14 | Categorie |
| 15 | Overleg bij Categorie |
| 50 | XYZ |
| 51 | Overleg bij XYZ |
| 100 | Transwiki |
| 101 | Overleg Transwiki |
Er kunnen tot 1000 naamruimtes worden toegevoegd. -2 tot 15 zijn standaard beschikbaar, 50 en 51 zijn hier als voorbeeld aan toegevoegd. Op de Nederlandstalige Wikipedia is de naamruimte portaal toegevoegd.
Media: is een pseudo-naamruimte. Links als [[media:xyz]] geven een directe link naar het bestand Afbeelding:xyz . Dus niet naar de beschrijvingspagina.