Модульная структура базы данных приложения - PullRequest
4 голосов
/ 06 ноября 2008

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

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

У меня есть данные, которые являются общими для всех модулей, поэтому, если я использую решение 2, я не уверен, как управлять этими общими данными (например, пользователями).

-

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

Ответы [ 4 ]

3 голосов
/ 06 ноября 2008

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

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

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

1 голос
/ 06 ноября 2008

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

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

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

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

1 голос
/ 06 ноября 2008

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

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

0 голосов
/ 06 ноября 2008

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

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

...