--
-- Track category inclusions *used inline*
-- This tracks a single level of category membership
-- (folksonomic tagging, really).
--
CREATE TABLE /*$wgDBprefix*/categorylinks (
  -- Key to page_id of the page defined as a category member.
  cl_from int unsigned NOT NULL default '0',

  -- Name of the category.
  -- This is also the page_title of the category's description page;
  -- all such pages are in namespace 14 (NS_CATEGORY).
  cl_to varchar(255) binary NOT NULL default '',

  -- The title of the linking page, or an optional override
  -- to determine sort order. Sorting is by binary order, which
  -- isn't always ideal, but collations seem to be an exciting
  -- and dangerous new world in MySQL...
  --
  -- Truncate so that the cl_sortkey key fits in 1000 bytes
  -- (MyISAM 5 with server_character_set=utf8)
  cl_sortkey varchar(70) binary NOT NULL default '',

  -- This isn't really used at present. Provided for an optional
  -- sorting method by approximate addition time.
  cl_timestamp timestamp NOT NULL,

  UNIQUE KEY cl_from(cl_from,cl_to),

  -- This key is trouble. It's incomplete, AND it's too big
  -- when collation is set to UTF-8. Bleeeacch!
  KEY cl_sortkey(cl_to,cl_sortkey),

  -- Not really used?
  KEY cl_timestamp(cl_to,cl_timestamp)

) /*$wgDBTableOptions*/;
