Является ли универсальная модель антипаттерном? - PullRequest
3 голосов
/ 04 марта 2010

Теперь у меня есть кое-что, чего я раньше не видел: база данных действительно общая. Например: вместо конкретного типа у нас есть универсальный тип: устройство, и это относится к пользовательской таблице свойств.

К сожалению, модель над ее сущностями представляет эти таблицы, поэтому модель вообще не говорит о бизнесе.

В конце концов, программирование приводит в замешательство: никто не спроектировал и не определил те пользовательские свойства, которые должны быть в общей таблице, поэтому трудно понять, где что поместить. И вам нужно много кода, чтобы просто получить один атрибут.

Как вы думаете, общая база данных с общей моделью является своего рода антипаттерном? Любой профи?

Ответы [ 3 ]

3 голосов
/ 04 марта 2010

Это напоминает мне о эффекте внутренней платформы . По сути, база данных сводится к второй системе баз данных, в которой реализованы ваши конкретные типы.

2 голосов
/ 04 марта 2010

В прошлом я работал с довольно общей базой данных. Это был разумный способ управления огромной системой с очень часто меняющимися требованиями и неожиданным появлением соединений.

Хотя выполнение было 3 вида таблиц: основные «общие» таблицы, в которых хранятся определенные типы данных, таблица ссылок (таблица из, ссылка из, таблица в, ссылка на, тип записи) и таблица таблиц определить, какие типы данных хранятся и как. Конечно, это создавало некоторые накладные расходы, но это было компенсировано настройками движка, которые действительно ускоряли общие запросы и поддерживали сложные (разумные) (и редкие).

Итак, хотя я согласен с тем, что в общем случае это антипаттерн, есть сценарии, когда это правильно. Один конкретный сценарий - это когда система представляет собой общую платформу, в которой люди, не являющиеся техническими специалистами, создают новые сервисы, комбинируя общие блоки вместе. Блоки связаны с таблицами типа данных, но как эти таблицы будут использоваться (и чем будут заполняться блоки), остается за пользователями.

1 голос
/ 04 марта 2010

Если это не для какого-то общего домена, я бы сказал, что это звучит как антипаттерн. Сравните это с обычным объектом / реляционным / объектом, сопоставленным с реляционной моделью, где большинство таблиц представляют некоторые сущности реального домена. Это гораздо более интуитивно понятно, проще для понимания и поддержки и не требует дополнительных затрат (при кодировании и выполнении).

...