⊗pyPmDOLT 122 of 129 menu

Σύνδεση πινάκων σε βάσεις δεδομένων στην Python

Ας υποθέσουμε ότι έχουμε έναν πίνακα με τα ονόματα των χρηστών και τις πόλεις στις οποίες ζουν:

users
id name city
1 user1 city1
2 user2 city1
3 user3 city2
4 user4 city1
5 user5 city3
6 user6 city2

Το μειονέκτημα αυτού του πίνακα είναι ότι η ίδια πόλη επαναλαμβάνεται πολλές φορές για διαφορετικούς χρήστες. Αυτό οδηγεί σε ορισμένα προβλήματα.

Πρώτον, η συνεχής επανάληψη οδηγεί στο ότι η βάση δεδομένων αρχίζει να καταλαμβάνει πολύ περισσότερο χώρο.

Δεύτερον, είναι αρκετά άβολο να εκτελούνται λειτουργίες με τις πόλεις. Για παράδειγμα, θέλουμε να εμφανίσουμε στην οθόνη μια λίστα όλων των πόλεων. Δεν θα είναι τόσο απλό να γίνει αυτό. Θα πρέπει να λάβουμε όλους τους χρήστες μαζί με τις πόλεις τους, στη συνέχεια να αφαιρέσουμε τα διπλά από τις ληφθείσες πόλεις και μόνο τότε θα λάβουμε αυτήν τη λίστα.

Και τώρα ας φανταστούμε ότι στη βάση 10000 χρηστών από 10 πόλεις - για αυτές τις 10 πόλεις θα πρέπει να ανακτήσουμε ολόκληρο τον πίνακα από έναν τεράστιο αριθμό σειρών - θα προκύψει μια πολύ αργή λειτουργία με ανώφθαλη σπατάλη πόρων.

Επίλυση του προβλήματος

Πρέπει να χωρίσουμε τον πίνακά μας σε δύο: στη μία θα αποθηκεύονται οι πόλεις, και στη δεύτερη - οι χρήστες. Στην περίπτωση αυτή, στον πίνακα με τους χρήστες θα υπάρχει μια στήλη city_id, η οποία θα αναφέρεται στην πόλη του χρήστη.

Λοιπόν, ας δημιουργήσουμε δύο πίνακες. Πίνακας με πόλεις:

cities
id name
1 city1
2 city2
3 city3

Πίνακας με χρήστες:

users
id name city_id
1 user1 1
2 user2 1
3 user3 2
4 user4 1
5 user5 3
6 user6 2

Πρακτικές ασκήσεις

Ας υποθέσουμε ότι πρέπει να αποθηκεύετε προϊόντα (όνομα, τιμή, ποσότητα) και κατηγορίες αυτών των προϊόντων. Αναφέρετε τη δομή αποθήκευσης.

Ας υποθέσουμε ότι πρέπει να αποθηκεύετε ποτάμια και θάλασσες, στις οποίες εκβάλλουν αυτοί οι ποτάμιες. Αναφέρετε τη δομή αποθήκευσης.

Ας υποθέσουμε ότι πρέπει να αποθηκεύετε πόλεις και χώρες, στις οποίες βρίσκονται. Αναφέρετε τη δομή αποθήκευσης.

Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη