我有两个对象:产品和表格。
产品:
private int id;
private int metricId;
private int projectId;
private String brand;
private String name;
表格:
private int id;
private int captureId;
private Product product;
private String qty;
private String picture;
private String validation;
所以在Form中,我有一个产品对象。
当我必须处理SQL时,我总是需要操作product_id。
所以我的问题是:在表单定义中,我应该拥有整个产品“产品”字段还是只有id:productId?
当我进行查询时,我遇到了一个困难:
// Getting single Form
public Form getForm(int id) {
SQLiteDatabase db = DatabaseManager.getInstance().openDatabase();
Form form = null;
String query = "SELECT * FROM " + TABLE_FORM + " WHERE " + FORM_ID
+ " = " + id;
Cursor cursor = db.rawQuery(query, null);
if (cursor != null && cursor.moveToFirst()) {
form = new Form();
form.setId(cursor.getInt(0));
form.setCaptureId(cursor.getInt(1));
form.setProductId(cursor.getInt(2)); // <-- I have no ProductId, just an Object
form.setQty(cursor.getString(6));
form.setPic(cursor.getString(7));
form.setSync(cursor.getInt(8));
}
在这种类型的查询中,我觉得我的对象应该只有id,因为否则,我应该连接每个Form Query来获取产品。
我觉得第一个是“Java”,第二个是“Sql”。所以我不能自己决定! 欢迎任何意见!
答案 0 :(得分:0)
是的,只使用ID。如果我没有错,这是一种规范化的形式。如上所述,联接应该在检索时帮助您。
答案 1 :(得分:0)
保持表单与产品关系的优势在于您能够封装产品和表单的不同想法。虽然在您的场景中只有id可以接受,但随着应用程序的增长,您需要代表表单和产品之间的关系。例如,当您需要保留表单及其产品信息时会发生什么?然后,您将需要该产品仍然是表单的一部分。
一般来说,最好在java代码中开发一个清晰的域模型,因为它比仅将ID附加到不同的对象更灵活。