Должен ли я использовать и добавить существующую денормализованную структуру БД или создать свою собственную? - PullRequest
0 голосов
/ 30 сентября 2011

У нас есть стороннее программное обеспечение, и меня попросили создать расширение для него.Расширение будет работать с данными, существующими в текущем программном обеспечении, и включать некоторые дополнительные данные.

Существующие данные чрезвычайно денормализованы.Большая часть данных, с которыми я буду работать, примерно для 4-5 различных объектов, содержится в одной таблице.Мне нужно будет добавить дополнительные поля для большинства этих объектов.

Я вижу 2 способа сделать это:

  1. Создать новую таблицу для новых полей, которая соответствуетсуществующая таблица 1: 1 и использует тот же денормализованный стиль, который они используют

    Плюсы: он будет соответствовать существующей денормализованной структуре базы данных и будет легко создавать

    Минусы: очень денормализованЯ немного одержим нормализацией своих баз данных.Текущая таблица уже содержит более 50 столбцов, и ее действительно следует разделить на 4-5 различных таблиц.

    Я также не думаю, что смогу легко использовать EF с текущей структурой базы данных (мой предпочтительный способ работы с базой данных), и мне пришлось бы вручную создавать модели данных в коде, а не использовать EF для их генерации

  2. Создание целого нового набора таблиц и использование триггеров для синхронизации данных между таблицами

    Плюсы: Могу создавать таблицы так, как я хочу, и могу использовать EFдля обработки операций с базой данных и для генерации моделей данных для меня

    Минусы: необходимо использовать триггеры для синхронизации данных с существующей таблицей

Как вы думаете, что лучшеидея?

Ответы [ 2 ]

1 голос
/ 30 сентября 2011

Я думаю, это зависит от того, какую часть расширения вы смотрите. Если вы добавляете пару наворотов к существующему интерфейсу, и особенно если вам не нужно оборачивать существующий интерфейс, то, возможно, вам лучше держать свой нос и жить с уродливой базовой структурой данных.

Все сводится к тому, что есть небольшая куча кода для сборки и поддержки:

  1. Код расширения, который уродлив из-за денормализованной базы + расширенные атрибуты - или -

  2. Чистый добавочный код + весь ужасный код запуска синхронизации таблицы.

Мне кажется, что если расширение действительно существенное, то 2 может оказаться меньше 1. Однако, если вы посмотрите только на эти несколько наворотов, то 1, вероятно, будет много меньше чем 2.

1 голос
/ 30 сентября 2011

Я думаю, что ответ заключается в том, как наилучшим образом использовать ваше время в сочетании с тем, насколько вы контролируете таблицы в настоящее время и в будущем.Лично я бы создал альтернативную таблицу с некоторыми отношениями.Если вы решите изменить существующую таблицу, вам не только придется регрессивно тестировать приложение и тестировать новое приложение, но вы рискуете, что будущие обновления повредят оба приложения.Поэтому я говорю, работайте с тем, что вы можете контролировать.Ваше время будет использоваться более эффективно, и вы будете позиционировать себя с меньшим риском в будущем.Умный для вас и умный для бизнеса.Надеюсь, это поможет.

...