The text_term table
Each unique (language, text) string exactly once, across every publisher. Prose is stored here and referenced, not repeated per factor.
Fields#
| field | type | required | example | meaning |
|---|---|---|---|---|
id |
uuid | yes | The row's own identifier. Consumers address a factor by its slug, not by this. | |
lang |
text | yes | BCP-47: 'fr','en','es',... | |
text |
text | yes | The string itself. | |
text_md5 |
text | yes | Uniqueness is on the DIGEST, not the string: a btree index row caps at ~2704 bytes, and the descriptive prose the fit-judgement axes carry (an EN 15804 technologicalApplicability runs to several KB) exceeds it. Generated in the database so the digest can never disagree with the text. md5, not sha256, because a generated expression must be IMMUTABLE and the text->bytea conversion sha256 needs (convert_to) is only STABLE. This is identity, not security: the loader keys its in-memory index on the string itself, so md5 only has to be collision-free over publisher prose. |
Referenced by#
emission_factor_text.term_id, text_correction.new_term_id, text_correction.previous_term_id, text_translation.source_term_id, text_translation.term_id, vocab_text.term_id.