BtoCサービスを作る際のDB設計について

BtoCサービスを作りたく、デフォルトのUserテーブルと企業情報を入れるCompanyテーブルに分けたいのですが、UserテーブルとCompanyテーブルの紐付けはどのようにすれば良いのでしょうか?

ログイン処理はUserテーブルに任せるというのは理解しております。

企業詳細ページを実装するとき、currentUser ’s◯◯(企業名や所在地)を使いたいのですが、リレーションの仕方がわからないです。

Whatever I am able to understand from Google Translate.

You can add the most imp and repeating info into user table instead of the company table.

詳細があまり見えないのですが、Companyが複数存在するB2B2C型で、ログインしているCompany側ユーザに対し、自社の企業名や所在地を表示したいということでしょうか?

User型の中にCompany型のフィールドを追加し、そのユーザが作ったCompanyをセットすることで実現できるはずです。

  1. Company型を作成・定義する(New type)
  2. User型のフィールドにCompany型を追加する(Create a new field)
  3. Bubble上でCompanyが作成される際のワークフローで、Current UserのCompanyフィールドに新しく作ったCompanyをセットする
  4. 表示する際は、CurrentUser’s Company’s CompanyName などでアクセス可能になる

というような実装がシンプルかと思います。

リレーションが1:1になる限り、User型にB側とC側のデータを追加し続ける設計も可能ではあるのですが、Privacy Rulesの設計が複雑になるので、公開情報と非公開情報を明確に分ける意味でも、非公開情報のUser型に追加する形で、公開情報のCompany型で定義されるほうがおすすめな気がします。

イメージと違う場合、もう少し具体的なサービスイメージを記載いただければお答えできるかもしれません。

とてもわかりやすいご説明ありがとうございました!
User型の中にCompanyフィールドを追加したことで、currentUser ’sCompany’s◯◯のように企業の詳細ページを表示することができました。

1 Like