⊗ppPmDOLT 381 of 447 menu

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

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

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 για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη