2012-03-09 6 views
0

私は何千もの店舗を持つデータテーブルを持っています。最初は、ストアオブジェクトがチェーンストアをグループ化するためにparent_id属性を持つことをお勧めします。チェーンストアをサポートするようにDBを設計するにはどうしたらいいですか?

私のウェブサイトに誰でもストアを追加できます。 「マスターストア」を追加するルーチンはありません。では、どのようにしてマスターストアを選択できますか?

私はストアをグループ化する別の方法を見つける必要があります。

私はチェーンストアがグループIDを取得する別のテーブルを持っていると思っています。

1つの店舗の説明を変更すると、すべての店舗の説明を更新することができます。これは、説明のために別のテーブルを持って正規化することもできますが、すでにテーブルがたくさんあるので、正規化をさらに進めていくかどうかは分かりません。

チェーンストア用にスケールアップするDBを設計するための最良のアプローチと思われることをお聞きしたいと思います。

+0

基本的には、店を追加して、別のメンバーの店舗チェーンの一部であると主張することはできますか?確認プロセスなどがある場合は、DBスケールを簡単に設計できます。 –

+0

@OfirBaruch - 私はあなたが '他のメンバー 'の意味を理解していません。しかし、すべての店舗を公開する前にコントロールする必要があります。そのため、選択したチェーンが店舗に有効かどうかをコントロールすることもできます。 – Steven

答えて

0

chainなどのフィールドをstores tableに追加することができます。 このフィールドには、整数の値が含まれます。 同じチェーンのストアについては、同じ値( )が1つのストア(チェーンの一部ではない)の場合は0(ゼロ)の値を設定します。

例:

名前|チェーン

ピザハットサン・ディエゴ・1

マクドナルドハリウッド2

ピザハットロンドン1

私の友人の店0

マクドナルドスペイン2

EDIT: だから、ピザハットサンディエゴの店を編集するとき、あなたのスクリプトは'チェーン'の値を確認し、 '0'と異なる場合は、チェーンのフィールド値が1であるすべてのレコードを更新します。

EDIT2:参考ユーザーはどのように追加する必要がありますか?ユーザーは新しいストアの正しいIDをどのように選択する必要がありますか?

storesテーブルには、このストアを作成したメンバーのIDであるowner_idフィールドもあります。 あなたができることは、メンバーが新しい店舗を追加しようとしているときに、彼の「店舗の履歴を追加する」ことに基づいてチェーンを提案することです。

のは、上記の例をもう一度使用してみましょう:

名|オーナーID |チェーン

ピザハットサンディエゴ| 32 | 1

McDonalds Hollywood | 32 | 2

Pizza Hat London | 32 | 1

私の友人の店| 43 | 0

マクドナルドスペイン| 32 | 2

ID 32を持つユーザーは、新しいストアを追加しようとしているのであれば、あなたは彼に彼が持っている任意のチェーンの一つとDropboxの紹介:あなたは」は、ピザハットサン・ディエゴ&マクドナルドハリウッド彼に "あなたの新しい店は関係していますか?"と尋ねます。

+0

はい。それは私が考えていることの線に沿っている。しかし、私はまだIDのコントロールを維持するためにテーブルを追加する必要があります。そうしないと、ユーザーは選択するIDを決して知らないでしょう。テーブルには 'id、name'というフィールドがあります。 – Steven

+0

新しいテーブルは必要ありません。現在の店舗のテーブルにフィールドとして追加するだけです。それとも私は何かが欠けている? –

+0

ユーザーはどのように追加する必要がありますか?ユーザーは新しいストアの正しいIDをどのように選択する必要がありますか? – Steven

関連する問題