База данных
Рубрика о том, как устроить базу данных, чтобы она не противоречила сама себе и быстро отвечала на запросы. Проектирование баз данных разбираем на учебной схеме магазина: таблицы создаются запросами CREATE TABLE, заполняются, а вывод каждого запроса приводим дословно. Примеры запускаются в SQLite из Python, сервер ставить не нужно.
Начинаем с нормализации: первая, вторая и третья нормальные формы, форма Бойса-Кодда, аномалии вставки, обновления и удаления и случаи, когда данные дублируют сознательно. Рядом темы, без которых схема плохо живёт в проде: внешние ключи, индексы и план запроса, перенос данных из старой таблицы с проверкой, что ни одна строка не потерялась.
Нормализация баз данных сводится к разбиению таблиц на несколько связанных так, чтобы каждый факт хранился в одном месте. Тогда смена города клиента правит

