2012-06-01 57 views
8

¿Me puede ayudar acerca de la relación entre dos tablas de SQLite.tablas de relación en sqlite en Android

Sí, inserto, elimino y actualizo los pasos, pero ahora tengo que apoyar la relación entre dos tablas. Supongo
todos los pasos de código que se hacen antes se cambiará Estoy en lo cierto? ¿Tienes algún enlace o ejemplo que explique las relaciones entre tablas y cualquier actividad después de la relación?

Respuesta

-1

Creo que se debe leer un libro o sitio web en la programación básica de bases de datos SQL. Crea una relación entre dos tablas agregando la clave (o un campo) de una tabla a la otra tabla. Pero realmente, primero debes familiarizarte con sql. Después de haber hecho eso, puede crear relaciones, o le resultará conveniente usar Ormlite.

15

Para establecer la relación entre dos tablas, puede usar Foreign keys. Una clave externa es un campo en una tabla relacional que coincide con Candidate Key de otra tabla.

Por ejemplo, supongamos que tenemos dos tablas, una tabla CLIENTE que incluye todos los datos de clientes y una tabla ORDEN que incluye todos los pedidos de los clientes. La intención aquí es que todos los pedidos deben estar asociados con un cliente que ya se encuentra en la tabla CLIENTE. Para hacer esto, colocaremos una clave foránea en la tabla ORDER y la relacionaremos con la clave principal de la tabla CUSTOMER.

En SQLite Foreign Key Constraints se puede añadir en forma siguiente ::

edición :: se puede diseñar item_order mesa como ::

CREATE TABLE customer(
     id INTEGER, 
     firstName TEXT, 
     middleName TEXT, 
     lastName TEXT, 
     address TEXT, 
     contactNum TEXT 
); 

CREATE TABLE item(
     id INTEGER, 
     name TEXT, 
     description TEXT 
); 

CREATE TABLE order(
     id INTEGER, 
     customerID INTEGER, 
     date TEXT, 
     FOREIGN KEY(customerId) REFERENCES customer(id) 
); 

CREATE TABLE item_order(
     id INTEGER, 
     orderID INTEGER, 
     itemId INTEGER, 
     quantity INTEGER, 
     FOREIGN KEY(orderId) REFERENCES order(Id), 
     FOREIGN KEY(itemId) REFERENCES item(Id) 
); 
+0

Después de este paso, ¿cómo puedo insertar una tabla de orden de los artículos? Porque muchos clientes tienen muchos pedidos. Para insertar orden, ¿cómo puedo llegar a la tabla de pedidos? – user1417278

+0

en normalmente usé el código a continuación sin ninguna relación. private void insertkisi (String nombre, correo electrónico String, String pword) { \t \t \t \t \t SQLiteDatabase db = vnesne.getWritableDatabase(); \t ContentValues ​​CV = nuevos ContentValues ​​(); \t \t \t \t cv.put (Veritabani.colName, name); \t \t \t \t cv.put (Veritabani.colAge, correo electrónico); \t \t \t \t cv.put (Veritabani.colDept, pword); \t \t \t \t db.insert ("kisi", null, cv); \t \t \t \t db.cerca(); \t \t \t} – user1417278

+0

@ user1417278 vea la edición, el código que utilizó para insertar valores sin ninguna relación puede usarse incluso ahora hasta que no esté violando las restricciones de la clave externa. – Eight

1

Buena muestra de http://www.androidhive.info/2013/09/android-sqlite-database-with-multiple-tables/

// Table Create Statements 
// Todo table create statement 
private static final String CREATE_TABLE_TODO = "CREATE TABLE " 
     + TABLE_TODO + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_TODO 
     + " TEXT," + KEY_STATUS + " INTEGER," + KEY_CREATED_AT 
     + " DATETIME" + ")"; 

// Tag table create statement 
private static final String CREATE_TABLE_TAG = "CREATE TABLE " + TABLE_TAG 
     + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_TAG_NAME + " TEXT," 
     + KEY_CREATED_AT + " DATETIME" + ")"; 

// todo_tag table create statement 
private static final String CREATE_TABLE_TODO_TAG = "CREATE TABLE " 
     + TABLE_TODO_TAG + "(" + KEY_ID + " INTEGER PRIMARY KEY," 
     + KEY_TODO_ID + " INTEGER," + KEY_TAG_ID + " INTEGER," 
     + KEY_CREATED_AT + " DATETIME" + ")"; 

SELECT * DE td todos, etiquetas tg, todo_tags tt DONDE tg.tag_name = 'lista' Y tg.id = tt.tag_id Y td.id = tt.todo_i re;

/* 
* getting all todos under single tag 
* */ 
public List<Todo> getAllToDosByTag(String tag_name) { 
    List<Todo> todos = new ArrayList<Todo>(); 

    String selectQuery = "SELECT * FROM " + TABLE_TODO + " td, " 
      + TABLE_TAG + " tg, " + TABLE_TODO_TAG + " tt WHERE tg." 
      + KEY_TAG_NAME + " = '" + tag_name + "'" + " AND tg." + KEY_ID 
      + " = " + "tt." + KEY_TAG_ID + " AND td." + KEY_ID + " = " 
      + "tt." + KEY_TODO_ID; 

    Log.e(LOG, selectQuery); 

    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor c = db.rawQuery(selectQuery, null); 

    // looping through all rows and adding to list 
    if (c.moveToFirst()) { 
     do { 
      Todo td = new Todo(); 
      td.setId(c.getInt((c.getColumnIndex(KEY_ID)))); 
      td.setNote((c.getString(c.getColumnIndex(KEY_TODO)))); 
      td.setCreatedAt(c.getString(c.getColumnIndex(KEY_CREATED_AT))); 

      // adding to todo list 
      todos.add(td); 
     } while (c.moveToNext()); 
    } 

    return todos; 
} 
Cuestiones relacionadas