Связывание таблиц в Rust
Когда одно и то же значение повторяется во многих строках, таблица раздувается и правки становятся рискованными. Имя или категорию приходится менять сразу во всех местах, где текст встретился.
Часть столбцов выносят в отдельную таблицу справочника, а в основной строке оставляют только номер нужной записи. Такая связь держит номер строки другой таблицы, а не копию всех ее полей.
По номеру легко подтянуть полное имя при чтении и собрать отчет из двух таблиц одним запросом. Список уникальных значений справочника берут из одной маленькой таблицы, а не вычеркивают дубли из огромной.
В разделе на примере app.db
разберем внешний ключ, связь один ко
многим, внутреннее и левое соединение,
связь многие ко многим через третью
таблицу и цепочку из нескольких шагов.
Код идет через крейт rusqlite
с флагом bundled, как в блоке
про файл базы.