The following is a list and descriptions of the taxonomy tables used by Drupal 6. In depth description and explanations are not provided here. I'm only listing them because I've had a hard time finding a list myself. BYODD (Backup YOur Database, Dummy) before changing these tables.
-- VOCABULARY TABLES --
custom_breadcrumbs_taxonomy_vocabulary : Added by the Custom Breadcrumbs Taxonomy module. I don't know how it's used at this time.
vocabulary : Assigns an ID to a vocabulary name and stores the description, weight, hierarchy, and other metadata about vocabularies
vocabulary_node_types : Records the node types that each vocabulary is applied to. In other words, stores what each content type can be tagged with.
-- TERMS TABLES --
custom_breadcrumbs_taxonomy_term : Added by the Custom Breadcrumbs Taxonomy module. I don't know how it's used at this time.
term_data : All the metadata about a term - Name, term ID, Vocabulary ID (vocabulary where it currently lives), Description, and others.
term_hierarchy : Lists all hierarchical terms and shows who the parent is (by term ID).
term_node : Relates a term to a node by ID... term ID, node ID
term_relation : Haven't used relations yet. Not sure.
term_synonym : Haven't used synonyms yet. Not sure.
Here's (generally) how they work:
Every Drupal Vocabulary has a single entry in the vocabulary table. With at least (of interest here) an id (vid column) and a name (name column). The vid is used as a foreign key reference in other tables:
The vocabulary_node_types table shows which of the CCK content-types this vocabulary is associated with - a direct one-to-many relationship between vocabulary and node- or content- type.
term_data describes the term in the same way that vocabulary describes a vocabulary. Importantly, It has a term ID (tid), and a name. But MORE importantly, it has a vid column as well which, you guessed it!, says which vocabulary this term belongs to.
The term_hierarchy table only has 2 columns: tid and parent. EVERY TERM should be listed in this table. If the term has a hierarchical parent term, then the parent column shows that terms tid. If the term does NOT have a hierarchical parent, then the parent entry is 0. In other words, the highest level parent of any vocabulary has a parent of 0.
The term_node table is where tagging comes into play. Every node that's tagged with a term has at least one entry there. This table relates a tid to a nid of a node. Multiple entries for nodes and vocabularies exist here.