Android - SQLite - 关系多对多

时间:2013-10-04 21:57:19

标签: java android sqlite dao pojo

当我尝试使用两个实体之间的多对多关系创建数据库方案时,我想通过SQLite提交有关序列化的问题:

  • 顺序
  • 产品
  • OrderBill(订单 - 产品)

我想将订单和产品与OrderBill的链接:

  • OrderBill保留订单ID,产品ID,订购数量。
  • 例如,订单仅保留一个名称
  • 产品保留名称和价格

我为Order,Product和OrderBill创建了我的Pojos。 但对于具有以下属性的OrderBill:

  • long id_order_bill
  • 订单
  • 产品

但我坚持使用这些实体。这样做,我需要保留三个List:

  • 列出<OrderBill>
  • 列出<Order>
  • 列出<Product>

如果我想获取产品的订单列表,我只需要检索List<OrderBill> Order = order的所有产品。

但我需要保持这些信息:

public class DataStore {

    private List<Order> myOrders;
    private List<Product> myProducts;
    private List<OrderBill> myOrderBills;
    public void add_product(Order o, Product p, int quantity) {
         myOrderBills.add(new OrderBill(o,p,quantity));
    }

DAO中,我确实喜欢这样:

public OrderBill insert(OrderBill o) {
ContentValues values = new ContentValues();
values.put(COL_NAME_ID_ORDER, o.getOrder().getId());
values.put(COL_NAME_ID_PRODUCT, o.getProduct().getId());
values.put(COL_NAME_QUANTITY, o.getQuantity());

long id = db.insert(TABLE_ORDER_BILL, null, values);
o.setId_order_bill(id);
return o;
}

使用DAO模式,我将OrderBill对象的产品和订单转换为id_product和id_order,我做得对吗?我没有测试,但我想知道这是否是在我的应用程序中保持多对多关系的好方法?

因为在我的应用中,我想允许多个订单与多个产品相关联,但不能复制相同数量的产品。

您是否看到了另一种处理方式?

0 个答案:

没有答案