考虑一个保存在数据库中的两个表中的经典销售订单:
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>
在列表中插入行。然而,这对我来说似乎效率很低,特别是考虑到该列表可以包含(可能)数百个不同的项目。(背景:这些是从超市到批发产品供应商的订单。)
另一种方法是查询数据库,然后将列表与游标进行比较,在必要时添加、删除或更新——这至少看起来同样低效。
- 还有另一种(第三种?)更有效的方法吗?
- 如果不是,这两者中哪一个更好?我总是使用第一个(全部删除,然后重新插入,但现在开始怀疑自己。
更新:数据库是 sqlite3(如果重要的话,在 android 上)