2008-11-05 2 views
4

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

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

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

-

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

ответ

0

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

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

1

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

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

1

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

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

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

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

Смежные вопросы