You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Data-Science-For-Beginners/translations/el/2-Working-With-Data/05-relational-databases
leestott c6f29d8c8b
🌐 Update translations via Co-op Translator
1 year ago
..
README.md 🌐 Update translations via Co-op Translator 1 year ago
assignment.md 🌐 Update translations via Co-op Translator 1 year ago

README.md

Εργασία με Δεδομένα: Σχεσιακές Βάσεις Δεδομένων

 Σκίτσο από (@sketchthedocs)
Εργασία με Δεδομένα: Σχεσιακές Βάσεις Δεδομένων - Σκίτσο από @nitya

Είναι πολύ πιθανό να έχετε χρησιμοποιήσει ένα υπολογιστικό φύλλο στο παρελθόν για να αποθηκεύσετε πληροφορίες. Είχατε ένα σύνολο από γραμμές και στήλες, όπου οι γραμμές περιείχαν τις πληροφορίες (ή δεδομένα) και οι στήλες περιέγραφαν τις πληροφορίες (μερικές φορές ονομάζονται μεταδεδομένα). Μια σχεσιακή βάση δεδομένων βασίζεται σε αυτήν την βασική αρχή των στηλών και γραμμών σε πίνακες, επιτρέποντάς σας να έχετε πληροφορίες κατανεμημένες σε πολλούς πίνακες. Αυτό σας δίνει τη δυνατότητα να εργαστείτε με πιο σύνθετα δεδομένα, να αποφύγετε την επανάληψη και να έχετε ευελιξία στον τρόπο που εξερευνάτε τα δεδομένα. Ας εξερευνήσουμε τις έννοιες μιας σχεσιακής βάσης δεδομένων.

Προ-διάλεξης κουίζ

Όλα ξεκινούν από τους πίνακες

Μια σχεσιακή βάση δεδομένων έχει ως πυρήνα της τους πίνακες. Όπως και με το υπολογιστικό φύλλο, ένας πίνακας είναι μια συλλογή από στήλες και γραμμές. Η γραμμή περιέχει τα δεδομένα ή τις πληροφορίες με τις οποίες θέλουμε να εργαστούμε, όπως το όνομα μιας πόλης ή την ποσότητα βροχόπτωσης. Οι στήλες περιγράφουν τα δεδομένα που αποθηκεύουν.

Ας ξεκινήσουμε την εξερεύνησή μας δημιουργώντας έναν πίνακα για την αποθήκευση πληροφοριών σχετικά με πόλεις. Μπορεί να ξεκινήσουμε με το όνομά τους και τη χώρα τους. Θα μπορούσατε να αποθηκεύσετε αυτές τις πληροφορίες σε έναν πίνακα όπως ο παρακάτω:

Πόλη Χώρα
Τόκιο Ιαπωνία
Ατλάντα Ηνωμένες Πολιτείες
Όκλαντ Νέα Ζηλανδία

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

Οι περιορισμοί της προσέγγισης ενός πίνακα

Είναι πιθανό ο παραπάνω πίνακας να σας φαίνεται αρκετά οικείος. Ας προσθέσουμε κάποια επιπλέον δεδομένα στη βάση δεδομένων μας που αναπτύσσεται - ετήσια βροχόπτωση (σε χιλιοστά). Θα επικεντρωθούμε στα έτη 2018, 2019 και 2020. Αν προσθέταμε αυτά τα δεδομένα για το Τόκιο, θα μπορούσε να μοιάζει κάπως έτσι:

Πόλη Χώρα Έτος Ποσότητα
Τόκιο Ιαπωνία 2020 1690
Τόκιο Ιαπωνία 2019 1874
Τόκιο Ιαπωνία 2018 1445

Τι παρατηρείτε στον πίνακά μας; Ίσως παρατηρήσετε ότι επαναλαμβάνουμε το όνομα και τη χώρα της πόλης ξανά και ξανά. Αυτό θα μπορούσε να καταναλώσει αρκετό χώρο αποθήκευσης και είναι σε μεγάλο βαθμό περιττό να έχουμε πολλαπλά αντίγραφα. Εξάλλου, το Τόκιο έχει μόνο ένα όνομα που μας ενδιαφέρει.

Εντάξει, ας δοκιμάσουμε κάτι άλλο. Ας προσθέσουμε νέες στήλες για κάθε έτος:

Πόλη Χώρα 2018 2019 2020
Τόκιο Ιαπωνία 1445 1874 1690
Ατλάντα Ηνωμένες Πολιτείες 1779 1111 1683
Όκλαντ Νέα Ζηλανδία 1386 942 1176

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

Γι' αυτό χρειαζόμαστε πολλούς πίνακες και σχέσεις. Με το να διαχωρίζουμε τα δεδομένα μας, μπορούμε να αποφύγουμε την επανάληψη και να έχουμε περισσότερη ευελιξία στον τρόπο που εργαζόμαστε με τα δεδομένα μας.

Οι έννοιες των σχέσεων

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

Πόλη Χώρα
Τόκιο Ιαπωνία
Ατλάντα Ηνωμένες Πολιτείες
Όκλαντ Νέα Ζηλανδία

Αλλά πριν δημιουργήσουμε τον επόμενο πίνακα, πρέπει να βρούμε πώς να αναφερόμαστε σε κάθε πόλη. Χρειαζόμαστε κάποια μορφή αναγνωριστικού, ID ή (σε τεχνικούς όρους βάσεων δεδομένων) πρωτεύον κλειδί. Ένα πρωτεύον κλειδί είναι μια τιμή που χρησιμοποιείται για να αναγνωρίσει μια συγκεκριμένη γραμμή σε έναν πίνακα. Ενώ αυτό θα μπορούσε να βασίζεται σε μια τιμή από μόνη της (θα μπορούσαμε να χρησιμοποιήσουμε το όνομα της πόλης, για παράδειγμα), θα πρέπει σχεδόν πάντα να είναι ένας αριθμός ή άλλο αναγνωριστικό. Δεν θέλουμε το id να αλλάξει ποτέ, καθώς αυτό θα έσπαγε τη σχέση. Στις περισσότερες περιπτώσεις, το πρωτεύον κλειδί ή id θα είναι ένας αυτόματα παραγόμενος αριθμός.

Το πρωτεύον κλειδί συχνά συντομογραφείται ως PK

πόλεις

city_id Πόλη Χώρα
1 Τόκιο Ιαπωνία
2 Ατλάντα Ηνωμένες Πολιτείες
3 Όκλαντ Νέα Ζηλανδία

Θα παρατηρήσετε ότι χρησιμοποιούμε τους όρους "id" και "πρωτεύον κλειδί" εναλλακτικά κατά τη διάρκεια αυτού του μαθήματος. Οι έννοιες εδώ ισχύουν και για DataFrames, τα οποία θα εξερευνήσετε αργότερα. Τα DataFrames δεν χρησιμοποιούν την ορολογία "πρωτεύον κλειδί", ωστόσο θα παρατηρήσετε ότι λειτουργούν με παρόμοιο τρόπο.

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

βροχόπτωση

rainfall_id city_id Έτος Ποσότητα
1 1 2018 1445
2 1 2019 1874
3 1 2020 1690
4 2 2018 1779
5 2 2019 1111
6 2 2020 1683
7 3 2018 1386
8 3 2019 942
9 3 2020 1176

Παρατηρήστε τη στήλη city_id μέσα στον νεοδημιουργημένο πίνακα βροχόπτωση. Αυτή η στήλη περιέχει τιμές που αναφέρονται στα IDs στον πίνακα πόλεις. Σε τεχνικούς όρους σχεσιακών δεδομένων, αυτό ονομάζεται ξένο κλειδί; είναι ένα πρωτεύον κλειδί από έναν άλλο πίνακα. Μπορείτε απλά να το σκεφτείτε ως μια αναφορά ή έναν δείκτη. Το city_id 1 αναφέρεται στο Τόκιο.

[!NOTE] Το ξένο κλειδί συχνά συντομογραφείται ως FK

Ανάκτηση δεδομένων

Με τα δεδομένα μας χωρισμένα σε δύο πίνακες, ίσως αναρωτιέστε πώς τα ανακτούμε. Αν χρησιμοποιούμε μια σχεσιακή βάση δεδομένων όπως MySQL, SQL Server ή Oracle, μπορούμε να χρησιμοποιήσουμε μια γλώσσα που ονομάζεται Δομημένη Γλώσσα Ερωτήσεων ή SQL. Η SQL (μερικές φορές προφέρεται σίκουελ) είναι μια τυποποιημένη γλώσσα που χρησιμοποιείται για την ανάκτηση και τροποποίηση δεδομένων σε μια σχεσιακή βάση δεδομένων.

Για να ανακτήσετε δεδομένα, χρησιμοποιείτε την εντολή SELECT. Στον πυρήνα της, επιλέγετε τις στήλες που θέλετε να δείτε από τον πίνακα στον οποίο περιέχονται. Αν θέλατε να εμφανίσετε μόνο τα ονόματα των πόλεων, θα μπορούσατε να χρησιμοποιήσετε το εξής:

SELECT city
FROM cities;

-- Output:
-- Tokyo
-- Atlanta
-- Auckland

Το SELECT είναι όπου παραθέτετε τις στήλες και το FROM είναι όπου παραθέτετε τους πίνακες.

[NOTE] Η σύνταξη της SQL δεν κάνει διάκριση πεζών-κεφαλαίων, που σημαίνει ότι select και SELECT σημαίνουν το ίδιο πράγμα. Ωστόσο, ανάλογα με τον τύπο της βάσης δεδομένων που χρησιμοποιείτε, οι στήλες και οι πίνακες μπορεί να κάνουν διάκριση πεζών-κεφαλαίων. Ως αποτέλεσμα, είναι καλή πρακτική να αντιμετωπίζετε τα πάντα στον προγραμματισμό σαν να κάνουν διάκριση πεζών-κεφαλαίων. Όταν γράφετε ερωτήματα SQL, η κοινή σύμβαση είναι να γράφετε τις λέξεις-κλειδιά με κεφαλαία γράμματα.

Το παραπάνω ερώτημα θα εμφανίσει όλες τις πόλεις. Ας φανταστούμε ότι θέλουμε να εμφανίσουμε μόνο πόλεις στη Νέα Ζηλανδία. Χρειαζόμαστε κάποια μορφή φίλτρου. Η λέξη-κλειδί SQL για αυτό είναι WHERE, ή "όπου κάτι είναι αληθές".

SELECT city
FROM cities
WHERE country = 'New Zealand';

-- Output:
-- Auckland

Συνδυασμός δεδομένων

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

Στο παράδειγμά μας, θα ταιριάξουμε τη στήλη city_id στον πίνακα βροχόπτωση με τη στήλη city_id στον πίνακα πόλεις. Αυτό θα ταιριάξει την τιμή της βροχόπτωσης με την αντίστοιχη πόλη. Ο τύπος συνδυασμού που θα εκτελέσουμε είναι αυτό που ονομάζεται εσωτερικός συνδυασμός, που σημαίνει ότι αν κάποιες γραμμές δεν ταιριάζουν με τίποτα από τον άλλο πίνακα, δεν θα εμφανιστούν. Στην περίπτωσή μας, κάθε πόλη έχει βροχόπτωση, οπότε όλα θα εμφανιστούν.

Ας ανακτήσουμε τη βροχόπτωση για το 2019 για όλες τις πόλεις μας.

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

SELECT cities.city
    rainfall.amount
FROM cities
    INNER JOIN rainfall ON cities.city_id = rainfall.city_id

Έχουμε τονίσει τις δύο στήλες που θέλουμε και το γεγονός ότι θέλουμε να συνδυάσουμε τους πίνακες μαζί μέσω του city_id. Τώρα μπορούμε να προσθέσουμε τη δήλωση WHERE για να φιλτράρουμε μόνο το έτος 2019.

SELECT cities.city
    rainfall.amount
FROM cities
    INNER JOIN rainfall ON cities.city_id = rainfall.city_id
WHERE rainfall.year = 2019

-- Output

-- city     | amount
-- -------- | ------
-- Tokyo    | 1874
-- Atlanta  | 1111
-- Auckland |  942

Περίληψη

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

🚀 Πρόκληση

Υπάρχουν πολλές σχεσιακές βάσεις δεδομένων διαθέσιμες στο διαδίκτυο. Μπορείτε να εξερευνήσετε τα δεδομένα χρησιμοποιώντας τις δεξιότητες που μάθατε παραπάνω.

Κουίζ μετά τη διάλεξη

Κουίζ μετά τη διάλεξη

Ανασκόπηση & Αυτομελέτη

Υπάρχουν αρκετοί πόροι διαθέσιμοι στο Microsoft Learn για να συνεχίσετε την εξερεύνησή σας στις έννοιες της SQL και των σχεσιακών βάσεων δεδομένων.

Εργασία

Τίτλος Εργασίας


Αποποίηση ευθύνης:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης Co-op Translator. Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.