Α. Δείκτες
1) Η μνήμη του υπολογιστή
2) Η έννοια του δείκτη
3) Ορισμός Δείκτη
4) Απόδοση τιμής σε δείκτη (Ο τελεστής &)
5) Απόδοση τιμής μέσω δείκτη (ο τελεστής *)
6) Παράδειγμα χρήσης δείκτη
Β. Δείκτες και Πίνακες
1) Το όνομα ενός πίνακα είναι δείκτης
2) Αποθήκευση ενός πίνακα στη μνήμη
3) Αριθμητική Δεικτών
4) Ισοδύναμος Συμβολισμός για πρόσβασή σε πίνακα
Γ. Δείκτες και Συναρτήσεις
1) Διοχέτευση Δείκτη σε Συνάρτηση
2) Διοχέτευση Ορίσματος σε Συνάρτηση μέσω Τιμής
3) Διοχέτευση Ορίσματος σε Συνάρτηση μέσω Αναφοράς
Δ. Παρατηρήσεις
1) Διοχέτευση πίνακα ως όρισμα σε συνάρτηση
2) Η Σταθερά NULL
Ασκήσεις
Α. Πίνακες
Α.1) Εισαγωγή στους Πίνακες
Α.1.1) Μονοδιάστατοι Πίνακες
Α.1.2) Παράδειγμα
B. Δομές Επανάληψης
Β.1) Γενικά
Β.2) Η δομή for
Β.2.1) Συντακτικό της for
Β.2.2) Διάγραμμα Ροής Προγράμματος
Β.2.3) Παραδείγματα Εκτέλεσης
Β.3) Η δομή do…while
Β.3.1) Συντακτικό της do…while
Β.3.2) Διάγραμμα Ροής Προγράμματος
Β.3.3) Παραδείγματα Εκτέλεσης
Β.3.4) Αμυντικός Προγραμματισμός
Β.4) Η δομή while
Β.4.1) Συντακτικό της while
Β.4.2) Διάγραμμα Ροής Προγράμματος
Β.4.3) Παραδείγματα Εκτέλεσης
Β.4.4) Αμυντικός Προγραμματισμός
Β.5) Συμπεράσματα
Β.5.1) Προτεινόμενη χρήση των δομών επανάληψης
Β.5.2) Προσομοίωση της for από την while και τη do..while
Γ) Ασκήσεις
Γ.1) Άθροισμα και Γινόμενο Αριθμών
Γ.2) Εμφωλιασμένοι Βρόχοι: Εκτύπωση Αθροισμάτων
Γ.3) Εμφωλιασμένοι Βρόχοι: Εκτύπωση Παραλληλογράμμου
Γ.4) Εμφωλιασμένοι Βρόχοι: Εκτύπωση Τριγώνου
Γ.5) Άθροισμα Αριθμών με Χρήση Πίνακα
Γ.6) Γινόμενο Αριθμών με Χρήση Πίνακα
Γ.7) Ελάχιστος από N αριθμούς
Γ.8) Μέσος Όρος Ν αριθμών
Α. Έλεγχος Προγράμματος
1) Η εντολή άμεσης επανάληψης continue
2) Η εντολή διακοπής επανάληψης break
3) Η εντολή μεταφοράς ελέγχου προγράμματος goto
4) Η εντολή ελέγχου πολλαπλής συνθήκης switch
Β. Προγραμματιστικές Τεχνικές
1) Ατέρμονες Βρόχοι για την κατασκευή menu
2) Άμεση Έξοδος από το πρόγραμμα
3) Εκτέλεση Εντολών Συστήματος
Γ.Ασκήσεις
Α. Χαρακτήρες
1) Ο τύπος δεδομένων char
2) O πίνακας ASCII
3) Χρήση Μεταβλητών τύπου char
Β. Συμβολοσειρές
1) Τι είναι η συμβολοσειρά
2) Διάβασμα και Εκτύπωση Συμβολοσειράς
3) Οι συναρτήσεις gets και puts
4) Η βιβλιοθήκη string.h
Γ. Ασκήσεις
Διαφάνειες για την διδασκαλία της απλής και σύνθετης δομής επιλογής. Το εκπαιδευτικό υλικό δημιουργήθηκε για να υποστηρίξει το δεύτερο φύλλο εργασίας διδακτικού σεναρίου στο μάθημα Αρχές Προγραμματισμού της Β' Τάξης του νέου Επαγγελματικού Λυκείου.
Α. Δείκτες
1) Η μνήμη του υπολογιστή
2) Η έννοια του δείκτη
3) Ορισμός Δείκτη
4) Απόδοση τιμής σε δείκτη (Ο τελεστής &)
5) Απόδοση τιμής μέσω δείκτη (ο τελεστής *)
6) Παράδειγμα χρήσης δείκτη
Β. Δείκτες και Πίνακες
1) Το όνομα ενός πίνακα είναι δείκτης
2) Αποθήκευση ενός πίνακα στη μνήμη
3) Αριθμητική Δεικτών
4) Ισοδύναμος Συμβολισμός για πρόσβασή σε πίνακα
Γ. Δείκτες και Συναρτήσεις
1) Διοχέτευση Δείκτη σε Συνάρτηση
2) Διοχέτευση Ορίσματος σε Συνάρτηση μέσω Τιμής
3) Διοχέτευση Ορίσματος σε Συνάρτηση μέσω Αναφοράς
Δ. Παρατηρήσεις
1) Διοχέτευση πίνακα ως όρισμα σε συνάρτηση
2) Η Σταθερά NULL
Ασκήσεις
Α. Πίνακες
Α.1) Εισαγωγή στους Πίνακες
Α.1.1) Μονοδιάστατοι Πίνακες
Α.1.2) Παράδειγμα
B. Δομές Επανάληψης
Β.1) Γενικά
Β.2) Η δομή for
Β.2.1) Συντακτικό της for
Β.2.2) Διάγραμμα Ροής Προγράμματος
Β.2.3) Παραδείγματα Εκτέλεσης
Β.3) Η δομή do…while
Β.3.1) Συντακτικό της do…while
Β.3.2) Διάγραμμα Ροής Προγράμματος
Β.3.3) Παραδείγματα Εκτέλεσης
Β.3.4) Αμυντικός Προγραμματισμός
Β.4) Η δομή while
Β.4.1) Συντακτικό της while
Β.4.2) Διάγραμμα Ροής Προγράμματος
Β.4.3) Παραδείγματα Εκτέλεσης
Β.4.4) Αμυντικός Προγραμματισμός
Β.5) Συμπεράσματα
Β.5.1) Προτεινόμενη χρήση των δομών επανάληψης
Β.5.2) Προσομοίωση της for από την while και τη do..while
Γ) Ασκήσεις
Γ.1) Άθροισμα και Γινόμενο Αριθμών
Γ.2) Εμφωλιασμένοι Βρόχοι: Εκτύπωση Αθροισμάτων
Γ.3) Εμφωλιασμένοι Βρόχοι: Εκτύπωση Παραλληλογράμμου
Γ.4) Εμφωλιασμένοι Βρόχοι: Εκτύπωση Τριγώνου
Γ.5) Άθροισμα Αριθμών με Χρήση Πίνακα
Γ.6) Γινόμενο Αριθμών με Χρήση Πίνακα
Γ.7) Ελάχιστος από N αριθμούς
Γ.8) Μέσος Όρος Ν αριθμών
Α. Έλεγχος Προγράμματος
1) Η εντολή άμεσης επανάληψης continue
2) Η εντολή διακοπής επανάληψης break
3) Η εντολή μεταφοράς ελέγχου προγράμματος goto
4) Η εντολή ελέγχου πολλαπλής συνθήκης switch
Β. Προγραμματιστικές Τεχνικές
1) Ατέρμονες Βρόχοι για την κατασκευή menu
2) Άμεση Έξοδος από το πρόγραμμα
3) Εκτέλεση Εντολών Συστήματος
Γ.Ασκήσεις
Α. Χαρακτήρες
1) Ο τύπος δεδομένων char
2) O πίνακας ASCII
3) Χρήση Μεταβλητών τύπου char
Β. Συμβολοσειρές
1) Τι είναι η συμβολοσειρά
2) Διάβασμα και Εκτύπωση Συμβολοσειράς
3) Οι συναρτήσεις gets και puts
4) Η βιβλιοθήκη string.h
Γ. Ασκήσεις
Διαφάνειες για την διδασκαλία της απλής και σύνθετης δομής επιλογής. Το εκπαιδευτικό υλικό δημιουργήθηκε για να υποστηρίξει το δεύτερο φύλλο εργασίας διδακτικού σεναρίου στο μάθημα Αρχές Προγραμματισμού της Β' Τάξης του νέου Επαγγελματικού Λυκείου.
Θεωρία
1) Στοιχεία ενός προγράμματος C
2) Η συνάρτηση main()
3) H οδηγία #include
4) Μεταβλητές
5) Εντολές
5.1) Η εντολή printf
5.2) Η εντολή scanf
6) Συναρτήσεις Χρήστη
6.1) Το πρωτότυπο μιας συνάρτησης
6.2) Το σώμα μιας συνάρτησης
6.3) Κλήση μιας συνάρτησης
7) Σχόλια Προγράμματος
Ασκήσεις
1) Ορισμός Συνδετικού Δένδρου
1.1) Διάσχιση Πρώτα Κατά Πλάτος
1.2) Διάσχιση Πρώτα Κατά Βάθος
2) Ελάχιστο Συνδετικό Δένδρο
2.1) Ορισμός Ελάχιστου Συνδετικού Δένδρου
2.2) Ο αλγόριθμος του Prim
3) Σύνοψη για τους Αλγόριθμους
3.1) Συντομότερα Μονοπάτια
3.2) Συνδετικό Δένδρο
3.3) Ελάχιστο Συνδετικό Δένδρο
A. Πρόσθετα Στοιχεία της Ψευδογλώσσας
1) Μαθηματικές Συναρτήσεις
2) Επιλογή με Πολλά Ενδεχόμενα
3) Τύποι Δεδομένων
4) Δείκτες και Δομές Δεδομένων
5) Η εντολή GOTO
6) Χειρισμός Εξαιρέσεων
Θεωρία και παραδείγματα σε SQL (μέρος 2).
Ερωτήματα Πολλαπλών Σχέσεων, Υποερωτήματα, IN, EXISTS, ALL, ANY, Συγκεντρωτικοί Υπολογισμοί, GROUP BY, HAVING
DATABASE: https://dl.dropboxusercontent.com/u/2690181/myBeersDB.zip
Θεωρία
1) Στοιχεία ενός προγράμματος C
2) Η συνάρτηση main()
3) H οδηγία #include
4) Μεταβλητές
5) Εντολές
5.1) Η εντολή printf
5.2) Η εντολή scanf
6) Συναρτήσεις Χρήστη
6.1) Το πρωτότυπο μιας συνάρτησης
6.2) Το σώμα μιας συνάρτησης
6.3) Κλήση μιας συνάρτησης
7) Σχόλια Προγράμματος
Ασκήσεις
1) Ορισμός Συνδετικού Δένδρου
1.1) Διάσχιση Πρώτα Κατά Πλάτος
1.2) Διάσχιση Πρώτα Κατά Βάθος
2) Ελάχιστο Συνδετικό Δένδρο
2.1) Ορισμός Ελάχιστου Συνδετικού Δένδρου
2.2) Ο αλγόριθμος του Prim
3) Σύνοψη για τους Αλγόριθμους
3.1) Συντομότερα Μονοπάτια
3.2) Συνδετικό Δένδρο
3.3) Ελάχιστο Συνδετικό Δένδρο
A. Πρόσθετα Στοιχεία της Ψευδογλώσσας
1) Μαθηματικές Συναρτήσεις
2) Επιλογή με Πολλά Ενδεχόμενα
3) Τύποι Δεδομένων
4) Δείκτες και Δομές Δεδομένων
5) Η εντολή GOTO
6) Χειρισμός Εξαιρέσεων
Θεωρία και παραδείγματα σε SQL (μέρος 2).
Ερωτήματα Πολλαπλών Σχέσεων, Υποερωτήματα, IN, EXISTS, ALL, ANY, Συγκεντρωτικοί Υπολογισμοί, GROUP BY, HAVING
DATABASE: https://dl.dropboxusercontent.com/u/2690181/myBeersDB.zip
Μια εισαγωγική και κατά βάση πρακτική προσέγγιση στο θέμα, με έμφαση στη γλώσσα SQL και τη σχεδίαση Βάσεων Δεδομένων. Το υλικό αυτό χρησιμοποιείται επικουρικά σε σχετικό εργαστηριακό μάθημα.
O apartamento está localizado em uma área residencial tranquila a 5 minutos da estação de trem, oferecendo fácil acesso ao transporte público. O imóvel está em boas condições e a um preço de €62.000,00. Informações sobre financiamento também estão disponíveis.
Servicio de Problemas Emocionales y de ConductaMarce Romero
Presentación para introducir a los estudiantes que asisten por primera vez al Servicio de Apoyo en Problemas Emocionales y de Conducta. En Escuela Regular
O Rational Unified Process (RUP) é um modelo de processo iterativo e incremental derivado da UML que possui quatro fases (Concepção, Elaboração, Construção e Transição) e é baseado em seis fundamentos como desenvolvimento iterativo, gerenciamento de requisitos, arquitetura baseada em componentes, modelagem visual, garantia de qualidade e controle de mudanças.
O documento apresenta um curso básico de AutoCAD 2000 para Windows, descrevendo: 1) O que é o AutoCAD e sua história; 2) Os equipamentos necessários para rodar o programa; 3) Uma introdução aos principais comandos, ferramentas e funcionalidades da interface gráfica do usuário.
O documento discute a Copa do Mundo no Brasil e como o evento pode se tornar uma força para reformas políticas e sociais urgentes. O arcebispo de Belo Horizonte pede que a população aproveite a Copa para cultivar uma nova consciência social e participação política através de gestos como assinar petições por reforma política.
O documento discute o nascimento da sociologia no século XIX como uma ciência que estudava as novas paisagens humanas e sociais surgindo da Revolução Industrial e do capitalismo, incluindo o surgimento da classe operária e dos conflitos de classe entre operários e burgueses na nova sociedade industrial.
Spectrum Tents has been supplying tents and shade structures commercially and domestically for over 17 years. They manufacture and supply a wide range of durable, efficient, and affordable tents, canopies, and fabrics. Their clients include large organizations like hotels, construction companies, and governments. Spectrum Tents also imports products from factories in the UAE and Pakistan and is a registered UN vendor. The company is poised for growth with new technology and facilities.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive functioning. Exercise causes chemical changes in the brain that may help boost mental well-being.
Este documento discute como criar um projeto interativo para escolas utilizando o editor gráfico Scribus. Ele instrui o leitor a instalar e explorar os recursos do Scribus para fazer uma capa e algumas páginas com ideias sobre como tornar a escola mais interativa, como visto em relatórios online. O documento também fornece links e exemplos para ajudar o leitor a começar no Scribus.
Nómadas de Hoy por Andrea Polo y Laura TorreMaría Madrazo
El documento describe diferentes grupos de nómadas que habitan en diversas regiones del mundo, incluyendo a los Drokpa y Khampas del Himalaya, los Bororo del Sahel, los Pigmeos de África central, los Samburu y Tuareg del norte de África, los nómadas mongoles de Asia central, los Bushmen y Surma de África, y los Penan de Borneo. Estos grupos se caracterizan por su estilo de vida nómada basado en el pastoreo, su pequeño tamaño físico en algunos casos, y
O Procon realizou uma operação para vistoriar cerca de 50 estabelecimentos comerciais em Vicente de Carvalho, visando coibir a venda irregular de artigos juninos. Apenas três comércios foram autuados por falta de preços ou imposição de limite de crédito. O Ministério Público solicitou à Prefeitura uma área para construir sua própria sede em Guarujá, a fim de melhor atender a população.
Γ6.1&2 Βασικά Δομικά Συστατικά Στοιχεία και Κύρια Αντικείμενα μιας Βάσης Δεδομένων
Να κατανοούμε τι είναι μια βάση δεδομένων
Να κατανοούμε ότι η πληροφορία είναι το επεξεργασμένο αποτέλεσμα δεδομένων
Να γνωρίζουμε μερικές κοινές χρήσεις μεγάλης κλίμακας βάσεων δεδομένων, όπως: κοινωνικά δίκτυα, συστήματα κρατήσεων, κυβερνητικά μητρώα, εγγραφές τραπεζικών λογαριασμών, πληροφορίες ασθενών νοσοκομείων
Να κατανοούμε τον τρόπο που είναι οργανωμένη μια βάση δεδομένων όσον αφορά τους πίνακες, τις εγγραφές και τα πεδία
Να ανοίγουμε (Open) και να κλείνουμε (Close) μια βάση δεδομένων
Να χρησιμοποιούμε την εναλλαγή προβολών του πίνακα (Design View/Datasheet view)
Να αναφέρουν τα κύρια δομικά στοιχεία μιας βάσης δεδομένων
Να κατανοούμε ότι όλα τα δεδομένα μιας βάσης αποθηκεύονται σε πίνακες
Να κατανοούμε την αυτόματη αποθήκευση αλλαγών σε μια βάση δεδομένων
Να καταχωρούμε εγγραφές στον πίνακα.
Να κατανοούμε ότι κάθε πίνακας σε μια βάση δεδομένων πρέπει να περιέχει δεδομένα σχετικά με έναν μοναδικό τύπο αντικειμένου
Να κατανοούμε ότι κάθε εγγραφή σε μια βάση δεδομένων πρέπει να περιέχει δεδομένα μόνο για ένα μοναδικό αντικείμενο
Να κατανοούμε ότι κάθε πεδίο ενός πίνακα πρέπει να περιέχει μόνο ένα στοιχείο δεδομένων.
Εισαγωγή καινοτομιών στον Πανελλήνιο Διαγωνισμό Εκπαιδευτικής Ρομποτικής | Αν...WROHellas
Εισαγωγή καινοτομιών στον Πανελλήνιο Διαγωνισμό Εκπαιδευτικής Ρομποτικής | Αναστάσιος Λαδιάς
Στο πλαίσιο του WRO Teacher Camp 2018 που προσφέρθηκε δωρεάν σε εκπαιδευτικούς όλων των βαθμίδων από τον WRO Hellas την περίοδο 7-9 Σεπτεμβρίου 2018
This presentation is a 30-minute introduction to NoSQL databases aimed at senior high school students. Participation in this lesson will help students understand the needs that led to the development of NoSQL databases as well as the concepts and models that accompany them.
We will cover:
- Big Data & Scaling
- NoSQL characteristics
- NoSQL Database types (key-value,document,column,graph)
- Applications involving NoSQL databases (e.g. fleet management)
Γ6.1 Εισαγωγή στις Βάσεις Δεδομένων
Να ορίζουμε τι είναι μια βάση δεδομένων
Να διακρίνουμε τα είδη των βάσεων δεδομένων (έντυπη/ηλεκτρονική)
Να διακρίνουμε και να αναφέρουμε τα πλεονεκτήματα και τα μειονεκτήματα μιας βάσης δεδομένων
Να αναφέρουμε βάσεις δεδομένων από την καθημερινή ζωή
Να αναφέρουμε παραδείγματα προγραμμάτων διαχείρισης μηχανογραφημένων βάσεων δεδομένων.
2. Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορική ΤΕ / ΤΕΙ Θεσσαλίας ‐ 2 ‐ Βάσεις Δεδομένων Ι
Τι είναι τα ευρετήρια;
Ευρετήριο/Index: δομή δεδομένων που χρησιμοποιείται για την
επιτάχυνση της πρόσβασης στις πλειάδες μιας σχέσης, με βάση τις τιμές
κάποιων γνωρισμάτων.
Η δομή μπορεί να είναι hash table ή ένα B-Tree (το συνηθέστερο σε ΣΔΒΔ)
παράδειγμα B-Tree απεικονίζεται στο εξώφυλλο – 1ο
slide
Ο ρόλος ενός ευρετηρίου είναι να επιτρέπει γρήγορη αναζήτηση καθώς η
υπολογιστική πολυπλοκότητα αναζήτησης σε B-Tree είναι πολύ μικρότερη
της κλασικής (σειριακής) αναζήτησης σε πίνακα.
Κατά προσέγγιση (καθώς ξεφεύγει του παρόντος), στην κλασική αναζήτηση, οι έλεγχοι που
απαιτούνται είναι ανάλογοι του μεγέθους του πίνακα στον οποίο ψάχνουμε.
Στην αναζήτηση σε B-Tree είναι ανάλογη του λογαρίθμου του μεγέθους του πίνακα.
Πρόχειρο παράδειγμα:
Σε πίνακα 1 εκατομμυρίου εγγραφών, μια τυπική
αναζήτηση, χωρίς ευρετήριο, απαιτεί κατά μέσο όρο
500 χιλιάδες ελέγχους (το μισό του πλήθους των εγγραφών).
Με ευρετήριο, στον ίδιο πίνακα απαιτούνται περίπου
log(106
) = 6 έλεγχοι. Άρα ή διαφορά είναι μάλλον χαώδης!
3. Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορική ΤΕ / ΤΕΙ Θεσσαλίας ‐ 3 ‐ Βάσεις Δεδομένων Ι
Δήλωση Ευρετηρίου
Δεν υπάρχει τυποποίηση! Εξαρτάται από το ΣΔΒΔ. Σε MySQL γίνεται ως εξής:
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
[index_type]
ON table_name (index_col_name,...)
[index_type]
όπου: index_col_name: col_name [(length)] [ASC | DESC]
και index_type: USING {BTREE | HASH}
Συνήθεις τύποι ευρετηρίου
index: απλό ευρετήριο – επιτρέπονται πολλαπλότητες (default τύπος)
unique: σαν το προηγούμενο αλλά δεν επιτρέπει την ίδια τιμή δεύτερη φορά
fulltext: επιτρέπει πολύπλοκη αναζήτηση σε κείμενα
μόνο σε πεδία με CHAR ή VARCHAR ή TEXT τύπο δεδομένων
υπάρχει τόσο σε MyISAM όσο και σε InnoDB πίνακες (το δεύτερο σε σχετικά νέες εκδόσεις MySQL)
Περισσότερα: http://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html
Τυπικά παραδείγματα δήλωσης ευρετηρίου (μετά τη δημιουργία του πίνακα):
CREATE INDEX Beer_Index ON Beers(manf);
CREATE UNIQUE INDEX SellIndex ON Sells(bar DESC, beer) USING BTREE;
οι αγκύλες δηλώνουν
προαιρετικά στοιχεία!
τρόπος υλοποίησης
4. Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορική ΤΕ / ΤΕΙ Θεσσαλίας ‐ 4 ‐ Βάσεις Δεδομένων Ι
Χρήση Ευρετηρίου (1/2)
Δοθείσας μιας τιμής v, το ευρετήριο επιστρέφει μόνο τις πλειάδες για τις οποίες το v
υπάρχει μέσα στα γνωρίσματα του ευρετηρίου.
Παράδειγμα (με τα Beer_Index και SellIndex του προηγούμενου slide):
Βρες τις τιμές των μπυρών που κατασκευάζονται από τον Anheuser-Busch και
πωλούνται από το Club 175.
SELECT price FROM Beers, Sells
WHERE name=beer AND manf='Anheuser-Busch' AND bar='Club 175';
μέσω του Beer_Index θα βρεθούν οι μπύρες που κατασκευάζει ο Anheuser-Busch
μέσω του SellIndex θα βρεθούν οι τιμές των παραπάνω μπυρών για το bar Club 175
Βλέπετε ότι δεν αλλάζει κάτι στο ερώτημα σε σχέση με τα ευρετήρια!
Σε τυπικά σενάρια, η χρήση των ευρετηρίων είναι διάφανη (transparent), δηλαδή δεν
κάνουμε κάτι επιπλέον – το ΣΔΒΔ τα χρησιμοποιεί αυτόματα!
Ένα σημαντικό ζήτημα στη δημιουργία μιας γρήγορης database είναι το τι ευρετήριο
να φτιάξουμε. Ο λόγος είναι η ύπαρξη αντικρουόμενων καταστάσεων (trade off):
ΥΠΕΡ: επιταχύνει την αναζήτηση στα ερωτήματα που το χρησιμοποιούν
ΚΑΤΑ: καθυστερεί όλες τις λειτουργίες INSERT και UPDATE του πίνακα
στον οποίο ανήκει γιατί πρέπει επιπλέον να ενημερωθεί και το ευρετήριο!
5. Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορική ΤΕ / ΤΕΙ Θεσσαλίας ‐ 5 ‐ Βάσεις Δεδομένων Ι
Χρήση Ευρετηρίου (2/2)
Έστω ότι αυτό που κάνουμε στην myBeersDB database είναι:
Εισαγωγή νέων εγγραφώ σε πίνακα, στο 10% των περιπτώσεων.
Εύρεση τιμής για δεδομένη μπύρα σε δεδομένο bar, στο 90% των περιπτώσεων.
και επιπλέον έχουμε τα ευρετήρια του slide 3:
CREATE INDEX Beer_Index ON Beers(manf);
CREATE UNIQUE INDEX SellIndex ON Sells(bar DESC, beer) USING BTREE;
Είναι ΟΚ η επιλογή ευρετηρίων που κάναμε???
Απάντηση:
Το ευρετήριο SellIndex στον πίνακα Sells(bar,beer,price) είναι πολύ
σωστά ορισμένο γιατί θα επιταχύνει το 90% της δραστηριότητάς μας με τον πίνακα.
Το ευρετήριο Beer_Index στον πίνακα Beers(manf) δεν εξυπηρετεί σε κάτι
και κακώς το φτιάξαμε.
Άλλη Χρήση: Ένα ευρετήριο UNIQUE σε κάποιο γνώρισμα (π.χ. email) μπορεί να
χρησιμοποιηθεί για να εξασφαλιστεί (σε επίπεδο RDBMS) ότι δεν θα υπάρξει 2η
ίδια
τιμή στο γνώρισμα. Βέβαια, θα πρέπει να ληφθούν υπόψη και οι λοιποί παράγοντες.
ΑΡΑ, τα ευρετήρια πρέπει να χρησιμοποιούνται με φειδώ! Τα βάζουμε εκεί που
ξέρουμε ότι θα ωφελήσουν και δεν είναι πάντα απαραίτητο να φτιαχτούν εξ αρχής.
...δεν είναι όμως εύκολο να βρούμε τα σωστά ευρετήρια σε μια σύνθετη database!
6. Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορική ΤΕ / ΤΕΙ Θεσσαλίας ‐ 6 ‐ Βάσεις Δεδομένων Ι
Ρύθμιση Ευρετηρίων σε ΒΔ
Σημαντικό ερευνητικό πεδίο, καθώς η ρύθμιση "με το χέρι" είναι
εξαιρετικά επίπονη.
Κατάλληλα λογισμικά (tuning advisors) υποβοηθούν στον
ορισμό ευρετηρίων!
Πώς λειτουργεί ένας tuning advisor;
δίνουμε στον advisor ένα μεγάλο σετ ερωτήσεων (query load)
μπορεί να προέρχεται από καταγραφή των queries που τρέχουν στο
σύστημα σε τυπική χρήση
μπορεί να είναι ερωτήματα που παρέχει ο σχεδιαστής της database
o advisor δημιουργεί υποψήφια ευρετήρια (candidate indexes) και
ελέγχει την απόδοσή τους με βάση το query load
κάθε ερώτημα εκτελείται στη λογική ότι υπάρχει μόνο το υπό εξέταση ευρετήριο
καταγράφεται ο μέσος χρόνος (βελτίωσης ή επιδείνωσης) που απαιτείται για να τρέξουν
όλα τα ερωτήματα
Προφανώς στο τέλος προτιμούνται τα ευρετήρια που βελτιώνουν τις επιδόσεις!
Το καλό με τα ευρετήρια είναι ότι μπορεί να οριστούν και εκ των υστέρων, όταν
δηλαδή διαπιστωθεί ανάγκη βελτίωσης των επιδόσεων μιας database.
7. Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορική ΤΕ / ΤΕΙ Θεσσαλίας ‐ 7 ‐ Βάσεις Δεδομένων Ι
Ευρετήρια σε MySQL Workbench
Έχει ήδη αναφερθεί κάτι σχετικό στo πακέτο 02-... (slide 22). Για να τα ξαναδούμε...
Στην καρτέλα Columns στο Workbench τα checkboxes UN ορίζουν ευρετήριο στο
εκάστοτε γνώρισμα, που όμως είναι τύπου UNIQUE, δηλαδή δεν θα επιτρέπονται ίδιες
τιμές σε αυτό το γνώρισμα, σε διαφορετικές πλειάδες.
π.χ. αν το πεδίο είναι για καταχώριση του επώνυμου, δεν θα επιτρέπονται ίδια επώνυμα!
Τα επιπλέον είδη ευρετηρίου
που αναφέραμε υποστηρίζο-
νται στην καρτέλα Indexes
αλλά χειροκίνητα.
Στην διπλανή εικόνα ορίζεται
ένα απλό ευρετήριο (τύπου
INDEX) στο πεδίο stuSurname,
με όνομα stuSurname_INDEX,
και με ταξινόμηση ASC.
8. Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορική ΤΕ / ΤΕΙ Θεσσαλίας ‐ 8 ‐ Βάσεις Δεδομένων Ι
Όψεις / Views
Μια όψη (view) είναι μια σχέση (relation) που ορίζεται δυναμικά με βάση:
άλλες πρωτογενείς σχέσεις (πίνακες) (ονομάζονται βασικοί πίνακες – base tables)
άλλες όψεις
Υπάρχουν δύο είδη:
Εικονικές Όψεις (Virtual Views)
Δεν είναι αποθηκευμένες στην database! Είναι απλά
queries που όταν εκτελεστούν δημιουργούν μια σχέση.
Πραγματικές Όψεις (Materialized Views)
Πρόκειται για πραγματικές σχέσεις, δημιουργημένες και αποθηκευμένες!
Ο MySQL Server ΔΕΝ υποστηρίζει materialized views!
Υπάρχουν (στην βιβλιογραφία και στο web) διάφορες προσεγγίσεις για "πλάγια"
υποστήριξη τέτοιων όψεων. Για παράδειγμα: http://www.materialized.info/
Δήλωση Όψης
Φτιάχνουμε όψεις με τον ακόλουθο SQL κώδικα:
CREATE [MATERIALIZED] VIEW <name> AS <query>;
αν δεν ζητήσουμε ρητά materialized view, θα δημιουργηθεί virtual που είναι το default
<name> είναι το όνομα που δίνουμε και <query> το SQL ερώτημα που υλοποιεί την όψη.
9. Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορική ΤΕ / ΤΕΙ Θεσσαλίας ‐ 9 ‐ Βάσεις Δεδομένων Ι
Παραδείγματα
Ορισμός Όψης:
Να οριστεί η όψη CanDrink(drinker,beer) που "περιέχει" τα ζευγάρια drinker-beer
για τα οποία ο drinker συχνάζει τουλάχιστον σε ένα bar που σερβίρει την μπύρα.
CREATE VIEW CanDrink AS
SELECT drinker, beer
FROM Frequents, Sells
WHERE Frequents.bar = Sells.bar;
Τρέχοντας αυτόν τον κώδικα στο Workbench, θα φτιαχτεί μια όψη με όνομα CanDrink.
Χρήση Όψης
Για να χρησιμοποιήσουμε μια όψη, απλά την αντιμετωπίζουμε σαν βασικό πίνακα!
Υπάρχει περιορισμένη δυνατότητα εισαγωγής/τροποποίησης σε δεδομένα όψεων. Μόνο αν
έχει νόημα η ενέργεια ως εισαγωγή/τροποποίηση σε έναν πίνακα. Αν εμπλέκονται πολλοί
πίνακες στην όψη, τότε συνήθως δεν είναι εφικτό παρά μόνο με πλάγιους τρόπους (π.χ.
μηχανισμούς trigger – θα το δείτε σε Βάσεις Δεδομένων ΙΙ)
SELECT beer FROM CanDrink
WHERE drinker = 'Mike';
10. Φ. Κόκκορας / Τμ. Μηχανικών Πληροφορική ΤΕ / ΤΕΙ Θεσσαλίας ‐ 10 ‐ Βάσεις Δεδομένων Ι
Πραγματικές Όψεις (Materialized Views)
Πρόβλημα: κάθε φορά που μεταβάλλεται κάποιος βασικός πίνακας που
συμμετέχει στην όψη, η materialized view πρέπει να αλλάξει επίσης.
Σε μεγάλο όγκο δεδομένων δεν είναι υπολογιστικά υποφερτό να γίνεται
επαναϋπολογισμός της όψης σε κάθε μεταβολή βασικού πίνακα!
Λύση: Κάνουμε περιοδική επανακατασκευή (reconstruction) της materialized
όψης η οποία προφανώς σε άλλο χρονικό σημείο θα θεωρείται ότι δεν
ανταποκρίνεται πλήρως στην πραγματικότητα (out of date). Το αν η λύση μας
καλύπτει ή όχι είναι θέμα της εφαρμογής και πρέπει να εξεταστεί.
Παράδειγμα
Η αλυσίδα καταστημάτων Walmart, αποθηκεύει
κάθε πώληση, σε κάθε υποκατάστημα, σε μια database.
Κάθε βράδυ, οι ημερήσιες καταχωρήσεις πωλήσεων χρησιμοποιούνται για να
υπολογιστούν materialized views συγκεντρωτικών μεγεθών (π.χ. συνολικές
πωλήσεις) που αποθηκεύονται σε ειδικές databases (data warehouses).
Τα data warehouses χρησιμοποιούνται από αναλυτές για να προβλέψουν τάσεις της
αγοράς, να παράγουν συγκεντρωτικά reports, κτλ.