Python'da Veritabanlarında Tabloların Bağlanması
Diyelim ki kullanıcı adlarını ve yaşadıkları şehirleri içeren bir tablomuz var:
| id | name | city |
|---|---|---|
| 1 | user1 | city1 |
| 2 | user2 | city1 |
| 3 | user3 | city2 |
| 4 | user4 | city1 |
| 5 | user5 | city3 |
| 6 | user6 | city2 |
Bu tablonun dezavantajı, aynı şehrin farklı kullanıcılar için birkaç kez tekrarlanmasıdır. Bu, bazı sorunlara yol açar.
İlk olarak, sürekli tekrarlama, veritabanının çok daha fazla yer kaplamasına neden olur.
İkinci olarak, şehirlerle işlem yapmak oldukça elverişsizdir. Örneğin, ekrana tüm şehirlerin bir listesini yazdırmak istiyoruz. Bunu bu şekilde yapmak kolay olmayacaktır. Tüm kullanıcıları şehirleriyle birlikte almak, ardından elde edilen şehirlerden kopyaları silmek ve ancak o zaman bu listeyi elde etmek zorunda kalacağız.
Şimdi hayal edelim ki veritabanında 10 şehirden 10000 kullanıcı var - bu 10 şehir için, çok sayıda satırdan oluşan tüm tabloyu çıkarmak zorunda kalacağız - bu, anlamsız kaynak israfıyla çok yavaş bir işlem olacak.
Sorunun Çözümü
Tablomuzu ikiye bölmemiz gerekiyor: birinde şehirler, diğerinde ise kullanıcılar saklanacak. Aynı zamanda, kullanıcılar tablosunda, kullanıcının şehrine referans verecek olan city_id sütunu olacak.
Peki, iki tablo yapalım. Şehirler tablosu:
| id | name |
|---|---|
| 1 | city1 |
| 2 | city2 |
| 3 | city3 |
Kullanıcılar tablosu:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Pratik Görevler
Diyelim ki ürünleri (ad, fiyat, miktar) ve bu ürünlerin kategorilerini saklamanız gerekiyor. Saklama yapısını açıklayın.
Diyelim ki nehirleri ve bu nehirlerin döküldüğü denizleri saklamanız gerekiyor. Saklama yapısını açıklayın.
Diyelim ki şehirleri ve içinde bulundukları ülkeleri saklamanız gerekiyor. Saklama yapısını açıklayın.