Manual:Category table

The category table tracks all existing categories. Something is a category if
 * 1) it has an entry somewhere in cl>Special:MyLanguage/Manual:Categorylinks table|categorylinks, or
 * 2) it once did ().

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

cat_id
Primary key

cat_title
Name of the category, in the same form as pt>Special:MyLanguage/Manual:page table|page.title>Special:MyLanguage/Manual:Page_table#page_title|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 props>Special:MyLanguage/Manual:Page props table|page props table as the property "hiddencat" in <tvar|ppn> </>.

Schema summary
+-+--+--+-+-++ +-+--+--+-+-++ +-+--+--+-+-++
 * 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       |                |

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