A single-site WordPress core schema, the canonical 12-table layout that ships in wp-admin/includes/schema.php. The defining move is four parallel meta tables (postmeta, usermeta, commentmeta, termmeta) that store meta_key/meta_value rows, so plugins attach arbitrary data without ever altering the schema.
What this WordPress schema covers
Posts, pages, attachments, and revisions
Categories, tags, and custom taxonomies
Threaded comments and pingbacks
Users and profile metadata
Site-wide options and the legacy blogroll
A few decisions the diagram can't show:
wp_posts is multiplexed by post_type — posts, pages, attachments, revisions, and menu items share one table, with post_parent self-referencing for hierarchy and revisions.
Taxonomy splits across three tables so one wp_terms row can be reused under many taxonomies via wp_term_taxonomy.
wp_term_taxonomy.parent holds a term_id, not a term_taxonomy_id — a subtlety most ERDs get wrong.
wp_term_relationships.object_id is polymorphic; it usually points at a post but carries no foreign key.
wp_options.autoload flags which rows load on every request, so it's performance-critical, not cosmetic.
Core defines zero SQL foreign keys; all 14 relationships here are application-level conventions enforced in PHP.
The world's most-used MySQL-backed CMS — WordPress is the open-source PHP CMS that powers much of the web, built on a MySQL database whose meta tables let plugins extend it without migrations.