У меня дилемма. Я работаю с большим количеством устаревшего кода и вижу много избыточной информации в структурах таблиц. В основном они существуют в двух формах:
A. Избыточная информация для экономии на «соединениях». например:
event_id, event_name, event_creator_id
3 test1 43
subevent_id, event_id, event_creator_id
21 3 43
Обратите внимание на дублирование идентификатора события _создателя _. Обоснование, данное бывшими «старшими» разработчиками, заключается в том, что когда нам нужен идентификатор создателя события, нам просто нужно запросить одну таблицу, а не выполнять «дорогостоящее» соединение для получения значения.
B. Избыточная информация для экономии на расчетах. например:
event_id, event_default_price
3 100
discount_id, discount_code, discount_percentage
7, ABCD, 50
special_event_id, event_id, discount_id, discounted_price
21 3 7, 50
Обратите внимание, что вместо вычисления окончательной «цены со скидкой _» для этого специального события (, поскольку ссылка на идентификатор скидки _уже существует ), код сохраняет это «рассчитанное» значение, как здесь.. Опять же, оправданием является «скорость», нормальность к черту.
У меня два вопроса: