Menghubungkan Tabel dalam Basis Data
Misalkan kita memiliki tabel dengan nama-nama pengguna dan kota tempat mereka tinggal:
| id | name | city |
|---|---|---|
| 1 | user1 | city1 |
| 2 | user2 | city1 |
| 3 | user3 | city2 |
| 4 | user4 | city1 |
| 5 | user5 | city3 |
| 6 | user6 | city2 |
Kelemahan dari tabel ini adalah kota yang sama diulang beberapa kali untuk pengguna yang berbeda. Hal ini menimbulkan beberapa masalah.
Pertama, pengulangan terus-menerus menyebabkan basis data memakan tempat yang jauh lebih banyak.
Kedua, cukup merepotkan untuk melakukan operasi dengan kota. Misalnya, kita ingin menampilkan daftar semua kota. Tidak mudah untuk melakukannya. Kita harus mendapatkan semua pengguna beserta kota mereka, lalu menghapus duplikat dari kota yang didapat dan barulah kita mendapatkan daftar ini.
Sekarang bayangkan, dalam basis data terdapat 10000
pengguna dari 10 kota - untuk mendapatkan 10
kota ini kita harus mengambil seluruh tabel
yang terdiri dari sejumlah besar baris - hasilnya
akan menjadi operasi yang sangat lambat dengan
pemborosan sumber daya yang tidak berarti.
Solusi Masalah
Kita perlu membagi tabel kita menjadi dua: satu
untuk menyimpan kota, dan yang lainnya untuk pengguna.
Dalam tabel pengguna akan ada kolom
city_id, yang akan merujuk
pada kota pengguna.
Jadi, mari kita buat dua tabel. Tabel dengan kota:
| id | name |
|---|---|
| 1 | city1 |
| 2 | city2 |
| 3 | city3 |
Tabel dengan pengguna:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Misalkan Anda perlu menyimpan produk (nama, harga, jumlah) dan kategori produk ini. Jelaskan struktur penyimpanannya.
Misalkan Anda perlu menyimpan sungai dan laut, ke mana sungai-sungai ini mengalir. Jelaskan struktur penyimpanannya.
Misalkan Anda perlu menyimpan kota dan negara, tempat kota-kota tersebut berada. Jelaskan struktur penyimpanannya.