Вопрос

Я строю модульное приложение. Через настройку вы можете включать и выключать эти модули приложения. Я пытаюсь определить, какую структуру базы данных (mssql2005) я должен использовать для таблиц, которые содержат данные для каждого из модулей. Два варианта, о которых я подумал:

<Ол>
  • Поместите все таблицы в одну большую базу данных и добавьте к таблицам префикс в соответствии с модулем.
  • Разделите таблицы для каждого модуля на разные базы данных.
  • У меня есть данные, которые являются общими для всех модулей, поэтому, если я использую решение 2, я не уверен, как управлять этими общими данными (например, пользователями).

    -

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

    Это было полезно?

    Решение

    Моя альтернативная рекомендация тем, которые вы предложили, - это функциональность схемы, доступная в SQL Server 2005.

    Пожалуйста, прочитайте эту ссылку для получения дополнительной информации ...

    http://searchsqlserver.techtarget.com/tip/0 , 289483, sid87_gci1184503,00.html

    Другие советы

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

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

    У меня была бы одна база данных. Это значительно упрощает управление решением.

    Тогда я бы нормализовал свои данные. Это упрощает вопросы целостности данных.

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

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

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

    Если у вас нет требований к нескольким базам данных, я предлагаю использовать только одну.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top