Модульная структура базы данных приложения
-
06-07-2019 - |
Вопрос
Я строю модульное приложение. Через настройку вы можете включать и выключать эти модули приложения. Я пытаюсь определить, какую структуру базы данных (mssql2005) я должен использовать для таблиц, которые содержат данные для каждого из модулей. Два варианта, о которых я подумал:
<Ол>У меня есть данные, которые являются общими для всех модулей, поэтому, если я использую решение 2, я не уверен, как управлять этими общими данными (например, пользователями).
-
Чтобы прояснить одну вещь, эти модули могут продаваться отдельно, а параметры конфигурации не контролируются клиентом. Вот почему я даже рассматриваю возможность разбить их на отдельные таблицы.
Решение
Моя альтернативная рекомендация тем, которые вы предложили, - это функциональность схемы, доступная в SQL Server 2005.
Пожалуйста, прочитайте эту ссылку для получения дополнительной информации ...
http://searchsqlserver.techtarget.com/tip/0 , 289483, sid87_gci1184503,00.html р>
Другие советы
Если бы это был я, я бы сначала полностью нормализовал приложение. Я бы разработал структуру, которая помещает все общие данные в общие таблицы и оставляет только данные, уникальные для каждого модуля, в определенных таблицах модулей. Р>
Если данные в общих таблицах действительно общие для всех модулей, и нет крайних случаев, когда вы пытаетесь объединить эти «общие» таблицы, то включение или отключение одного модуля не должно влиять на работу любого модуля. другой модуль, и вы теперь мало (если таковые имеются) дублирование данных.
У меня была бы одна база данных. Это значительно упрощает управление решением.
Тогда я бы нормализовал свои данные. Это упрощает вопросы целостности данных.
Затем я бы добавил таблицы для каждого модуля по мере необходимости в базовую базу данных. Я бы распространял эту базовую базу данных, но не распространял бы данные для неиспользуемых модулей. Каждый модуль будет распространять свои собственные данные при установке (вероятно, его установщиком, а не встроенным в сам модуль).
Префиксы таблиц не имеют большого значения, так или иначе, и приятной частью совместного использования базы данных является то, что вы можете получить доступ к каждой таблице из любого модуля и иметь общий файл конфигурации и т. д.
Если вам нужен запрос по таблицам, я предлагаю поместить их в одну базу данных, иначе это не имеет значения. Однако иметь одну базу данных будет гораздо проще в обслуживании.
Если у вас нет требований к нескольким базам данных, я предлагаю использовать только одну.