Mengelola Relasi Antar Tabel Di SQLite Untuk Android
Pengelolaan relasi antar tabel adalah salah satu aspek penting dalam pengembangan aplikasi Android menggunakan SQLite sebagai basis data. Dalam artikel ini, kita akan membahas cara mengelola relasi antar tabel di SQLite untuk Android.
Pengenalan
Sebelum kita mulai membahas tentang mengelola relasi antar tabel, mari kita berkenalan dengan beberapa konsep dasar tentang SQLite dan Android.
- SQLite adalah sebuah sistem manajemen basis data relasional yang ringan dan dapat diakses secara lokal di perangkat Android.
- Android menggunakan SQLite sebagai sistem basis data default untuk menyimpan data aplikasi.
- Setiap aplikasi Android memiliki sebuah basis data SQLite yang unik dan hanya dapat diakses oleh aplikasi tersebut.
Konsep Relasi Antar Tabel
Dalam basis data relasional, relasi antar tabel adalah sebuah hubungan antara dua atau lebih tabel yang berbeda. Relasi ini dapat dibagi menjadi beberapa jenis, yaitu:
- Relasi satu-ke-satu (one-to-one): Setiap record di tabel pertama hanya memiliki satu record yang terkait di tabel kedua.
- Relasi satu-ke-banyak (one-to-many): Setiap record di tabel pertama dapat memiliki beberapa record yang terkait di tabel kedua.
- Relasi banyak-ke-banyak (many-to-many): Setiap record di tabel pertama dapat memiliki beberapa record yang terkait di tabel kedua, dan setiap record di tabel kedua dapat memiliki beberapa record yang terkait di tabel pertama.
Mengelola Relasi Antar Tabel di SQLite
Untuk mengelola relasi antar tabel di SQLite, kita dapat menggunakan beberapa teknik berikut:
- Menggunakan kunci asing (foreign key): Kunci asing adalah sebuah kolom di tabel yang berfungsi sebagai referensi ke kolom lain di tabel lain. Dengan menggunakan kunci asing, kita dapat menghubungkan record di tabel pertama dengan record di tabel kedua.
- Menggunakan tabel pembantu (junction table): Tabel pembantu adalah sebuah tabel yang berfungsi sebagai perantara antara dua tabel lain. Dengan menggunakan tabel pembantu, kita dapat menghubungkan record di tabel pertama dengan record di tabel kedua.
- Menggunakan query JOIN: Query JOIN adalah sebuah query yang memungkinkan kita untuk menggabungkan data dari dua atau lebih tabel berbeda. Dengan menggunakan query JOIN, kita dapat menghubungkan record di tabel pertama dengan record di tabel kedua.
Contoh Penggunaan
Berikut adalah contoh penggunaan relasi antar tabel di SQLite untuk Android:
- Tabel "pengguna" yang memiliki kolom "id_pengguna", "nama", dan "alamat".
- Tabel "produk" yang memiliki kolom "id_produk", "nama_produk", dan "harga".
- Tabel "pembelian" yang memiliki kolom "id_pembelian", "id_pengguna", "id_produk", dan "jumlah".
Dalam contoh ini, kita dapat menggunakan kunci asing untuk menghubungkan record di tabel "pembelian" dengan record di tabel "pengguna" dan "produk". Berikut adalah contoh kode SQL untuk membuat tabel dan relasi antar tabel:
-- Buat tabel pengguna
CREATE TABLE pengguna (
id_pengguna INTEGER PRIMARY KEY,
nama TEXT NOT NULL,
alamat TEXT NOT NULL
);
-- Buat tabel produk
CREATE TABLE produk (
id_produk INTEGER PRIMARY KEY,
nama_produk TEXT NOT NULL,
harga REAL NOT NULL
);
-- Buat tabel pembelian
CREATE TABLE pembelian (
id_pembelian INTEGER PRIMARY KEY,
id_pengguna INTEGER NOT NULL,
id_produk INTEGER NOT NULL,
jumlah INTEGER NOT NULL,
FOREIGN KEY (id_pengguna) REFERENCES pengguna (id_pengguna),
FOREIGN KEY (id_produk) REFERENCES produk (id_produk)
);
Dengan menggunakan kunci asing, kita dapat menghubungkan record di tabel "pembelian" dengan record di tabel "pengguna" dan "produk".
Query JOIN
Berikut adalah contoh query JOIN untuk menggabungkan data dari tabel "pembelian", "pengguna", dan "produk":
SELECT
p.id_pembelian,
p.id_pengguna,
p.id_produk,
p.jumlah,
u.nama AS nama_pengguna,
u.alamat AS alamat_pengguna,
pr.nama_produk AS nama_produk,
pr.harga AS harga_produk
FROM
pembelian p
INNER JOIN pengguna u ON p.id_pengguna = u.id_pengguna
INNER JOIN produk pr ON p.id_produk = pr.id_produk;
Query JOIN di atas akan menggabungkan data dari tabel "pembelian", "pengguna", dan "produk" berdasarkan kunci asing yang telah kita buat sebelumnya.
Pengembangan Aplikasi
Dalam pengembangan aplikasi Android, kita dapat menggunakan SQLite untuk menyimpan data aplikasi. Berikut adalah contoh kode Java untuk mengakses dan mengelola data di SQLite:
// Buat objek SQLiteOpenHelper
private SQLiteOpenHelper dbHelper = new SQLiteOpenHelper(this, "database.db", null, 1)
@Override
public void onCreate(SQLiteDatabase db)
// Buat tabel pengguna
db.execSQL("CREATE TABLE pengguna (id_pengguna INTEGER PRIMARY KEY, nama TEXT NOT NULL, alamat TEXT NOT NULL)");
// Buat tabel produk
db.execSQL("CREATE TABLE produk (id_produk INTEGER PRIMARY KEY, nama_produk TEXT NOT NULL, harga REAL NOT NULL)");
// Buat tabel pembelian
db.execSQL("CREATE TABLE pembelian (id_pembelian INTEGER PRIMARY KEY, id_pengguna INTEGER NOT NULL, id_produk INTEGER NOT NULL, jumlah INTEGER NOT NULL, FOREIGN KEY (id_pengguna) REFERENCES pengguna (id_pengguna), FOREIGN KEY (id_produk) REFERENCES produk (id_produk))");
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
// Lakukan upgrade tabel jika diperlukan
;
// Buat objek SQLiteDatabase
SQLiteDatabase db = dbHelper.getWritableDatabase();
// Lakukan query JOIN
Cursor c = db.rawQuery("SELECT * FROM pembelian JOIN pengguna ON pembelian.id_pengguna = pengguna.id_pengguna JOIN produk ON pembelian.id_produk = produk.id_produk", null);
// Lakukan iterasi data
while (c.moveToNext())
int idPembelian = c.getInt(c.getColumnIndex("id_pembelian"));
int idPengguna = c.getInt(c.getColumnIndex("id_pengguna"));
int idProduk = c.getInt(c.getColumnIndex("id_produk"));
int jumlah = c.getInt(c.getColumnIndex("jumlah"));
String namaPengguna = c.getString(c.getColumnIndex("nama_pengguna"));
String alamatPengguna = c.getString(c.getColumnIndex("alamat_pengguna"));
String namaProduk = c.getString(c.getColumnIndex("nama_produk"));
double hargaProduk = c.getDouble(c.getColumnIndex("harga_produk"));
// Lakukan proses data
Dalam contoh di atas, kita menggunakan SQLiteOpenHelper untuk membuat objek SQLiteOpenHelper dan SQLiteDatabase. Kemudian, kita melakukan query JOIN untuk menggabungkan data dari tabel "pembelian", "pengguna", dan "produk". Setelah itu, kita melakukan iterasi data dengan menggunakan Cursor.
Kesimpulan
Mengelola relasi antar tabel di SQLite untuk Android merupakan salah satu aspek penting dalam pengembangan aplikasi. Dengan menggunakan kunci asing, tabel pembantu, dan query JOIN, kita dapat menghubungkan record di tabel berbeda dan melakukan proses data yang lebih efektif. Contoh-contoh yang telah kita bahas di atas dapat membantu kita memahami cara mengelola relasi antar tabel di SQLite untuk Android.