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 264ebcc9fd
🌐 Update translations via Co-op Translator
2 weeks ago
..
README.md 🌐 Update translations via Co-op Translator 2 weeks ago
assignment.md 🌐 Update translations via Co-op Translator 3 weeks 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. Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.