2017-03-21 4 views
0

私はデータベースを持っています.1つのテーブルにはエンティティのセットが含まれています。フロントエンドのユーザーは、これらの映画の複数の注文を作成して保存できるようにしたいと考えています。データベースに複数のエンティティの注文を格納する

これらの注文をどのようにして保存することができますか?私は(データベーススキーマを素敵にするため、またはパフォーマンスなどのために)何を考えていますか?この特定のケースで


、私は、データベース内の約100のフィルムを期待し、10のセーブの順序よりもおそらく少ないので、理論的には、それははるかに大きく得ることができるが、パフォーマンスは、大きな問題になることはほとんどありませんよ。

私の考えはこれまでのところ、nicenessを制限することなく、以下を含みます。

  1. 名、 とフィルムIDのJSON.stringifiedバージョンを注文、注文IDを格納、順序付けのためにテーブルを持ちます。

  2. テーブル、保存IDを注文し、名前を発注し、別の テーブル格納、何らかの形で(リンクリスト?)実際の 注文のいくつかのセットを持つ - あなたは順序 IDを単一の注文が、追加する可能性があるとして格納することで、 。 (この第二の表は、その後 フィルムと秩序のすべてのペアのレコードが含まれているかもしれません...)

+0

「注文」とは「並べ替え」を意味しますか?彼らの映画の好みと同様に、1-10?または、「購入」のような「注文」を意味しますか? – BenM

+0

ソート。申し訳ありませんが、おそらくフィルムは誤解を招くかもしれないと思います(質問の残りの文脈が十分に欲しいと思いますが)。 – meta

答えて

0

あなたのアイデアは、基本的なためであるPostgresの配列フィールドサポートなど、いくつかの実装固有のオプションを省略し、それをカバー実用的な目的は#1を達成するための別の方法です。

#1はコンパクトで設定が簡単ですが、参照整合性が欠けています。映画を削除する場合は、すべてのリストから削除する必要があります。 #2はより多くの作業とやや複雑な構造を必要としますが、その関係はデータベースによって追跡されるというメリットがあります。映画の削除の例を挙げれば、リスト上の映画の削除を防止するか、削除をカスケードしてすべてのリストからエントリを削除することができます。

それぞれには長所と短所があります。適切なのは実際にはあなたの特定のユースケースになります。

関連する問題