Введение в связи таблиц в Go
Когда одно и то же значение повторяется во многих строках, таблица раздувается и правки становятся рискованными. Имя города или категории приходится менять сразу во всех местах, где оно встретилось.
Часть столбцов выносят в отдельную таблицу справочника, а в основной строке оставляют только номер нужной записи. Такая связь держит в одной таблице номер строки из другой и не копирует текст целиком.
По номеру легко подтянуть полное имя при чтении и собрать отчет из двух таблиц одним запросом. Список уникальных значений справочника берут из одной маленькой таблицы, а не вычеркивают дубли из огромной.
В этом разделе на примере shop.db
пройдем внешний ключ, связь один ко
многим, внутреннее и левое соединение,
связь многие ко многим через третью
таблицу и цепочку из трех таблиц.
Код по-прежнему идет через пакет
database/sql и драйвер без
системной библиотеки C.