Manual:Category table

Track all existing categories. Something is a category if
 * 1) it has an entry somewhere in categorylinks, or
 * 2) it once did.

Categories might not have corresponding pages, so they need to be tracked separately. cat_pages, cat_subcats, and cat_files are signed to make underflow more obvious.

The pages and sub-categories are stored in the categorylinks table.

Information regarding which categories are hidden is stored in the page_props table.

The number fields are signed to make underflow more obvious. We make the first number include the second two for better sorting: subtracting for display is easy, adding for ordering is not.

If the information in this table is incorrect, run the maintenance script populateCategory.php, if neccessary with the --force option.

cat_id
Primary key

cat_title
Name of the category, in the same form as page.page_title (with underscores). If there is a category page corresponding to this category, by definition, it has this name (in the Category namespace).

cat_pages
Number of pages in the category. This number includes the number of subcategories and the number of files.

cat_subcats
Number of sub-categories in the category.

cat_files
Number of files (i.e. Image: namespace members) in the category.

cat_hidden
Was reserved for future use; apparently no one found a use for it because it was removed in v1.20. Instead, the status of hidden categories is stored in the page props table as the property "hiddencat" in.

Schema summary
DESCRIBE category; +-+-+--+-+-++ +-+-+--+-+-++ +-+-+--+-+-++
 * Field      | Type                | Null | Key | Default | Extra          |
 * cat_id     | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
 * cat_title  | varbinary(255)      | NO   | UNI | NULL    |                |
 * cat_pages  | int(11)             | NO   | MUL | 0       |                |
 * cat_subcats | int(11)            | NO   |     | 0       |                |
 * cat_files  | int(11)             | NO   |     | 0       |                |

DESCRIBE category; +-+-+--+-+-++ | Field      | Type                | Null | Key | Default | Extra          | +-+-+--+-+-++ | cat_id     | int(10) unsigned    | NO   | PRI | NULL    | auto_increment | | cat_title  | varbinary(255)      | NO   | UNI | NULL    |                | | cat_pages  | int(11)             | NO   | MUL | 0       |                | | cat_subcats | int(11)            | NO   |     | 0       |                | | cat_files  | int(11)             | NO   |     | 0       |                | | cat_hidden | tinyint(3) unsigned | NO   |     | 0       |                | +-+-+--+-+-++