Παναγιώτης Συμεωνίδης

Διδάκτωρ Τμήματος Πληροφορικής
Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης

Αναστάσιος Γούναρης

Επ. Καθηγητής Τμήματος Πληροφορικής
Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης


Βάσεις, Αποθήκες και Εξόρυξη Δεδομένων με τον SQL Server

Εργαστηριακός Οδηγός  

 

 

 

Τίτλος Ηλεκτρονικού Συγγράμματος

Βάσεις, Αποθήκες και Εξόρυξη Δεδομένων με τον SQL Server
Εργαστηριακός Οδηγός

 

Κύριος Συγγραφέας
Παναγιώτης Συμεωνίδης

Συν-συγγραφέας
Αναστάσιος Γούναρης

Κριτικός αναγνώστης
Ιωάννης Θεοδωρίδης

Συντελεστές έκδοσης
Γλωσσική επιμέλεια: Φώτης Συμεωνίδης
Γραφιστική επιμέλεια: Χρήστος Άνδρας
Τεχνική επεξεργασία: Ανδρέας Πάσχος  

ISBN: 978-960-603-021-5

Copyright © ΣΕΑΒ, 2015

Το παρόν έργο αδειοδοτείται υπό τους όρους της άδειας Creative Commons Αναφορά Δημιουργού - Μη Εμπορική Χρήση - Όχι Παράγωγα Έργα 3.0. Για να δείτε ένα αντίγραφο της άδειας αυτής επισκεφτείτε τον ιστότοπο https://creativecommons.org/licenses/by-nc-nd/3.0/gr/


Σύνδεσμος Ελληνικών Ακαδημαϊκων Βιβλιοθηκών
Εθνικό Μετσόβιο Πολυτεχνείο
Ηρώων Πολυτεχνείου 9, 15780 Ζωγράφου

www.kallipos.gr

 

Πίνακας Περιεχομένων

 

Κεφάλαιο 2. Δημιουργία Βάσης Δεδομένων και Πινάκων


2.1. Ορισμός και Δημιουργία μιας Βάσης Δεδομένων
2.1.1. Δημιουργία νέας βάσης σε γραφικό περιβάλλον
2.1.2. Δημιουργία νέας βάσης με κώδικα SQL
2.1.3. Διαγραφή μίας βάσης με κώδικα SQL
2.2. Βασικές Έννοιες και Δημιουργία Πινάκων
2.2.1. Τύποι Δεδομένων
2.2.2. Χρήσιμες συμβουλές για τους τύπους δεδομένων
2.2.3. Δημιουργία πινάκων με τον Management Studio
2.2.4. Δημιουργία πινάκων με κώδικα της SQL
2.2.5. Συσχετίσεις/Relationships Πινάκων
2.2.6. Δημιουργία πινάκων με τον Database Diagrams
2.3. Εισαγωγή εγγραφών στους πίνακες
2.3.1. Εισαγωγή εγγραφών στους πίνακες με γραφικό τρόπο
2.3.2. Εισαγωγή εγγραφών στους πίνακες με εντολές SQL
2.4. Αλλαγή σε δεδομένα πινάκων
2.4.1. Ενημέρωση δεδομένων
2.4.2.  Διαγραφή δεδομένων
2.5. Κώδικας SQL για τη δημιουργία της βάσης δεδομένων DVDclub
2.6. Ασκήσεις
2.7. Βιβλιογραφία/Αναφορές

 

Κεφάλαιο 3. Ερωτήματα SQL

3.1. Βασικά Ερωτήματα
3.1.1 Διαχείριση του Results Pane
3.1.2 Ερωτήματα επιλογής εγγραφών από ένα πίνακα.
3.1.3. Ταξινόμηση αποτελεσμάτων
3.2. Ερωτήματα επιλογής εγγραφών από πολλούς πίνακες
3.2.1. Εσωτερική και εξωτερική σύνδεση πινάκων
3.2.2. Μετονομασία και αυτό-σύνδεση
3.3. Ερωτήματα συνάθροισης και ομαδοποίησης
3.3.1. Ερωτήματα με συναρτήσεις συνάθροισης
3.3.2. Ομαδοποίηση των δεδομένων - O όρος Group by
3.3.3. Ο όρος Having
3.4. Ερωτήματα με πράξεις συνόλων και εμφωλευμένα ερωτήματα
3.4.1. Βασικές πράξεις
3.4.2. Εμφωλευμένα ερωτήματα
3.4.3. Σύγκριση μεταξύ συνόλων
3.4.4. Έλεγχος κενότητας
3.5. Ερωτήματα SQL για όψεις
3.6. Το εργαλείο Query Designer για δημιουργία ερωτημάτων Query by Example
3.7. Ασκήσεις με ερωτήματα SQL
3.7.1. Ασκήσεις με ερωτήματα επιλογής γραμμών από ένα πίνακα.
3.7.2. Ασκήσεις με ερωτήματα επιλογής γραμμών από πολλούς πίνακες.
3.7.3. Ασκήσεις με Ερωτήματα ομαδοποίησης/συνάθροισης δεδομένων.
3.7.4. Ασκήσεις με ερωτήματα με φωλιασμένες εντολές SQL.
3.8. Λύσεις Ασκήσεων με ερωτήματα SQL
3.8.1. Λύσεις ασκήσεων με ερωτήματα επιλογής γραμμών από ένα πίνακα.
3.8.2. Λύσεις ασκήσεων με ερωτήματα επιλογής γραμμών από πολλούς πίνακες.
3.8.3. Λύσεις ασκήσεων με ερωτήματα ομαδοποίησης/συνάθροισης δεδομένων.
3.8.4. Λύσεις ασκήσεων με ερωτήματα με φωλιασμένες εντολές SQL.
3.9. Βιβλιογραφία/Αναφορές

Κεφάλαιο 4. Προχωρημένες λειτουργίες στον SQL Server

4.1. Ερωτήματα ορισμού δεδομένων
4.1.1. Εισαγωγή πολλών γραμμών σε πίνακα
4.1.2. Ενημέρωση τιμής των πεδίων ενός πίνακα
4.1.3. Διαγραφή των γραμμών ενός πίνακα
4.1.4. Μεταβολή της δομής ενός πίνακα
4.1.5. Μετονομασία πίνακα και πεδίου πίνακα
4.1.6. Διαγραφή πίνακα και βάσης δεδομένων
4.2. Αποθηκευμένες Διαδικασίες, Εναύσματα, Συναλλαγές
4.2.1. Αποθηκευμένες διαδικασίες/Stored Procedures
4.2.2. Εναύσματα/Triggers
4.2.3. Συναλλαγές/Transactions
4.3. Βελτιστοποίηση Ερωτημάτων
4.3.1. Παρακολούθηση του πλάνου εκτέλεσης ερωτήματος SQL
4.3.2. Ευρετήρια/Indices
4.3.3. Παράδειγμα βελτίωσης απόδοσης ερωτήματος με την χρήση ευρετηρίου
4.4. Εξαγωγή του κώδικα της βάσης δεδομένων
4.5. Εκχώρηση δικαιωμάτων πρόσβασης χρηστών στη βάση δεδομένων
4.5.1. Εκχώρηση δικαιωμάτων χρήστη
4.5.2. Εκχώρηση δικαιωμάτων στο χρήστη Employee με κώδικα SQL.
4.5.3. Εκχώρηση δικαιωμάτων στο χρήστη Manager με γραφικό τρόπο
4.5.4. Αφαίρεση δικαιωμάτων από τον χρήστη
4.5.5. Άρνηση δικαιωμάτων σε χρήστη
4.6. Ασκήσεις
4.7. Βιβλιογραφία/Αναφορές

Κεφάλαιο 5. Δημιουργία φορμών για την βάση δεδομένων DVDclub

5.1. Δημιουργία συνδεδεμένων πινάκων από τον SQL Server στην Access 2013 του Microsoft Οffice.
5.2. Δημιουργία απλής φόρμας εισαγωγής στοιχείων και σύνθετης κύριας/δευτερεύουσας φόρμας.
5.2.1. Δημιουργία μιας απλής φόρμας εισαγωγής στοιχείων Πελατών.
5.2.2. Δημιουργία Κύριας και δευτερεύουσας φόρμας
5.3. Δημιουργία λίστας αναζήτησης σε φόρμα
5.4. Δημιουργία υπολογιζόμενου πεδίου σε δευτερεύουσα φόρμα.
5.5. Ασκήσεις.

 

Κεφάλαιο 6. Προετοιμασία Δεδομένων ενόψει της Διαδικασίας Εξόρυξης

6.1. Eισαγωγή βάσης δεδομένων MovieClick
6.2. Εισαγωγή Βάσης Δεδομένων FoodMart
6.3. Εισαγωγή βάσης δεδομένων AdventureWorksDW2008R2
6.4. Επεξεργασία βάσης δεδομένων MovieClick
6.5. Επεξεργασία βάσης δεδομένων FoodMart
6.6. Επεξεργασία βάσης AdventureWorks
6.7. Ασκήσεις

Κεφάλαιο 8. Ομαδοποίηση δεδομένων

8.1. Θεωρητικό υπόβαθρο των αλγορίθμων ομαδοποίησης του SQL Server
8.2. Δημιουργία ενός μοντέλου ομαδοποίησης δεδομένων
8.3. Αξιολόγηση Μοντέλου Clustering
8.3.1 Αξιολογόντας το μοντέλο  με την χρήση του Lift chart
8.3.2. Αξιολόγηση ενός μοντέλου με την χρήση του Drill through
8.4. Ασκήσεις στην ομαδοποίηση δεδομένων
8.5. Λύσεις ασκήσεων στην ομαδοποίηση δεδομένων
8.6. Βιβλιογραφία/Αναφορές

Κεφάλαιο 9. Εξαγωγή Κανόνων Συσχέτισης

9.1. Ο αλγόριθμος Assosiation Rules
9.2. Δημιουργία ενός μοντέλου Association Rules
9.3. Αξιολόγηση των Itemsets και των Association Rules
9.3.1. Αξιολόγηση των Itemsets
9.3.2. Αξιολόγηση των κανόνων συσχέτισης
9.4. Ασκήσεις αξιολόγησης Κανόνων Συσχέτισης
9.5. Λύσεις Ασκήσεων αξιολόγησης Κανόνων Συσχέτισης
9.6. Βιβλιογραφία/Αναφορές

Κεφάλαιο 10. Χρονοσειρές

10.1.  Θεωρητικό υπόβαθρο των αλγορίθμων χρονοσειρών (time series) του SQL Server
10.2.  Δημιουργία ενός μοντέλου πρόβλεψης χρονοσειρών
10.3.  Τροποποίηση και παραμετροποίηση  του μοντέλου Time Series
10.4.  Αξιολόγηση του μοντέλου Time Series.
10.4.1. Καρτέλα Charts
10.4.2. Καρτέλα Model
10.5. Ασκήσεις αξιολόγησης μοντέλου Time Series
10.6. Λύσεις ασκήσεων αξιολόγησης μοντέλου Time Series
10.7. Βιβλιογραφία/Αναφορές

Κεφάλαιο 11. Αποθήκες και κύβοι δεδομένων

11.1. Θεωρητικό υπόβαθρο για τους κύβους δεδομένων και τη πολυδιάστατη ανάλυση
11.2. Δημιουργία ενός κύβου δεδομένων
11.3. Δημιουργία ιεραρχίας σε μια διάσταση του κύβου δεδομένων
11.4. Υποβολή ερωτημάτων στον κύβο δεδομένων
11.5. Υποβολή ερωτημάτων μέσω Pivot table του Excel
11.6.Ασκήσεις για κύβους δεδομένων
11.7.  Λύσεις ασκήσεων για κύβους δεδομένων
11.8. Βιβλιογραφία/Αναφορές

 

   

Εισαγωγή

 

Αυτό το ηλεκτρονικό βιβλίο αποτελεί έναν εργαστηριακό οδηγό σε θέματα βάσεων, αποθηκών και εξόρυξης δεδομένων με τον MS SQL Server. To ebook αξιοποιεί όλα τα σύγχρονα χαρακτηριστικά των tablets και του διαδικτύου, προσφέροντας στον αναγνώστη μοναδικές δυνατότητες σε σχέση με τα συμβατικά βιβλία και τον μέχρι πρότινος τρόπο διδασκαλίας στο εργαστήριο πληροφορικής.

Μερικές από τις κύριες δυνατότητες που προσφέρονται από το ebook είναι οι ακόλουθες:

  1. Μπορεί να αναγνωστεί σε όλες τις προσφερόμενες πλατφόρμες των tablets (Android, iOS, κλπ.).
  2. Περιέχει έναν κεντρικό πίνακα περιεχομένων μέσα από τον οποίο, ο αναγνώστης μπορεί να περιηγηθεί στα 11 κεφάλαια του βιβλίου. Επίσης, είναι εμπλουτισμένο με εκατοντάδες υπερσυνδέσμους που παρέχουν στον αναγνώστη επιπρόσθετες επεξηγήσεις όρων και λέξεων κλειδιών.
  3. To ebook έχει περισσότερες από 450 εικόνες/σχήματα που καθοδηγούν τον αναγνώστη βήμα-βήμα στην εκτέλεση των διαδικασιών που περιγράφονται κάθε φορά. Επίσης, εμπεριέχει 25 πίνακες με συγκεντρωτικές πληροφορίες.
  4. Στο τέλος κάθε κεφαλαίου υπάρχουν ασκήσεις για την καλύτερη εμπέδωση της ύλης του. Συνολικά, στο ebook διατίθενται 70 ασκήσεις, εκ των οποίων οι 45 είναι λυμένες.
  5. Το πρώτο μέρος του βιβλίου αφορά μια βάση δεδομένων ενός DVDclub, η οποία είναι διαθέσιμη συνεχώς στο διαδίκτυο για να προσπελαστεί οποιαδήποτε χρονική στιγμή από τον αναγνώστη. Επίσης, διατίθενται 75 εκφωνήσεις ερωτημάτων SQL με τις λύσεις τους και τα αποτελέσματα του κάθε ερωτήματος.
  6. Το ebook διαθέτει έναν Web-based SQL Editor, όπου ο αναγνώστης μπορεί να συντάσσει, να τρέχει και να βλέπει τα αποτελέσματα των ερωτημάτων του, χωρίς να υπάρχει ανάγκη για εγκατάσταση κάποιου λογισμικού, π.χ. Sql Server 2015.

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

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

Bίντεο Παρουσίαση

 

 

Πρώτο μέρος: Θέματα Βάσεων Δεδομένων (Κεφάλαια 1-5)

Το πρώτο μέρος του βιβλίου (Κεφάλαια 1- 5) περιγράφει τις βασικές λειτουργίες και δυνατότητες που προσφέρονται από ένα σύστημα διαχείρισης βάσεων δεδομένων. Συγκεκριμένα, στο βιβλίο αυτό περιγράφονται οι δυνατότητες του SQL Server 2014. Ο SQL Server είναι ένα ισχυρό εργαλείο που περιέχει ένα πλήθος δυνατοτήτων, όπως είναι οι εντολές που αφορούν τη γλώσσα ορισμού δεδομένων(Data Definition Language - DDL), οι εντολές που αφορούν τη γλώσσα χειρισμού δεδομένων (Data Manipulation Language - DML), και η γλώσσα προγραμματισμού Transact-SQL για την δημιουργία αποθηκευμένων διαδικασιών, εναυσμάτων και συναλλαγών.

Πιο αναλυτικά, στο πρώτο κεφάλαιο, που είναι εισαγωγικό, ο αναγνώστης θα πληροφορηθεί πώς μπορεί να εγκαταστήσει τον SQL Server 2014. Συγκεκριμένα, περιγράφονται τα βασικά βήματα εγκατάστασης του SQL Server και, στη συνέχεια, ο έλεγχος που απαιτείται να γίνει, προκειμένου να βεβαιωθεί η καλή λειτουργία της εγκατάστασης. Τέλος, γίνεται μια σύντομη ξενάγηση στο βασικό γραφικό περιβάλλον του SQL Server Management Studio.

Το δεύτερο κεφάλαιο περιγράφει τη δημιουργία μιας βάσης δεδομένων που αφορά ένα DVDclub. Θα εργαστούμε κυρίως με εντολές από τη γλώσσα ορισμού δεδομένων (DDL). Θα συζητήσουμε για τους διαφορετικούς τύπους δεδομένων και για τον τρόπο δημιουργίας πινάκων με γραφικό τρόπο και με εντολές της SQL. Τέλος, θα δημιουργήσουμε συσχετίσεις μεταξύ των πινάκων στο Database Diagram και θα εισαγάγουμε τιμές στους πίνακές μας

Στο τρίτο κεφάλαιο θα παρουσιάσουμε βασικά και σύνθετα ερωτήματα της SQL. Τα ερωτήματα θα υποβληθούν στην βάση δεδομένων DVDclub που δημιουργήθηκε στο προηγούμενο κεφάλαιο. Συγκεκριμένα, θα μελετηθούν εντολές της SQL που αφορούν την διαχείριση δεδομένων (DML). Ενδεικτικά αναφέρεται ότι θα παρουσιαστούν ερωτήματα σύνδεσης πινάκων, ομαδοποίησης, πράξεων συνόλων, καθώς και η δημιουργία ερωτημάτων με γραφικό τρόπο (Query by Example) μέσα από τo περιβάλλον του Query Designer.

Στο τέταρτο κεφάλαιο θα παρουσιάσουμε προχωρημένες λειτουργίες που γίνονται στο περιβάλλον του SQL Server. Συγκεκριμένα, θα μελετήσουμε εντολές της SQL που αφορούν τη γλώσσα DDL, όπως τη μεταβολή της δομής των πινάκων, τη διαγραφή τους κτλ. Άλλα προχωρημένα θέματα που θα παρουσιαστούν είναι η βελτιστοποίηση ερωτημάτων με τη χρήση indices, οι αποθηκευμένες διαδικασίες,τα εναύσματα και οι συναλλαγές με την βοήθεια της γλώσσας προγραμματισμού Transact-SQL.

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

Δεύτερο μέρος: Θέματα Αποθηκών και Εξόρυξης Δεδομένων (Κεφάλαια 6-11)

To δεύτερο μέρος του βιβλίου (Κεφάλαια 6 -11) περιγράφει τις βασικές τεχνικές εξόρυξης δεδομένων και τη διαδικασία δημιουργίας κύβων δεδομένων (data cubes). Η Εξόρυξη δεδομένων (Data Mining) ή, στη διεθνή ορολογία, Knowledge Discovery in Databases (KDD) είναι μια προηγμένη διαδικασία ανάλυσης μεγάλου όγκου δεδομένων. Αυτή η ανάλυση των δεδομένων μπορεί να γίνει με τη χρήση τεχνικών όπως decision trees, clustering, association rules, time series κτλ. Οι κύβοι δεδομένων είναι ένας τρόπος οργάνωσης των δεδομένων σε συγκεντρωτικούς πίνακες (Pivot tables) για την πραγματοποίηση γρήγορης ανάλυσης των δεδομένων και την λήψη στρατηγικών αποφάσεων. Οι τεχνικές αποθηκών και εξόρυξης δεδομένων ξεπερνούν κατά πολύ σε δυνατότητες ανάλυσης την DML. Στο δεύτερο μέρος, λοιπόν, περιγράφονται οι παραπάνω τεχνικές μέσα από τη χρήση του MS SQL Server 2014 Business Intelligence. Ο Business Intelligence του Visual Studio είναι ένα ισχυρό εργαλείο που περιέχει ένα πλήθος από αλγορίθμους για την υλοποίηση των τεχνικών εξόρυξης δεδομένων που έχουν ήδη αναφερθεί.

Κάθε κεφάλαιο του δεύτερου μέρους περιγράφει μια διαφορετική τεχνική εξόρυξης δεδομένων, με εξαίρεση το τελευταίο που περιγράφει τη δημιουργία ενός κύβου δεδομένων. Πιο αναλυτικά, στο έκτο κεφάλαιο, που είναι εισαγωγικό, ο αναγνώστης αρχικά θα πληροφορηθεί πώς μπορεί να δημιουργήσει μία βάση δεδομένων με τη χρήση του SQL Server Management Studio. Στη συνέχεια, θα εισαγάγει αυτή τη βάση σε ένα νέο project που θα δημιουργήσει στο Data Tools του Visual Studio. Η εισαγωγή και η προεπεξεργασία δεδομένων θα γίνει σε τρεις διαφορετικές βάσεις δεδομένων (MovieClick, FoodMart, AdventureWorks), προκειμένου, μέσω αυτών, να εφαρμόσουμε τεχνικές εξόρυξης δεδομένων σε επόμενα κεφάλαια.

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

Το όγδοο κεφάλαιο ασχολείται με το clustering μέσω των αλγορίθμων ομαδοποίησης k-means και EM clustering. Όπως και στο προηγούμενο κεφάλαιο, γίνεται μια αναλυτική περιγραφή των παραμέτρων του κάθε αλγορίθμου και βλέπουμε τα clusters που δημιουργούνται μεταβάλλοντας τις τιμές των παραμέτρων αυτών. Η αξιολόγηση των clusters γίνεται με δύο τρόπους: με τη χρήση διαγραμμάτων και με την αναλυτική εξερεύνηση του κάθε cluster, ώστε να διερευνήσουμε από ποια στοιχεία-μέλη συνίσταται το καθένα.

Στο ένατο κεφάλαιο περιγράφεται ο αλγόριθμος εξαγωγής κανόνων συσχέτισης. Ο συγκεκριμένος αλγόριθμος παράγει συσχετίσεις μεταξύ συνόλων αντικειμένων και ανήκει στην οικογένεια των Apriori αλγορίθμων. Οι ομάδες αντικειμένων που εξάγονται ονομάζονται itemsets (στοιχειοσύνολα). Με βάση τα itemssets που έχουν παραχθεί, εξάγονται οι κανόνες συσχέτισης μεταξύ των αντικειμένων. Ένας κανόνας συσχέτισης σηματοδοτεί τη συσχέτιση ενός συνόλου αντικειμένων από ένα άλλο σύνολο αντικειμένων. Μέσα από τις ασκήσεις περιγράφονται αναλυτικά τα itemsets και οι association rules που δημιουργεί ο αλγόριθμος αλλάζοντας τις τιμές των παραμέτρων του.

Στο δέκατο κεφάλαιο περιγράφεται η δημιουργία ενός μοντέλου χρονοσειρών (time series). Συγκεκριμένα, θα μάθουμε τον τρόπο με τον οποίο δημιουργείται και χρησιμοποιείται ένα μοντέλο χρονοσειρών για την βάση δεδομένων AdventureWorks. Η Adventure Works είναι μια βάση δεδομένων που αφορά μια υποθετική πολυεθνική εταιρία που εμπορεύεται ποδήλατα σε διάφορες ηπείρους/χώρες. Το τμήμα πωλήσεων αυτής υποθέτουμε ότι επιθυμεί να προβλέψει τις μελλοντικές πωλήσεις ανά μοντέλο ποδηλάτου βάσει των πωλήσεων που σημειώθηκαν στο παρελθόν. Ένα μοντέλο χρονοσειρών είναι πολύ χρήσιμο σε τέτοιες περιπτώσεις.

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

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

Σε αυτό το σημείο, θα ήταν παράλειψή μου να μην ευχαριστήσω τον κ. Α. Νανόπουλο (για την προ δεκαετίας αρχική έκδοση του εργαστηριακού οδηγού) και, ασφαλώς, όλα τα μέλη του Εργαστηρίου Τεχνολογίας και Επεξεργασίας Δεδομένων (Delab) του Τμήματος Πληροφορικής του Α.Π.Θ. που κατά καιρούς ανέλαβαν τη διδασκαλία του εργαστηριακού μέρους των μαθημάτων Βάσεων, Αποθηκών και Εξόρυξης Δεδομένων, συνεισφέροντας σε υλικό και ασκήσεις.  Επιπροσθέτως, να ευχαριστήσω τον Ανδρέα Πάσχο για την τεχνική επεξεργασία του ηλεκτρονικού βιβλίου, καθώς και τον Φώτη Συμεωνίδη για τη φιλολογική επιμέλεια του βιβλίου, το εξώφυλλο και το βίντεο με οδηγίες χρήσης για το ebook. Επίσης, θέλω να ευχαριστήσω ιδιαίτερα τον συνάδελφο και φίλο μου Χρήστο Άνδρα που αφενός βοήθησε στην επικαιροποίηση των κεφαλαίων του πρώτου μέρους του βιβλίου, προκειμένου αυτά να προσαρμοστούν στο νέο περιβάλλον του SQL Server 2014, και αφετέρου παρείχε  χρήσιμες παρατηρήσεις για την περαιτέρω βελτίωση του παρόντος πονήματος. Τέλος, επιθυμώ να ευχαριστήσω τoυς μεταπτυχιακούς φοιτητές Φοίβο Κολιόπουλο, Στέλλα Γκουτζιούρη, Στέλλα Μαυρομάτη και Ναούμ Τσιόπτσια που βοήθησαν στην επικαιροποίηση (από την προηγούμενη έκδοση) των κεφαλαίων του δεύτερου μέρους του βιβλίου, προκειμένου αυτά να προσαρμοστούν στο νέο περιβάλλον του SQL Server 2014.

 

 

Πίνακας Περιεχομένων

Data Definition Language - DDL

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

Data Manipulation Language - DML

Η γλώσσα χειρισμού δεδομένων χρησιμοποιείται για την επεξεργασία, την ενημέρωση, την εισαγωγή και την διαγραφή δεδομένων.

Διάγραμμα οντοτήτων-συσχετίσεων (διάγραμμα E-R)

Τα Διάγραμματα οντοτήτων-συσχετίσεων παρέχουν ένα απλό και κατανοητό τρόπο περιγραφής της δομής των δεδομένων της Βάσης Δεδομένων

Ερώτημα SQL

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

create database

Ένας νέος πίνακας δημιουργείται με τη χρήση της εντολής CREATE TABLE ή σύνταξη της οποίας έχει ως εξής :

CREATE TABLE  ( 
<όνομα πεδίου 1> <τύπος πεδίου 1>,
<όνομα πεδίου 2> <τύπος πεδίου 2>,

<όνομα πεδίου Ν> <τύπος πεδίου Ν>);

Drop Database

Μπορούμε να διαγράψουμε ολόκληρο πίνακα, μαζί με τα δεδομένα που τυχόν έχει χρησιμοποιώντας την εντολή DROP σύμφωνα με το ακόλουθο πρότυπο :
DROP TABLE <όνομα πίνακα>

ON UPDATE

H πρόταση ON UPDATE προσδιορίζει την ενέργεια που θα εκτελεστεί αν θέλουμε να αλλάξουμε την τιμή ενός πεδίου:
UPDATE <όνομα πίνακα> SET <όνομα πεδίου> <νέα τιμή πεδίου> WHERE <κριτήρια επιλογής εγγραφών>

ON DELETE

Ο σκοπός είναι πολύ απλός, διαγράφει εγγραφές από ένα πίνακα. Και πάλι έχομε την δυνατότητα να ορίσουμε ποιές εγγραφές θέλουμε να διαγραφούν (ή και όλες) π.χ.:
DELETE FROM product WHERE id=1

Καρτεσιανού γινομένου

To Καρτεσιανό γινόμενο αποτελεί την πράξη μεταξύ δύο πινάκων όπου η κάθε εγγραφή του ενός πίνακα συνδυάζεται με όλες τις εγγραφές του άλλου πίνακα

πράξη της επιλογής/selection

Η SQL εντολή μέσω της οποίας ανακτούμε πληροφορίες και συντάσσουμε ερωτήματα είναι η SELECT. Η γενική σύνταξη της SELECΤ είναι αρκετά σύνθετη, ωστόσο ένα απλό πρότυπο είναι το ακόλουθο:
SELECT <πεδίο που θέλουμε να φαίνονται>
FROM <πίνακες από τους οποίους θα αντληθούν τα δεδομένα>
WHERE <κριτήρια επιλογής των εγγραφών>

πράξης της σύνδεσης (join)

Η εντολή JOIN σημαίνει σύνδεση, δηλαδή συνδυασμός δεδομένων από δύο ή περισσότερους πίνακες.

left outer join

Περιλαμβάνει επιπρόσθετα και όλες τις εγγραφές του πίνακα που βρίσκεται στα αριστερά της πράξης της σύνδεσης (join) και δεν εμπεριέχονται στο αποτέλεσμα της πράξης της σύνδεσης.

πράξη του full outer join

Περιλαμβάνει επιπρόσθετα και όλες τις εγγραφές των πινάκων που βρίσκονται στα αριστερά και δεξιά της πράξης της σύνδεσης (join) και δεν εμπεριέχονται στο αποτέλεσμα της πράξης της σύνδεσης.

όρος distinct

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

όρος GROUP BY

H λέξη GROUP BY προσδιορίζει τις στήλες με τις οποίες θα πραγματοποιηθεί ομαδοποίηση (grouping) των δεδομένων.

όρος HAVING

Ο όρος HAVING χρησιμοποιείται για να ορίσει περιοσρισμούς που σχετίζονται με τα ήδη ομαδοποιημένα αποτελέσματα που έχουν δημιουργηθεί με την GROUP BY.

πράξη της ένωσης πινάκων/σχέσεων

H SQL παρέχει ειδικές εντολές για την υποστήριξη των πράξεων της σχεσιακής άλγεβρας που αναφέρονται στην ένωση, διαφορά και τομή πινάκων. Οι πράξη της ένωσης (UNION) συνενώνει τις εγγραφές δύο ή περισσότερων πινάκων.
Ένα παράδειγμα ένωσης δίνεται παρακάτω:
SELECT συνέδριο
FROM πρακτικά_συνεδρίου
UNION
SELECT τιτλος
FROM περιοδικό;

πράξη της τομής σχέσεων

H SQL παρέχει ειδικές εντολές για την υποστήριξη των πράξεων της σχεσιακής άλγεβρας που αναφέρονται στην ένωση, διαφορά και τομή πινάκων. Οι πράξεις αυτές υλοποιούνται στην SQL με τις εντολές UNION, EXCEPT και INTERSECΤ αντιστοίχως.
παράδειγμα τομής :
SELECT ονομα
FROM συνδρομητης
INTERSECT
SELECT ονομα
FROM συγγραφεας;

πράξη της διαφοράς σχέσεων

H SQL παρέχει ειδικές εντολές για την υποστήριξη των πράξεων της σχεσιακής άλγεβρας που αναφέρονται στην ένωση, διαφορά και τομή πινάκων. Οι πράξεις αυτές υλοποιούνται στην SQL με τις εντολές UNION, EXCEPT και INTERSECΤ αντιστοίχως.
παράδειγμα διαφοράς :
SELECT κωδικός,τίτλος
FROM άρθρο
EXCEPT
SELECT κωδικός,τίτλος
FROM άρθρο
WHERE κωδικός_περιοδικού IS NOT NULL;

Ο όρος ΙΝ

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

Ο ορος Νot Ιn

Σε περίπτωση που θέλουμε ένα πεδίο να λαμβάνει τιμές από ένα προκαθορισμένο σύνολο τιμών, εξαιρώντας κάποιες τιμές τότε μπορούμε εναλλακτικά να χρησιμοποιήσουμε τον τελεστή ΝΟΤ ΙΝ.

Οι όροι all και some

H SQL προσφέρει τα κατηγορήματα SOME(ή ΑΝΥ) και ALL τα οποία αντιστοιχούν στον υπαρξιακό και καθολικό ποσοδείκτη που χρησιμοποιούμε στα μαθηματικά. Με τη χρήση των κατηγορημάτων αυτών μπορούμε να συντάξουμε πολύ χρήσιμα ερωτήματα με τη χρήση υποερωτημάτων. Πριν απο τα κατηγορήματα SOME και ALL, μπορεί να προηγείται οποιοσδήποτε τελεστής σύγκρισης (=, >, <, >=, <=, <>)

Οι όροι exists και not exists

Η τιμή που επιστρέφει το κατηγόρημα EXISTS είναι αληθής, αν το σύνολο που ακολουθεί δεν είναι κενό. Σε διαφορετική περίπτωση η τιμή που επιστρέφεται είναι ψευδής.

CREATE VIEW

Για τον ορισμό μιας όψης, η SQL παρέχει την εντολή CREATE VIEW που συντάσσεται ως εξής:
CREATE VIEW όνομα-όψης
AS
(υποερώτημα SQL);

DELETE FROM

Παρόμοια με την εντολή UPDATE λειτουργεί και η εντολή DELETE. Ο σκοπός της είναι πολύ απλός, διαγράφει εγγραφές από ένα πίνακα.

DROP TABLE

Η πλήρης διαγραφή ενός πίνακα γίνεται χρησιμοποιώντας την εντολή DROP σύμφωνα με τον ακόλουθο πρότυπο :
DROP TABLE <ονομα πίνακα>

Οι αποθηκευμένες διαδικασίες/stored procedures

O SQL Server δίνει την δυνατότητα υλοποίησης τμημάτων κώδικα τα οποία παραμένουν αποθηκευμένα μέσα στη Βάση Δεδομένων και καλούνται αποθηκευμένες διαδικασίες (stored procedures). Αυτά ενεργοποιούνται ανά τακτά χρονικά διαστήματα για την εκτέλεση μιας σημαντικής λειτουργίας.

Το εύναυσμα/trigger

Ένας σκανδαλισμός ή εύναυσμα (trigger) είναι ένα τμήμα κώδικα που εκτελείται όταν συμβεί ένα γεγονός. Τα γεγονότα που ενεργοποιούν σκανδαλισμούς είναι εισαγωγές, διαγραφές, και ενημερώσεις στα δεδομένα ενός πίνακα.

Ευρετήριο

Ένας κατάλογος (ευρετήριο) ορίζεται σε μία ή περισσότερες στήλες ενός πίνακα και στοχεύει στην αποδοτικότερη εκτέλεση των ερωτημάτων που χρησιμοποιούν τις στήλες αυτές στη συνθήκη WHERE. Η κατασκευή και κατάργηση καταλόγων πραγματοποιείται με τις εντολές CREATE INDEX και DROP INDEX αντίστοιχα.

ALTER TABLE

O ορισμός ενός πίνακα μπορεί να μεταβληθεί στην πορεία, αναλόγως με τις απαιτήσεις. H SQL προσφέρει την εντολή ALTER TABLE, με την οποία επιτρέπονται να γίνουν συγκεκριμένες αλλαγές στον πίνακα: (προσθήκη νέας στήλης, διαγραφή υπάρχουσας στήλης, αλλαγή πεδίου ορισμού μίας στήλης, εισαγωγή νέου περιορισμού, κατάργηση περιορισμού, αλλαγή της εξ ορισμού τιμής στήλης, κατάργηση αρχικής τιμής στήλης).

εντολή grant.

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

εντολή revoke.

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

H παράμετρος Split method:

Αυτή η παράμετρος καθορίζει τη μέθοδο με την οποία διαχωρίζονται οι κόμβοι του δένδρου. Μπορεί να πάρει τις τιμές [1,3] όπου 1 είναι η τιμή για Binary δένδρο, 2 η τιμή για Complete (multi-way) δένδρο και 3 η τιμή και για τα δύο μαζί.

Κατηγοριοποίηση (classification)

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

H παράμετρος Split method:

Αυτή η παράμετρος καθορίζει τη μέθοδο με την οποία διαχωρίζονται οι κόμβοι του δένδρου. Μπορεί να πάρει τις τιμές [1,3] όπου 1 είναι η τιμή για Binary δένδρο, 2 η τιμή για Complete (multi-way) δένδρο και 3 η τιμή και για τα δύο μαζί.

H παράμετρος Stopping Tolerance

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

Η τάση (trend)

Η τάση μας δείχνει την γενική κατεύθυνση των δεδομένων μας. Για παράδειγμα, η τάση είναι αυξανόμενη στις πωλήσεις προϊόντων τις ημέρες των Χριστουγέννων.

Η περιοδικότητα (periodicity)

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

Οι ακραίες τιμές (outliers)

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

ολοκληρωμένη (integrated)

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

Μη ευμετάβλητη (non volatile)

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

Αφορά ιστορικά δεδομένα (time-variant)

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

Ένα μέτρο ή αλλιώς μετρική (measure)

Είναι το μέγεθος ή τα μεγέθη που μας ενδιαφέρουν να συναθροίσουμε ή να αναλύσουμε κατά τις λειτουργίες OLAP.

διαστάσεις (dimensions)

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

Η ιεραρχία (hierarchy)

Η ιεραρχία (hierarchy) μιας διάστασης

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

Το σχήμα Αστέρα (star schema)

Σύμφωνα με το μοντέλο αυτό η αποθήκη δεδομένων περιέχει ένα μεγάλο κεντρικό πίνακα που καλείται πίνακας γεγονότων (fact table) και ένα σύνολο μικρότερων πινάκων που καλούνται πίνακες διαστάσεων (fimension tables) και συνδέονται απευθείας στον fact table.

To σχήμα χιονονιφάδας (snowflake schema)

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

Το σχήμα γαλαξία (galaxy schema),

Στο σχήμα γαλαξία έχουμε περισσότερους τους ενός fact tables, τους οποίους μπορούν να διαμοιράζονται περισσότερες διαστάσεις.

Η πράξη Roll-up

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

Η πράξη Drill-down

Επιφέρει ακριβώς τα αντίθετα αποτελέσματα από τη λειτουργία ROLL-UP. Με τη λειτουργία DRILL-DOWN αυξάνουμε το επίπεδο λεπτομέρειας των δεδομένων μας.

Η πράξη Slice

Η λειτουργία SLICE επιλέγει τα δεδομένα του κύβου μας ως προς μία διάσταση.

Η πράξη Dice

H λειτουργία DICE επιλέγει τα δεδομένα ως προς πολλές διαστάσεις του κύβου μας, δημιουργώντας έναν μικρότερο κύβο.

Η πράξη Pivot

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

Συναθροιστικές συνάρτήσεις (aggregation function)

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

Προκειμένου να εξάγουμε έναν κανόνα συσχέτισης, πρέπει να ικανοποιούνται κάποια κατώτατα όρια τόσο για το support όσο και για τo confidence/probability. Ο κανόνας πρέπει να έχει support μεγαλύτερo από το όριο, που ονομάζεται ελάχιστη υποστήριξη (minimum_support), και η εμπιστοσύνη πρέπει να είναι μεγαλύτερη από το όριο, που ονομάζεται ελάχιστη εμπιστοσύνη (minimum_probability).

Προκειμένου να εξάγουμε έναν κανόνα συσχέτισης, πρέπει να ικανοποιούνται κάποια κατώτατα όρια τόσο για το support όσο και για τo confidence/probability. Ο κανόνας πρέπει να έχει support μεγαλύτερo από το όριο, που ονομάζεται ελάχιστη υποστήριξη (minimum_support), και η εμπιστοσύνη πρέπει να είναι μεγαλύτερη από το όριο, που ονομάζεται ελάχιστη εμπιστοσύνη (minimum_probability).

Slice

H λειτουργία Slice επιλέγει τα δεδομένα ως προς μία διάσταση του κύβου μας, δημιουργώντας μια φέτα ενός κύβου

Pivot

Η λειτουργία Pivot αλλάζει μόνο το τρόπο απεικόνισης των διαστάσεων του κύβου μα