2

私はモデルを持っParentていChildます。Parent has_many :children、正しい順序でデータベースに保存する必要があります。field を使用してリンクされたリストのように保存することにしましたnext_idacts_as_list宝石があることは知っていますが、positionフィールドを節約します。それはより多くのSQLを使用するソリューションではありませんか?

それにもかかわらず、どうすればそれを設計できますか?SRPを保存したいので、リストを使用したすべての操作はChildモデル内にある必要があります。Parentすでに注文されているはずですchildren

4

1 に答える 1

2

単一の親に関連するリスト内のすべての要素を持つ利点は、1 つのパスでそれらを取得して並べ替えることができることです。

SELECT * FROM list_items WHERE parent_id=? ORDER BY position

リンクリスト構造ではこれを行うことはできません。代わりに、前のエントリと次のエントリを一度に最大 2 つ取得する必要があり、リスト内の他のすべてのレコードについて、このプロセスを再帰的に繰り返す必要があります。1000 以上のアイテムのリストを取得するのは現実的ではありません。

于 2012-11-07T15:52:41.027 に答える