背景を少々。私は基本アプリケーションを持っており、ほとんどのクライアントはそれを標準として使用しています。ただし、一部のクライアントには小さなコードとデータベースのカスタマイズがあります。これらのクライアントにはそれぞれ独自のブランチがあり、メンテナンスが難しい場合があります。
これらすべてを単一のデータベース構造 (単一のデータベースではありません。マルチテナンシーは行っていません) に統合して、より均一な方法でアップグレードを適用できるようにしたいと考えています。私はまだ概念実証の段階にいますが、標準オブジェクトを現在存在するスキーマ (ほとんどは dbo) にとどめ、カスタム オブジェクトを各クライアントのスキーマに常駐させるというルートをたどっていました。
たとえば、いくつかの追加の列を持つ dbo.users と client1.users を持つことができます。クライアントのデフォルトのスキーマを「client1」に設定した場合、次のクエリ
SELECT * FROM users
接続されているログインに応じて、client1 スキーマまたは dbo スキーマからデータを返します。これは、私が達成しようとしていることに完全に適しています。
私が直面している問題はビューにあります。dbo スキーマにあり、Users テーブルを参照する多くのビューがあります。どのユーザーとしてデータベースに接続しても、これらのビューは常に dbo.users から選択されます。
だから私が持っている質問は次のとおりだと思います:ビュー内のテーブルに「DEFAULT」などの変数をプレフィックスとして付けることはできますか? 例えば
SELECT u.username, u.email, a.level
FROM DEFAULT.users u INNER JOIN accessLevels a ON u.accessID = a.accessID
これが不可能であり、私が完全に間違ったツリーを吠えている場合、私がやろうとしていることをどのように達成できるかについて何か提案はありますか?
どうもありがとう。