Правила таблиц, к которым я пришёл за 20 лет (вторая часть)
В первой части я разобрал самые базовые правила работы с таблицами - многие из них вообще кажутся очевидными. Но дальше начинаются правила чуть сложнее, и вот их нарушение обычно обходится уже сильно дороже.
Пока таблица маленькая, почти любой бардак можно какое-то время компенсировать руками, формулами и костылями. Но когда данных становится больше, таблицы начинают связываться между собой, а над ними работают десятки людей - цена плохой структуры начинает быстро расти.
Поэтому во второй части - уже правила уровнем выше.
§ Центральная сущность определяет границы таблицы Не смешивай в одной таблице свойства разных сущностей.
❌ [Продажи] Дата | Клиент | Товар | Сумма | Комментарий о клиенте 21.12 | Иванов | Кабель | 990 | Звонить после 18:00 24.12 | Иванов | Зарядка | 1490 | Звонить после 18:00
✅ [Продажи] Дата | client_id | Товар | Сумма 21.12 | 101 | Кабель | 990 24.12 | 101 | Зарядка | 1490
[Клиенты] client_id | Клиент | Комментарий 101 | Иванов | Звонить после 18:00
§ У каждого свойства - один источник истины Не храни одно и то же свойство в нескольких местах.
❌ [База товаров] Кабель Voltix | Чёрный Зарядка Nova | Белый
[Заказы] Кабель Voltix | Чёрный | 10 Зарядка Nova | Белый | 5
[Отчёт] Кабель Voltix | Black Зарядка Nova | Белый
✅ [База товаров] Кабель Voltix | Чёрный Зарядка Nova | Белый
[Заказы] Кабель Voltix | 10 Зарядка Nova | 5
§ Не разделяй одинаковые данные на отдельные листы. Если структура и набор полей совпадают, храни данные в одной таблице, а различия выноси в отдельный столбец.
❌ [Речной] Товар | Остаток | Цена
[Лесная] Товар | Остаток | Цена
[Центральный] Товар | Остаток | Цена
✅ Магазин | Товар | Остаток | Цена Речной | Кабель Voltix | 12 | 990 Лесная | Кабель Voltix | 8 | 990 Центральный | Кабель Voltix | 15 | 990
§ Стандартизируй значения Одинаковые сущности, категории и состояния должны обозначаться одинаково.
❌ Город СПб Санкт-Петербург г. Санкт Петербург
✅ Город Санкт-Петербург Санкт-Петербург Санкт-Петербург
Заключение Большинство этих правил придуманы не мной, не вчера и даже не для электронных таблиц. Основы всего этого заложили ещё в 1970-е.
И если их соблюдать, у вас будет радикально меньше проблем, костылей, пожаров и просроков, когда потребуется настраивать ETL и строить адекватное хранилище данных - DWH (Data Warehouse).
Проще изначально правильно организовать данные, чем потом героически разгребать последствия того, что кто-то десять лет назад решил сделать отдельный лист на каждый месяц, покрасить просрочку красным и записать телефон клиента в поле с его ФИО.