В прошлом я работал с довольно общей базой данных. Это был разумный способ управления огромной системой с очень часто меняющимися требованиями и неожиданным появлением соединений.
Хотя выполнение было 3 вида таблиц: основные «общие» таблицы, в которых хранятся определенные типы данных, таблица ссылок (таблица из, ссылка из, таблица в, ссылка на, тип записи) и таблица таблиц определить, какие типы данных хранятся и как.
Конечно, это создавало некоторые накладные расходы, но это было компенсировано настройками движка, которые действительно ускоряли общие запросы и поддерживали сложные (разумные) (и редкие).
Итак, хотя я согласен с тем, что в общем случае это антипаттерн, есть сценарии, когда это правильно. Один конкретный сценарий - это когда система представляет собой общую платформу, в которой люди, не являющиеся техническими специалистами, создают новые сервисы, комбинируя общие блоки вместе. Блоки связаны с таблицами типа данных, но как эти таблицы будут использоваться (и чем будут заполняться блоки), остается за пользователями.