SCHEMA.DOC The most up-to-date schema for the tables in the database should always be "tables.sql" in the maintenance directory, which is called from the installation script. Here are a few highlights that may be out of date: user (Wikipedia users) user_id integer, primary key, autoincrement user_name Usernames must be unique, must not be in the form of an IP address. _Shouldn't_ allow slashes or case conflicts. Spaces are allowed, and are _not_ converted to underscores like titles. (Conflicts?) user_password Hash of current password. user_newpassword Generated for mail-a-new-password feature user_email Note -- email should be restricted, not public info. Same with passwords. ;) user_options Newline-separated list of name=value pairs. user_token A pseudorandomly generated value that is stored in a cookie when the "remember password" feature is used (previously, a hash of the password was used, but this was vulnerable to cookie-stealing attacks) cur (Wikipedia "current" articles) cur_id integer, primary key, autoincrement cur_namespace integer index into list of namespaces. See the Namespace class for more details. cur_title Title of article (in dbkey form--see Title), without namespace. The combination of namespace,title should be unique in this table. cur_text Wikitext of the article. cur_comment The summary of the last change. cur_user User id who made the last change, or 0 if unknown. cur_user_text Name of the user above, or IP address. cur_timestamp Time of the last change. cur_minor_edit Flag: 0 or 1 is last change was a "minor" edit. cur_restrictions Who may or may not edit the article. cur_counter Number of times this page has been viewed. cur_ind_title Text version of title for fulltext searches. cur_ind_text Plaintext version of text for fulltext searches. cur_is_redirect 1 indicates the article is a redirect. cur_minor_edit 1 indicates this was a minor edit. cur_is_new 1 indicates this is the first revision of a new entry. cur_random Random value between 0 and 1, used for Special:Randompage old (Historical versions articles. Most fields correspond to the same fields in "cur") old_id old_namespace old_title old_text old_comment old_user old_user_text old_timestamp old_minor_edit old_flags This last is currently unused. archive (Temporary storage of deleted articles which may be restored. Fields correspond to those of "cur" and "old") ar_namespace ar_title ar_text ar_comment ar_user ar_user_text ar_timestamp ar_minor_edit ar_flags This last is currently unused. links (Internal links to existing articles) l_from ID of source article. (currently title, may be changed) l_to ID of target article. brokenlinks (Internal links to non-existent articles) bl_from ID of source link. bl_to Title of target link. imagelinks (Internal links to images via [[Image:filename]] syntax) il_from Title of target article. il_to Filename of target image. categorylinks (Track category inclusions) cl_from corresponds to cur_id of the linking page cl_to corresponds to cur_title of the category page cl_sortkey the title of the linking page, or an optional override cl_timestampe when the link was last added linkscc (Stores (possibly gzipped) serialized objects with cache arrays to reduce database load slurping up from links and brokenlinks.) lcc_pageid The ID of the linking page lcc_cacheobj A serialized LinkCache object image (Uploaded images and other files) img_name Filename. img_size File size in bytes. img_description Description field given during upload. img_user User ID who uploaded the file. img_user_text User name who uploaded the file. img_timestamp Timestamp when upload took place. oldimage (Old versions of images stored for potential revert) oi_name Original filename. oi_archive_name Filename of stored old revision; timestamp and exclaimation point prepended to oi_name oi_size File size in bytes. oi_description Description field given during upload. oi_user User ID who uploaded the file. oi_user_text User name who uploaded the file. oi_timestamp Timestamp when upload took place. ipblocks (IP addresses and users blocked from editing) ipb_id Primary key, introduced for privacy. ipb_address Blocked IP address in dotted-quad form or user name. ipb_user Blocked user ID or 0 for IP blocks. ipb_by User ID who made the block. ipb_reason Text comment made by blocker. ipb_timestamp Creation (or refresh) date in standard YMDHMS form. IP blocks expire automatically. ipb_auto Indicates that the IP address was banned because a banned user accessed a page through it. If this is 1, ipb_address will be hidden. site_stats (Site-wide statistics) ss_row_id Token for where clauses. There's only one row in this table. At some point we might want to use a date here so we can get stats-by-date. ss_total_views Number of total views of all pages. ss_total_edits Number of total page edits. ss_good_articles Number of "countable" articles. hitcounter (Stores an ID for every time any article is visited; depending on $wgHitcounterUpdateFreq, it is periodically cleared and the cur_counter column in the cur table updated for the all articles that have been visited.) hc_id The ID of an article, representing one hit recentchanges (Will document further when working) watchlist wl_user Foreign key -> user_id wl_namespace Namespace -> cur_namespace Note that these should only include even-numbered namespaces for regular pages; associated talk pages (odd numbered namespaces) are folded in. wl_title Page title -> cur_title Note also that the linked page may not exist in page or talk namespace, or at all. searchindex (Used for MySQL fulltext searching) si_page The ID of an article si_title The title of an article, indexed for searching si_text The text of an article, indexed for searching interwiki (Recognized interwiki link prefixes) iw_prefix The interwiki prefix, (e.g. "Meatball", or the language prefix "de") iw_url The URL of the wiki, with "$1" as a placeholder for an article name iw_local A boolean value indicating whether the wiki is in this project (used, for example, to detect redirect loops)