2つのテーブルのデータベースに保存されている従来の販売注文について考えてみます。
SALE_ORDER SALE_ORDER_ITEM
---------- ---------------
id integer ...
... order_id integer references sale_order (id)
item_id integer references item (id)
quantity integer
...
この質問の目的のために、別のテーブルへのitem_id参照を無視してください-それは無関係です。
次のような注文を含むクラスがあります。
public class SaleOrder {
private int orderId;
...
private List<BoughtItem> items;
....
}
注文は変更される可能性があり(私の要件)、変更にはリスト内のアイテム(追加、削除、または数量変更)が含まれる可能性があります。データベースでこの順序を更新するとき、最も簡単な方法はdelete from sale_order_item where order_id=<my_order_id>
、リストを通過する行を挿入することです。ただし、これは、特にリストに(潜在的に)何百もの異なるアイテムが含まれている可能性があることを考えると、非常に非効率に思えます。(背景:これらはスーパーマーケットから卸売製品サプライヤーへの注文です。)
別の方法は、データベースにクエリを実行してから、リストをカーソルと比較し、必要に応じて追加、削除、または更新することです。これは、少なくとも同じように非効率的です。
- より効率的な別の(3番目の?)アプローチはありますか?
- そうでない場合は、2つのうちどちらが優れていますか?私はいつも最初のものを使用しました(すべて削除してから再挿入しますが、今は自分自身を疑うようになりました。
更新:データベースはsqlite3です(それが重要な場合はAndroid上で)