私は、SaaSアプリケーション用のマルチテナント(共有スキーマ)データベースを作成しています。このアプリケーションは、加入企業(テナント)が他の企業(ベンダー、ビジネスパートナー、顧客などのアカウント)と共同作業することを可能にします。ユーザーはテナントとアカウントの両方に関連付けられます。SaaS、マルチテナント(共有スキーマ) - 1つまたは2つのテーブル?
私の質問:デザインの観点からは、テナントとアカウントを1つのテーブルに入れても大丈夫ですか?私は「はい」と考えています。会社がテナントかアカウントかにかかわらず会社なのでです。さらに、私はis_tenant(ブール値)のようなフィールドでテナントを解読し、テナント固有の情報を別のテーブルに置くことを考えていました。ここで提案されたスキーマは次のとおりです。
- 企業(のcompany_id、is_tenant、名前、住所など)
- ユーザー(user_idは、名前、電子メール、ユーザ名、パスワードなど)
- company_users(のcompany_id、 USER_ID)
- tenant_information(のcompany_id、billing_address、billing_state、等)
- tenant_accounts(tenant_id、ACCOUNT_ID)は -
私はMSの記事Multi-Tenant Data Architectureを読んでいましたが、役に立つとはいえ、回答が得られませんでした。
このスキーマに関するその他のご意見、ご意見、落とし穴があれば幸いです。
ありがとうございます。
こんにちはワリ...返信と信頼の投票に感謝します。誰かがこのデザインに傾いているのを知っているのは良いことです。そして、あなたはcompany_informationテーブルについて正しいです。それはそこにある、私は例にそれを含めなかった。そこに他の考え? – Piet
同じトピックを追加する: 「会社」 - >「ベンダー」「顧客」「テナント」のいくつかのタイプが追加されました。このため、** Companyのboolフィールドの代わりにenumを追加しました表**。あなたがその種のものを予見すれば、それはenumを持つほうが良い。 – Wali
Wali ...テナントを取引するアカウント(ベンダー、顧客など)にテナントを関連付けるtenant_accountsテーブルがありますか?または、単に企業のテーブルにparent_idを置くと、関係を作成できますか?どちらのデザインも優れていますか? – Piet