あなたの質問への答えはもちろんである(残念ながら)YesとNo :)
これはマルチテナントデータアーキテクチャとして知られています。
別々のデータベースを持つことは間違いなく素晴らしい設計オプションですが、すべてのクライアント/顧客と共有する1つのデータベースを使用することができ、選択する前に多くの要素を考慮する必要があります。
各デザインにプラスとマイナスがあります。ここで
は、あなたの3不可欠な選択肢
1)各顧客の株式は、同じデータベースおよびデータベーステーブルです。
2)各顧客は同じデータベースを共有しますが、データベース内で独自のスキーマを取得し、それぞれ独自のテーブルセットを取得します。
3)各顧客は独自のデータベースを取得します。
私が本当に好きなのは、別個のデータベースのアプローチですが、データセキュリティです。私の言うことは、すべての顧客が独自のデータベースを取得し、そのためにデータベースを編集/更新/削除するためです。このため、ユーザーのプログラムによるエラーやアプリケーションのセキュリティ違反のために、エンドユーザーが他のユーザーのデータを上書きするリスクはありません。
すべてのユーザーが同じデータベースにいる場合、誤って別の顧客データを取得して公開する可能性があります。あるいは、プライマリキーを画面上のレコードに公開し、適切に保護することを忘れて、パワーユーザーがこのキーを他の顧客に属するキーに非常に簡単に上書きし、別のクライアントデータを公開する可能性があります。
しかし、すべての顧客が実際には1大企業の補助金であり、毎日、週/月/年などの財務情報をロールアップする必要があるとします。 これが該当する場合は、クライアントは報告の悪夢となり、テーブルを共有するデータベースを1つのデータベースにまとめることは、人生をはるかに簡単にするだけです。たとえば、毎日の売上を報告するときは、列を一括して10,000個のデータベースにまとめて合計するのが簡単です。 :)
答えはあなたのアプリケーションとそれが何をしているのかによって異なります。
私は同じデータベースに何万人ものクライアントがいる大規模なエンタープライズシステム上で作業しています。私たちはこれをサポートするために、すべてのデータを非常に慎重に保護するよう非常に配慮しました。
また、お客様のマルチテナントアーキテクチャごとのデータベースをサポートする私の暇な時にサイドプロジェクトでも働いています。
したがって、アプリケーションがどのように行うのか、データをバックアップする方法、データをロールアップする必要があるのかなどを考慮すると、決定に役立ちます。
このため、MSDNの相続人のGreAの記事: https://msdn.microsoft.com/en-us/library/aa479086.aspx
認証に関するご質問について。
はい、認証用に別個のデータベースを用意することは素晴らしい設計です。顧客が認証すると、認証データベースから認証され、この認証の一環としてデータベースに接続文字列が送信されます。その時点からのすべてのデータは、そのクライアントデータベースから取得されます。
希望しました。 幸運を祈る!
各クライアントのスキーマを作成し、このクライアントに固有のユーザーにこのスキーマを割り当てます。 – TheGameiswar
編集に関して。はい、あなたはそれを行うことができます。しかし、サブドメインを使うことができます。 Client1.Yourdomain.comはデータベース上でそれらを認証します。Client2.Yourdomain.comはデータベースなどでクライアント2を認証します – Matt