0

ユーザーと注文を持つ Web アプリケーションを構築しています。二人の関係をどうするかについて質問です。

注文はユーザーに属します。しかし、ここにひねりがあります。ユーザーは、オプションで注文を別のユーザーにアウトソーシングすることを選択できます。

注文が外部委託された場合、元のユーザーは引き続き所有者であり、注文の価格、数量などの特定のものを変更できるのは元のユーザーのみです。注文のアウトソーシング先のユーザーは、注文情報の一部を表示したり、注文の特定のプロパティを更新したりできます (履行済みとしてマークするなど)。外部委託された注文は、両方のユーザーの「注文インデックス」に表示されます。

すべてのユーザーは「等しい」ということです。つまり、特定の注文ではユーザーが所有者であり、別のユーザーでは注文を履行している可能性があります。ユーザーは自分の注文を満たすこともできます。

ユーザーの 1 人は実際には注文を所有しておらず、アクセスが制限されているだけなので、真の多対多の関係のようには見えません。

この注文とユーザーの関係を処理する最も簡単な方法は何ですか? 完全な許可システムの使用を避けたいのですが、これを「外部委託」テーブルで簡単に処理する方法はありますか? order テーブルに user_id と outsourced_to フィールドを用意するのはどうですか?

ご意見ありがとうございます。

参考になれば、アプリケーションは Laravel を使用します。

4

2 に答える 2

1

Orders テーブルには、Users テーブルとの 2 つの個別の関係があるようです。注文には、ユーザーとの所有者/所有者の関係があります。

Users(1) -- owns -- (*)Orders

1 人のユーザーが複数の注文を所有できます。1 つの注文は 1 人のユーザーのみが所有します

次に、オーダーとユーザーの間には完全に別個のアウトソーシング先の関係があります。

Orders(*) -- outsourced-to -- (1)Users

(ここでは、オーダーは他の 1 人のユーザーにのみアウトソーシングできると想定しています。ユーザーは、多数のオーダーをアウトソーシングすることができます。)

これを表す最良の方法は、Orders テーブルに、Users テーブルへの「所有者」外部キー列と、Users テーブルへの別の「outsourced_to」外部キー列を持たせることです。

外部委託されたユーザーが編集できる注文の列は、dB ではなくコードによって制御されます。

注文を同時に複数のユーザーにアウトソーシングできる場合にのみ、別のアウトソーシング テーブルが必要になります。

于 2012-12-23T17:04:43.567 に答える
0

order テーブルに user_id と outsourced_to フィールドを用意するのはどうですか?

いいですね。

また、「outsorced-to」ユーザーが別のテーブルに編集できるフィールドを移動するなど、一種の非正規化について考えてください。

于 2012-12-23T17:01:14.067 に答える