(ща вот тут куча общих фраз, но они ИМХО отражают реальность)
тут только франкенштейна городить, если очень нужно быстродействие
опять же для твоего кейса нет серебряной пули - бенчмаркать и тюнить - только практика...
универсальных рекомендаций по нормализации/денормализации нет
(ну кроме очевидного - делай структуры данных как можно проще... а то вот у нас для бизнесовых менеджеров, когда хотелки оформляют - они бы любое поле сделали строкой, хотя зачастую там достаточно числовых типов, которые в памяти в разы меньше занимают места)
если делать на микросервисах, то я бы даже, возможно, разделил бы справочники и условную аналитическую инфу, которая льётся..
в частности, относительно недавно я узнал на практике про одну хорошую штуку - ClickHouse (он же кликхаус, он же КХ) - не реляционная БД от Яндекса (сначала скептически отнёсся) [не реклама]
Теперь на проекте дружно живут ПГ и КХ =)) в КХ льётся постоянная инфа (БД заточена на такое, когда у тебя рекорды просто валятся лавиной и тебе не требуется их править, всё это дело сжимается) - за месяц там десятки-сотни миллионов строк должны набегать... Так вот, если это дело хорошо оттюнить, то среди этих миллионов можно деть выборки за миллисекунды
- и реляционная часть данных не проседает т.к. ПГ не раздувается и быстро работает (тьфу-тьфу)