У меня есть база данных mssql с таблицей пользователей и таблицами для примерно 6 различных приложений. Каждое приложение имеет свою собственную схему внутри базы данных. Когда пользователь входит в систему, пользователь показывает список приложений, на которые у него есть права.Запросы на одиночный вход и базу данных
Я хотел бы разделить пользовательские таблицы и приложения в свои собственные базы данных по двум основным причинам.
- Масштабируемость
- Обслуживание
Первый шаг в этом проекте, чтобы переместить таблицу пользователей в своей собственной базе данных. Затем используйте веб-службы api, чтобы любое приложение могло взаимодействовать с данными. Например, IsUserValid, CreateUser, UpdatePassword ....
Проблема, которую я вижу, заключается в том, что в некоторых приложениях хранились процедуры, вызывающие таблицу пользователя с соединением. Например: SELECT user.username, user.firstname, user.lastname, app.column1, app.column2 от пользователя внутреннего соединения app на users.username = app.username
Есть ли элегантный способ решить эту проблему? Я знаю, что я могу объединить две таблицы в две отдельные базы данных, но я хотел бы иметь возможность перемещать базы данных приложений и базы данных пользователей на отдельные серверы.
Это та самая проблема, с которой я столкнулся раньше, желая использовать базу данных членства asp_net (так как у нее была вся крутая функциональность). Вы не можете использовать FK из другой базы данных. Одним из предлагаемых решений было создание таблицы dbo.UserInfo в каждой базе данных. И мы бы создали пользователей в базе данных членства asp_net ...... У THEN была небольшая утилита, которая «связывает» пользователей asp_net с приложениями. Но в нашей «ссылке» мы написали только ПК для пользователей в отдельные базы приложений. Таким образом, у каждого db была своя «копия», из которой он был бы выключен. Мы также включили столбец статуса «soft-delete» – granadaCoder
, когда пользователь получил «несвязанный» из приложения. (Вы можете написать больше кода для каскадного удаления информации в каждом приложении db (когда пользователь был удален из базы данных членства asp_net) ......., но мы просто использовали тег soft-delete. – granadaCoder
Другое примечание. таблица MyApplication.dbo.UserInfo очень «тонкая». Только таблица FK для asp_net memmbership (Users) и тег soft delete. Если бы у нас были дополнительные «данные о свойствах» о любом пользователе в конкретной базе данных приложения, у нас был дополнительный MyApplication.dbo.UserExtraInfo стол. Это спорный вопрос, но это то, что мы свернули с. – granadaCoder