ユースケース(ウィックスのサブスクリプションモデルに類似)データベース設計
は、ユーザーが多くのウェブサイトを持つことができます。 1つのウェブサイトを持つためには、彼はサブスクリプションを購入し、維持する必要があります。
ウェブサイトがもっと必要な場合は、彼が作成したウェブサイトごとに個別の購読を購入し、維持する必要があります。
私はRails用のデータベースを設計しています。デザインの仕方はかなり混乱しています。
どちらが優れていますか?
Client
has_many :websites
has_many :subscriptions, through: :websites
Website
belongs_to :client
belongs_to :subscription
Subscription
has_many :websites
belongs_to :client
has_many :pricing_plans
PricingPlan
belongs_to :subscription
または
Client
has_many :websites
has_many :subscriptions, through: :websites
Website
belongs_to :client
has_one :subscription
Subscription
belongs_to :website
belongs_to :client
has_many :pricing_plans
PricingPlan
belongs_to :subscription
またはより良いデザインがありますか?私は何の注意を払うべきですか?ユーザーがサブスクリプションをキャンセルした場合は、Webサイトも自動的に無効にする必要があります。私の意見で
こんにちはブライアン、非常に助けてくれてありがとう。しかし、PricingPlanとPricingPlanSubscriptionの違いはあまりありません。それぞれのモデルのいくつかのサンプル属性を提供して、それらの違いを説明できることを願っています。 – RailsNewbie
@RailsNewbie PricingPlanには、名前、コスト、用語などのフィールドが含まれます.PricingPlanSubscriptionはPricingPlanとSubscriptionの両方をリンクするためにのみ存在し、したがってpricing_plan_idとsubscription_idのみを含みます。将来、データベースを更新したい場合は、個々の価格プランをすべて見つけ、それに応じてすべてのコストを更新する必要があるため、価格プランのコストを保管するためにデータベースに多数のレコードを保存することは望ましくありません。リンクされた構造を持つと、1つのエントリを更新し、関連するすべてのレコードが更新を反映します。もう少し意味がある? –
ストライプを統合したい場合、料金プランが必要でしょうか? – RailsNewbie