Pautan Jadual dalam Pangkalan Data
Katakan kita mempunyai jadual dengan nama pengguna dan bandar-bandar di mana mereka tinggal:
| id | name | city |
|---|---|---|
| 1 | user1 | city1 |
| 2 | user2 | city1 |
| 3 | user3 | city2 |
| 4 | user4 | city1 |
| 5 | user5 | city3 |
| 6 | user6 | city2 |
Kelemahan jadual ini ialah bandar yang sama diulang beberapa kali untuk pengguna yang berbeza. Ini membawa kepada beberapa masalah.
Pertama, pengulangan berterusan membawa kepada fakta bahawa pangkalan data mula menduduki jauh lebih banyak ruang.
Kedua, agak menyusahkan untuk melaksanakan operasi dengan bandar. Sebagai contoh, kita mahu memaparkan pada skrin senarai semua bandar. Ia tidak boleh dilakukan dengan mudah. Kita perlu mendapatkan semua pengguna bersama bandar mereka, kemudian buang pendua daripada bandar yang diperoleh dan hanya kemudian kita akan mendapat senarai ini.
Dan sekarang bayangkan, dalam pangkalan data terdapat 10000
pengguna dari 10 bandar - untuk 10
bandar ini kita perlu mengambil keseluruhan jadual
dari sejumlah besar baris - ini akan menjadi
operasi yang sangat perlahan dengan
pembaziran sumber yang tidak bermakna.
Penyelesaian Masalah
Kita perlu memecahkan jadual kita kepada dua: dalam satu
bandar akan disimpan, dan dalam yang kedua - pengguna.
Pada masa yang sama, dalam jadual dengan pengguna akan ada lajur
city_id, yang akan merujuk
kepada bandar pengguna.
Jadi, mari kita buat dua jadual. Jadual dengan bandar:
| id | name |
|---|---|
| 1 | city1 |
| 2 | city2 |
| 3 | city3 |
Jadual dengan pengguna:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Katakan anda perlu menyimpan barang (nama, harga, kuantiti) dan kategori barang ini. Terangkan struktur penyimpanan.
Katakan anda perlu menyimpan sungai dan laut, yang dimasuki oleh sungai-sungai ini. Terangkan struktur penyimpanan.
Katakan anda perlu menyimpan bandar dan negara, di mana mereka berada. Terangkan struktur penyimpanan.