Εμφάνιση αναρτήσεων με ετικέτα ΣΥΣΤ. ΔΙΑΧ. ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ. Εμφάνιση όλων των αναρτήσεων
Εμφάνιση αναρτήσεων με ετικέτα ΣΥΣΤ. ΔΙΑΧ. ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ. Εμφάνιση όλων των αναρτήσεων

Τρίτη 18 Απριλίου 2023

Αλλαγή στοιχείων μέσω φόρμας

Υπενθυμίζεται ότι αν για παράδειγμα θέλουμε να αλλάξουμε το περιεχόμενο ενός πεδίου, για παράδειγμα το επίθετο Georkakopoylos σε Georgakopoulos, αν γνωρίζουμε τον αριθμό μητρώου, θα γράψουμε:

update student set surname='Georgakopoulos' where a_m= 5;

Με βάση, λοιπόν, την προηγούμενη άσκηση:


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

Αναζήτηση σε Βάση δεδομένων μέσω Φόρμας

Εκτελώντας τον παρακάτω κώδικα, δίνουμε ένα επίθετο μέσω φόρμας και μας επιστρέφει το όνομα, το επίθετο και τον Αριθμό Μητρώου του μαθητή
<html>
<body>

<form>
  
    <input type="text" name="txt1"/>

    <div><br><input type="submit" value="OK"></div><br>
</form>


<?php
if (!empty($_GET['txt1']) ) {
    $txt1 = $_GET['txt1'];
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "school";

// Δημιουργία σύνδεσης με βάση school στο server localhost ως root user.
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT a_m, name, surname FROM student where surname='$txt1'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "<br> Αριθμός Μητρώου: ". $row["a_m"]. " - Όνομα: ". $row["name"]. "  Επίθετο:  " . $row["surname"] . "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();
}
?>

</body>
</html>

Ασκήσεις

1. Φτιάξτε μια φόρμα που να δέχεται 'Υ' για προφορικά και 'Ν' για γραπτά και βρείτε τους μαθητές (Όνομα, Επίθετο) που εξετάζονται προφορικά ή γραπτά, ανάλογα τι δίνει ο χρήστης..
2. Βρείτε τους μαθητές (Όνομα, Επίθετο, Ημ. Γεννησης) που είναι ενήλικοι, βάζοντας ημερομηνία γέννησης μέσω φόρμας
3. Βρείτε τους μαθητές που κατοικούν  στην Αθήνα ( (Όνομα, Επίθετο, Διεύθυνση), βάζοντας στην φόρματην πόλη
4. Βρείτε τους μαθητές (Όνομα, Επίθετο) με όλα τα τηλέφωνά τους, βάζοντας όνομα και επίθετο στη φόρμα.
6.  Βρείτε τους μαθητές (Όνομα, Επίθετο, Τάξη) ανά τάξη, βάζοντας την  τάξη στη φόρμα.
7. Βρείτε τους μαθητές  (Όνομα, Επίθετο, Τμήμα) ανά τμήμα, βάζοντας το Τμήμα στη φόρμα.
8. Βρείτε το σύνολο των απουσιών όλων των μαθητών (Όνομα, Επίθετο,Απουσίες), ομαδοποιημένων κατά το Επίθετο, βάζοντας το επίθετο στη φόρμα
9. Βρείτε το μέσο όρο των βαθμών των μαθητών  (Όνομα, Επίθετο,Μέσος Όρος) ομαδοποιημένων κατά το Επίθετο, βάζοντας το επίθετο στη φόρμα.

Σύνδεση σε βάση δεδομένων μέσω php

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

<!DOCTYPE html>
<html>


<body>

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "school";

// Δημιουργία σύνδεσης με βάση school στο server localhost ως root user.
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT a_m, name, surname FROM student";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "<br> Αριθμός Μητρώου: ". $row["a_m"]. " - Όνομα: ". $row["name"]. "  Επίθετο:  " . $row["surname"] . "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();
?>

</body>
</html>

Στη μεταβλητή $sql μπορούμε να βάλουμε οποιοδήποτε ερώτημα (query) sql για αναζήτηση, ενημέρωση, ή διαγραφή.

Ασκήσεις

1. Βρείτε τους μαθητές (Όνομα, Επίθετο) που εξετάζονται προφορικά.
2. Βρείτε τους μαθητές (Όνομα, Επίθετο, Ημ. Γεννησης) που είναι ενήλικοι
3. Βρείτε τους μαθητές που κατοικούν  στην Αθήνα ( (Όνομα, Επίθετο, Διεύθυνση)
4. Βρείτε τους μαθητές (Όνομα, Επίθετο) με όλα τα τηλέφωνά τους.
5. Βρείτε τους μαθητές που το όνομά τους αρχίζει από Π
6.  Βρείτε τους μαθητές (Όνομα, Επίθετο, Τάξη) που ανήκουν στη Β τάξη
7. Βρείτε τους μαθητές  (Όνομα, Επίθετο, Τμήμα) που ανήκουν στο Γ1
8. Βρείτε το σύνολο των απουσιών όλων των μαθητών (Όνομα, Επίθετο,Απουσίες), ομαδοποιημένων κατά το Επίθετο.
9. Βρείτε το μέσο όρο των βαθμών των μαθητών  (Όνομα, Επίθετο,Μέσος Όρος) ομαδοποιημένων κατά το Επίθετο.

Κυριακή 7 Απριλίου 2019

Επαναληπτικές Ασκήσεις για Βάσεις Δεδομένων

Ασκήσεις





1. Δημιουργήστε ένα ερώτημα που θα δίνει τη μικρότερη ηλικία.Εμφανίστε τα ονοματεπώνυμα που την έχουν

2. Δημιουργήστε ένα ερώτημα που θα δίνει τη μεγαλύτερη ηλικία.Εμφανίστε τα ονοματεπώνυμα που την έχουν

3. Βρείτε το πλήθος των μαθητών του σχολείου.

4. Ομαδοποιήστε κατά ηλικία και βρείτε το πλήθος των μαθητών   που αντιστοιχεί σε κάθε ηλικία

5. Ομαδοποιήστε κατά Επίθετο και βρείτε το πλήθος των μαθητών που το επίθετό τους είναι π.χ. ΝΙΚΟΛΟΠΟΥΛΟΣ

6. Βρείτε πόσοι και ποιοι μαθητές εξετάζοντα προφορικά.

7. Βρείτε πόσοι και ποιοι μαθητές είναι ενήλικοι.

8. Βρείτε πόσοι και ποιοι  μαθητές γεννήθηκαν μετά την 01/01/2003.

9. Παρουσιάστε τα ονοματεπώνυμα των μαθητών κατά αύξουσα σειρά ημερομηνίας γέννησης

10. Παρουσιάστε τα ονοματεπώνυμα των μαθητών κατά φθίνουσα σειρά επιθέτου.

Ασκήσεις σε πολλούς πίνακες


1. Και τώρα δημιουργήστε ένα νέο ερώτημα που θα σας εμφανίζει όλους τους μαθητές, ταξινομημένους ανά Τάξη.

2. Βρείτε το πλήθος των μαθητών ανά τάξη

3. Βρείτε  όλους τους μαθητές , ομαδοποιημένους ανά τάξη , που γεννήθηκαν μετά την 01/01/2002

4. Βρείτε τους μαθητές της Α που το επώνυμό τους αρχίζει από Κ

5. Βρείτε τους μαθητές της Β που η ηλικία τους είναι μεταξύ 14 και 16 ετών

6. Βρείτε τους μαθητές της Γ που εξετάζονται προφορικά

7. Βρείτε τη μεγαλύτερη ηλικία του μαθητή της Α τάξης

8 Βρείτε  πόσοι μαθητές της Β μένουν στην Ερυθραία

9. Βρείτε  ποιοι μαθητές της Γ είναι ενήλικοι. 


10. Βρείτε το σύνολο των απουσιών (Sum) ενός συγκεκριμένου μαθητή

12.  Βρείτε τις συνολικές απουσίες του κάθε μαθητή. 

Σάββατο 23 Φεβρουαρίου 2019

Σχέσεις πινάκων στη MySQL

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

Αυτό στη MySQL υλοποιείται με την παρακάτω εντολή (εφόσον οι πίνακες έχουν ήδη δημιουργηθεί):

ALTER TABLE student
ADD FOREIGN KEY (class_id) REFERENCES class(class_id);  



Εναλλακτικά, θα μπορούσαμε κατά τη δημιουργία του πίνακα (π.χ. marks (βαθμοί)):


CREATE TABLE marks(
    a_m int NOT NULL,
   lesson_id NOT NULL,
    mark int,
 
   FOREIGN KEY (a_m) REFERENCES student(a_m)
);  


Αν θέλουμε να υπάρχει συνέπεια σε όλους τους πίνακες που περιέχουν το κλειδί, όταν γίνονται αλλαγές ή διαφραφές, προσθέτουμε λίγο πριν το τέλος:
 
 ON DELETE CASCADE ON UPDATE CASCADE;

Συνεχίστε και γράψτε όλες τις σχέσεις των πινάκων της Βάσης school.

Όλα αυτά μπορούν να γίνουν και από το γραφικό περιβάλλον phpadmin στη Σχεδίαση, όπως τα κάναμε και στο Access.

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

SELECT name, surname, class_name FROM student, class WHERE class_name='A' and student.class_id=class.class_id ;

Βλέπουμε ότι επιλέγουμε στοιχεία από τους πίνακες class και student και πέρα από το κριτήριο το όνομα της τάξης να είναι 'Α',  ζητούμε τα κοινά τους στοιχεία (student.class_id=class.class_id ;
).

Ας υποθέσουμε ότι θέλουμε όλα τα ονοματεπώνυμα μαθητών, ομαδοποιημένα ανά τάξη:

SELECT name, surname, class_name FROM student, class where student.class_id=class.class_id ORDER BY class_name;

Ας υποθέσουμε ότι θέλουμε το πλήθος των μαθητών ανά τμήμα:

SELECT count(*), classroom_name FROM student, classroom where student.classroom_id=classroom.classroom_id group by classroom_name

Ασκήσεις


1. Και τώρα δημιουργήστε ένα νέο ερώτημα που θα σας εμφανίζει όλους τους μαθητές, ταξινομημένους ανά Τάξη.

2. Βρείτε το πλήθος των μαθητών ανά τάξη

3. Βρείτε  όλους τους μαθητές , ομαδοποιημένους ανά τάξη , που γεννήθηκαν μετά την 01/01/2002

4. Βρείτε τους μαθητές της Α που το επώνυμό τους αρχίζει από Κ

5. Βρείτε τους μαθητές της Β που η ηλικία τους είναι μεταξύ 14 και 16 ετών

6. Βρείτε τους μαθητές της Γ που εξετάζονται προφορικά

7. Βρείτε τη μεγαλύτερη ηλικία του μαθητή της Α τάξης

8 Βρείτε  πόσοι μαθητές της Β μένουν στην Ερυθραία

9. Βρείτε  ποιοι μαθητές της Γ είναι ενήλικοι. 


10. Βρείτε το σύνολο των απουσιών (Sum) ενός συγκεκριμένου μαθητή

12.  Βρείτε τις συνολικές απουσίες του κάθε μαθητή.

Σάββατο 9 Φεβρουαρίου 2019

Εισαγωγή δεδομένων στους πίνακες

Ας υποθέσουμε ότι θέλουμε να εισάγουμε δεδομένα στον πίνακα STUDENT.
Αυτό θα γίνει με την εντολή INSERT:

insert into student value
('Nikolaos',
'Petrou',
'Filippos',
'Maria',
'Naxoy 12 ilioupoli',
'Athina',
 '6978545974',
 "2001-3-14",
 'Y',
 '1',
 '1',
 NULL);

Οι τιμές δίνονται με βάση τη σειρά των πεδίων. Αν δε θυμάστε τη σειρά, πληκτρολογήστε:
DESCRIBE student και θα τη δείτε:



Συμπληρώστε όλα τα στοιχεία όλων των πινάκων, όπως ήταν στη βάση της ACCESS. Χρησιμοποιήστε Notepad++ για να μπορείτε να κάνετε διορθώσεις.

Δημιουργία Ερωτημάτων


 
Αν θέλετε να δείτε τα περιεχόμενα ενός πίνακα, γράψτε:

SELECT * FROM student;

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

 Select * from student where surname='Petrou';

select * from student where surname like 'P%';

Αν θέλουμε πλήθος :

 Select count(*) from student where surname='Petrou';

Ο μπαλαντέρ για πολλούς χαρακτήρες είναι το %, ενώ για ένα το _

select * from student where surname like 'P%';  

select * from student where surname like 'P_t_o_';

Για το μικρότερο :
SELECT    MIN(πεδίο) FROM     πίνακας;
Max(πεδίο)  για μεγαλύτερο 
SUM το άθροισμα
AVG ο μέσος όρος
ORDER BY η ταξινόμηση κατά (asc = κατ' αύξουσα σειρά, desc= κατά φθίνουσα σειρά).
GROUP BY  ομαδοποίηση κατά.


Αν θέλουμε να αλλάξουμε κάποιο πεδίο (ή περισσότερα), για παράδειγμα ο Πέτρου από τάξη Α να πάει στη Β,
γράφουμε:

UPDATE student SET CLASS_ID=1 WHERE surname ='Petrou' and  name='Nikolaos';

Αλλάζοντας τα κριτήρια μπορούμε να αλλάξουμε πολλές εγγραφές.

Αν επιθυμούμε να διαγράψουμε μία ή περισσότερες γραμμές:

Delete from student where surname ='Petrou' and  name='Nikos';

Ασκήσεις





1. Δημιουργήστε ένα ερώτημα που θα δίνει τη μικρότερη ηλικία.Εμφανίστε τα ονοματεπώνυμα που την έχουν

2. Δημιουργήστε ένα ερώτημα που θα δίνει τη μεγαλύτερη ηλικία.Εμφανίστε τα ονοματεπώνυμα που την έχουν

3. Βρείτε το πλήθος των μαθητών του σχολείου.

4. Ομαδοποιήστε κατά ηλικία και βρείτε το πλήθος των μαθητών   που αντιστοιχεί σε κάθε ηλικία

5. Ομαδοποιήστε κατά Επίθετο και βρείτε το πλήθος των μαθητών που το επίθετό τους είναι π.χ. ΝΙΚΟΛΟΠΟΥΛΟΣ

6. Βρείτε πόσοι και ποιοι μαθητές εξετάζοντα προφορικά.

7. Βρείτε πόσοι και ποιοι μαθητές είναι ενήλικοι.

8. Βρείτε πόσοι και ποιοι  μαθητές γεννήθηκαν μετά την 01/01/2003.

9. Παρουσιάστε τα ονοματεπώνυμα των μαθητών κατά αύξουσα σειρά ημερομηνίας γέννησης

10. Παρουσιάστε τα ονοματεπώνυμα των μαθητών κατά φθίνουσα σειρά επιθέτου.

Παρασκευή 1 Φεβρουαρίου 2019

Δημιουργία Βάσης Δεδομένων και πινάκων στη MySQL

Αφού ξεκινήσουμε το XAMPP, και από εκεί τη MySQL, θα πάμε στην κονσόλα της MySQL, ή ανοίγουμε το Phpadmin, και πάμε εκεί που λέει Κώδικας SQL.
Εκεί θα βάλουμε το username/password του root user.

Κατόπιν, θα δούμε ποιες βάσεις δεδομένων υπάρχουν, πληκτρολογώντας :

SHOW DATABASES;

(στο phpadmin φαίνονται αριστερά)
Θέλουμε να φτιάξουμε τη βάση δεδομένων με όνομα School:

CREATE DATABASE school ;

Θυμηθείτε τη βάση δεδομένων "Σχολείο" στην Access. Αυτήν θέλουμε να μεταφέρουμε στη MySQL.

Πρώτος πίνακας που πρέπει να δημιουργηθεί είναι ο Student.
Τα πεδία του ήταν:





Στη MySQL θα δημιουργηθούν ως εξής:

CREATE TABLE student ( name VARCHAR(20) NOT NULL,
surname VARCHAR(30) NOT NULL,
father_name VARCHAR(20)  NULL,
mother_name VARCHAR(20) NULL,
address VARCHAR(60) NOT NULL,
city VARCHAR(40) NOT NULL,
phone VARCHAR(20) NOT NULL,
birthdate DATE NOT NULL,
oral ENUM('Y','N') NOT NULL,
class_id
INT UNSIGNED  NOT NULL,
classroom_id
INT UNSIGNED NOT NULL,
 a_m INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY);


VARCHAR σημαίνει variable character, δηλαδή χαρακτήρες με μεταβλητό μήκος, μέγιστο όσο λέει η παρένθεση.
NULL μπορεί να είναι κενό το πεδίο. ΝOT NULL  το πεδίο δεν επιτρέπεται να είναι κενό.

ENUM, είναι η αριθμημένη λίστα (Enumerated)  και μπορεί να πάρει μόνο τις συγκεκριμένες τιμές που γράφουμε ('Υ', 'Ν'). Αυτό το Access το έλεγε "Οδηγός Αναζήτησης".

ΙΝΤ είναι ακέραιος, UNSIGNED σημαίνει χωρίς πρόσημο, AUTO_INCREMENT είναι η γνωστή αυτόματη αρίθμηση και PRIMARY KEY= πρωτεύον κλειδί.

To birthdate μπήκε ως DATE (ΥΥΥΥ-ΜΜ-DD). Θα μπορούσε να μπει  και ως DATETIME ή ως YEAR, αναλόγως τι θέλουμε.

Αν γνωρίζουμε ακριβώς το αναμενόμενο μήκος της λέξης ενός πεδίου, για παράδειγμα αν περιέχει μόνο ΝΑΙ ή ΌΧΙ, τότε μπορούμε να βάλουμε CHAR(3).

Δεν βάλαμε την Ηλικία ως πεδίο.

Βρείτε περισσότερα για τα δεδομένα της MySQL εδώ 
 Με το show tables; βλέπουμε  όλους τους πίνακες της βάσης και ελέγχουμε αν έγινε ο student.
 Με το drop table  διαγράφουμε ένα πίνακα  του οποίου δίνουμε το όνομα.
Αν θέλουμε να ελέγξουμε και τα πεδία, πληκτρολογούμε: describe student ;


Συνεχίστε και δημιουργήστε και τους υπόλοιπους πίνακες της Βάσης "Σχολείο" της ACCESS, στη βάση "School" της  MySQL.
Προσοχή το σύνθετο κλειδί δηλώνεται ως εξής:
 Create table marks ( a_m int unsigned, lesson_id int unsigned, mark real, PRIMARY KEY(a_m, lesson_id));

Κυριακή 27 Ιανουαρίου 2019

Σύνθετο Κλειδί

Ας υποθέσουμε ότι θέλουμε να αποθηκεύσουμε και τους βαθμούς των μαθητών στη Βάση Δεδομένων Σχολείο.

Οι ΒΑΘΜΟΙ είναι μία νέα οντότητα!
Συνεπώς, είναι αναγκαίο να απεικονιστεί στη Βάση με ένα νέο Πίνακα, με όνομα ΒΑΘΜΟΙ.

Προφανώς, αυτή η οντότητα για να περιγραφεί χρειάζεται να συνδεθεί τόσο με την οντότητα ΜΑΘΗΤΗΣ, όσο και με την ΜΑΘΗΜΑ (αφού ο κάθε  βαθμός αντιστοιχεί σε μάθημα που πήρε μαθητής)

Επομένως, τα χαρακτηριστικά της οντότητας (πεδία του πινάκα) θα είναι το Α_Μ του Πίνακα  ΜΑΘΗΤΗΣ και το Κ_ΜΑΘΗΜΑΤΟΣ του ΜΑΘΗΜΑ. Τέλος, θα πρέπει να έχει ένα πεδίο για να καταχωρηθεί ο βαθμός, έστω ότι λέγεται ΒΑΘΜΟΣ.

Επειδή ο συνδυασμός πεδίων Α_Μ και Κ_ΜΑΘΗΜΑΤΟΣ είναι μοναδικός (ο κάθε μαθητής αποκλείεται να πάρει δύο φορές το ίδιο μάθημα), μπορούμε να ορίσουμε ως πρωτεύον κλειδί τα δύο αυτά πεδία. Αυτό είναι ένα σύνθετο κλειδί.

Κατόπιν, δημιουργήστε μία σχέση ένα προς πολλά ανάμεσα στον Πίνακα ΒΑΘΜΟΙ και τον ΜΑΘΗΜΑ, αλλά και μεταξύ του ΜΑΘΗΤΗΣ και ΜΑΘΗΜΑ.

Συμπληρώστε τα στοιχεία του Πίνακα ΒΑΘΜΟΙ.

Στη συνέχεια, δημιουργήστε ερωτήματα που να:

1. Εμφανίζει όλους τους Βαθμούς ομαδοποιημένους ανά επίθετο μαθητή
2. Εμφανίζει τους βαθμούς μαθητή με συγκεκριμένο επίθετο μόνο
3. Εμφανίζει το βαθμό συγκεκριμένου μαθητή στην Ιστορία
4. Εμφανίζει τους βαθμούς όλων των μαθητών στην Ιστορία
5. Εμφανίζει τους βαθμούς της Α Τάξης στην Ιστορία
6. Εμφανίζει το μέσο όρο των μαθημάτων ενός συγκεκριμένου μαθητή.
7. Εμφανίζει το μέγιστο βαθμό ενός συγκεκριμένου μαθητή.
8. Εμφανίζει τον ελάχιστο  βαθμό ενός μαθητή
9.  Εμφανίζει το πλήθος των μαθητών που έχουν πάνω από 15 στην Ιστορία
10.  Εμφανίζει το πλήθος των μαθητών που εξετάζονται προφορικά και έχουν πάνω από τη βάση στα Μαθηματικά.

Τρίτη 4 Δεκεμβρίου 2018

Εργασία στις Βάσεις Δεδομένων

Δημιουργήστε μια νέα βάση δεδομένων με όνομα "Επιχείρηση".

Ο πρώτος πίνακας που θα δημιουργήσετε είναι ο πίνακας "Εργαζόμενοι".

O κάθε εργαζόμενος πρέπει να περιγράφεται μοναδικά με κάποιο αριθμό (π.χ. Αριθμός Μητρώου, ή ΑΦΜ, ή ΑΔΤ). Αυτό θα είναι και το πρωτεύον κλειδί.

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

 Επιλέξτε σωστά τον τύπο κάθε πεδίου (πχ Όνομα είναι Κείμενο κλπ).

Προσθέστε και ένα πεδίο Ιδιότητα στον πίνακα, τύπου "Οδηγός Αναζήτησης..." που θα παρέχει μία λίστα με 4 τιμές: 1 για απλό υπάλληλο, 2 για Προϊστάμενο, 3 για  Διευθυντή και  4 για Γενικό Διευθυντή.

Με βάση το παραπάνω Οργανόγραμμα, δημιουργήστε τους Πίνακες: Γενικός_Διευθυντής, Διευθυντής, Προϊστάμενος και Τμήμα.

Ο Πίνακας Τμήμα, για παράδειγμα, περιέχει ως πεδία τον κωδικό τμήματος (πρωτεύων κλειδί) και το όνομα του τμήματος (π.χ. Προϊόντων).

 Επιπλέον έχει μία σχέση ΕΝΑ ΠΡΟΣ ΠΟΛΛΑ με τον Πίνακα Εργαζόμενοι, αφού κάθε εργαζόμενος ανήκει σε ένα και μόνο τμήμα.

Προφανώς, πρέπει να προστεθούν αντίστοιχα πεδία στον πίνακα Εργαζόμενοι (π.χ. Κωδικος_Τμήματος) που θα καταχωρούν κάθε εργαζόμενο σε ένα και μόνο τμήμα με τον κωδικό τμήματος που αντιστοιχεί στο τμήμα αυτό! 
Επίσης, ο Πίνακας Τμήμα, αλλά και ο Πίνακας Εργαζόμενοι θα πρέπει να έχουν Κωδικό_Διεύθυνσης στην οποία ανήκουν.


Επιπλέον, πρέπει να προσθέσετε τα κατάλληλα πεδία στον πίνακα Εργαζόμενοι, ώστε αυτοί να ανήκουν σε Διεύθυνση και γενική Διεύθυνση.

Προφανώς ο πίνακας Διεύθυνση θα έχει Κωδικό_Διεύθυνσης και Όνομα.

Τέλος, πρέπει να δημιουργηθεί μια σχέση ένα προς πολλά μεταξύ πινάκων Τμήμα και Διεύθυνση


Ασκήσεις

  • Θα πρέπει να έχει οριστεί ένας προϊστάμενος για κάθε τμήμα και τουλάχιστον ένας υπάλληλος σε κάθε τμήμα.
  • Θα πρέπει να υπάρχει ένας διευθυντής σε κάθε διεύθυνση (Ο Διευθυντής δε χρειάζεται να ανήκει σε Τμήμα).
  • Θα πρέπει να υπάρχει ένας γενικός διευθυντής (Ο Γενικός Διευθυντής δε χρειάζεται να ανήκει σε Τμήμα).
Με δεδομένα τα παραπάνω, να δημιουργηθούν και να αποθηκευθούν ξεχωριστά ερωτήματα που θα επιτρέπουν:
1) Να εμφανίζονται τα ονοματεπώνυμα των προϊσταμένων τμημάτων  και το τμήμα στο οποίο προϊστανται.
2) Να Εμφανίζονται όλοι οι εργαζόμενοι και το τμήμα που ανήκουν
3) Να εμφανίζονται τα ονοματεπώνυμα των Διευθυντών και οι Διευθύνσεις που ανήκουν
4) Να εμφανίζεται το Ονοματεπώνυμο του  Γενικού Διευθυντή
5) Να εμφανίζεται  το πλήθος των εργαζομένων κάθε τμήματος.
6) Να εμφανίζεται το πλήθος των εργαζομένων κάθε Διεύθυνσης.
7) Προσπαθήστε να εμφανίσετε τα Τμήματα που ανήκουν σε κάθε Διεύθυνση.



Κυριακή 2 Δεκεμβρίου 2018

Δόμηση Ερωτημάτων

Δημιουργήστε ένα νέο Πίνακα για τις απουσίες.
Θα έχει όνομα ΑΠΟΥΣΙΕΣ και πεδία Α_Μ (αριθμό μητρώου μαθητή), ΗΜΕΡΟΜΗΝΙΑ  και ΑΡΙΘΜΟΣ

Καταχωρήστε απουσίες για κάθε μαθητή.

Δημιουργήσετε μία σχέση ένα προς πολλά, ανάμεσα στους Πίνακες ΜΑΘΗΤΗΣ και ΑΠΟΥΣΙΕΣ
(ένας μαθητής έχει απουσίες πολλές ημερομηνίες, αλλά κάθε απουσία μαθητή δεν αντιστοιχεί σε πολλούς μαθητές).

1. Κάντε ένα ερώτημα που θα σας δίνει αναλυτικά τις απουσίες, ομαδοποιημένες ανά επίθετο και όνομα μαθητή. Να φαίνεται η ημερομηνία και ο αριθμός των απουσιών κάθε μέρας που έλλειπε ο μαθητής

2. Κάντε ένα νέο ερώτημα που θα δίνει το άθροισμα των απουσιών ενός μήνα (π.χ. του Οκτωβρίου), ομαδοποιημένες κατά Επίθετο και  Όνομα μαθητή.

3. Κάντε ένα νέο ερώτημα που θα δείχνει τους βαθμούς κάθε μαθητή, ομαδοποιημένους κατά Επίθετο και Όνομα μαθητή.

4. Στη συνέχεια, ας υποθέσουμε, ότι θέλετε να προσθέσετε ένα νέο πεδίο δίπλα στο βαθμό που θα γράφει "Επιτυχώς" αν ο βαθμός είναι μεγαλύτερος από το 10 και "Ανεπιτυχώς" αν είναι μικρότερος.

Για να το πετύχετε αυτό δημιουργήστε ένα δομημένο ερώτημα ως εξής:
Πηγαίνετε σε μία νέα στήλη του ερωτήματος, δίπλα από το βαθμό (σε προβολή σχεδίασης) και πατήστε  το κουμπί

Εναλλακτικά, μπορείτε και με δεξί κλικ.

Στο πλαίσιο διαλόγου που θα εμφανιστεί θα βρείτε Συναρτήσεις και επιλέξτε τις Ενσωματωμένες.
Κατόπιν, επιλέξτε τις  συναρτήσεις που αντιστοιχούν στη Ροή Προγράμματος.
Εκεί θα βρείτε τη συνάρτηση IIf, που δεν είναι άλλη από τη γνωστή if (εάν), τη γνωστή δομή επιλογής. Η σύνταξή της είναι ως εξής:

IIf («εκφρ»; «αληθέςμέρος»; «ψευδέςμέρος») 


Δηλαδή, αν ισχύει η έκφραση, θα εκτελεστεί ό,τι περιέχεται στο "αληθές μέρος", αλλιώς θα εκτελεστεί ό,τι περιέχεται στο "ψευδές μέρος"
Η έκφραση που ψάχνουμε είναι αν το πεδίο ΒΑΘΜΟΙ του Πίνακα ΒΑΘΜΟΣ είναι  μεγαλύτερο του 10. 
Άρα, πατήστε πάνω στο «εκφρ» και από το πλαίσιο διαλόγου που έχετε ανοικτό επιλέξτε ΠΙΝΑΚΕΣ και από τον πίνακα ΒΑΘΜΟΙ το πεδίο ΒΑΘΜΟΣ.
Δίπλα του γράψτε τη σχέση που ψάχνετε:  >10.

Τέλος,  βάλτε τα σωστά μηνήματα "Επιτυχώς" ή "Ανεπιτυχώς" αναλόγως αν ισχύει η παραπάνω σχέση.
5. Βρείτε το μέσο όρο των βαθμών ενός μαθητή σε όλα τα μαθήματα. Τα δεδομένα να είναι ομαδοποιημένα κατά Επίθετο και όνομα μαθητή 
Αν αφήστε το δομημένο ερώτημα όπως παραπάνω, θα δημιουργηθεί πρόβλημα. Κι αυτό, διότι ψάχνει τους βαθμούς, ενώ υπάρχει ο Μέσος Όρος των βαθμών. Επομένως στην έκφραση πρέπει να μπει ο μέσος όρος του πεδίου ΒΑΘΜΟΙ του Πίνακα ΒΑΘΜΟΣ. Τη συνάρτηση Μέσος_Όρος θα τη βρείτε
στις Συγκεντρωτικές SQL συναρτήσεις της Δόμησης Εκφράσεων.

6. Δημιουργήστε ένα νέο ερώτημα που θα υπολογίζει το σύνολο των απουσιών ενός μαθητή και θα εμφανίζει "Επαρκής Φοίτηση" αν αυτό είναι μικρότερο ή ίσο του 114, ενώ σε αντίθετη περίπτωση "Ανεπαρκής Φοίτηση".



Πέμπτη 22 Νοεμβρίου 2018

Σχέσης Πινάκων - Πολλά προς Πολλά

Ας υποθέσουμε, τώρα, ότι θέλουμε με κάποιο τρόπο να εμφανίζονται τα μαθήματα που παίρνει ο κάθε μαθητής.
Αρχικά, μιλάμε για μια νέα οντότητα, τα μαθήματα, οπότε απαραίτητα θα δημιουργηθεί ένας νέος Πίνακας Μαθήματα. Τα πεδία του θα είναι Κ_ΜΑΘΗΜΑΤΟΣ (δηλ. Κωδικός Μαθήματος) και ΟΝΟΜΑ.

Προσέξτε,  όμως, ότι ο ένας μαθητής παίρνει πολλά μαθήματα, αλλά και κάθε μάθημα το έχουν πάρει πολλοί μαθητές!!!

Πρόκειται για μία Σχέση Πολλά προς Πολλά.

Τέτοια σχέση δεν υπάρχει σε πίνακες σε Βάσεις Δεδομένων, διότι δημιουργεί τεράστια έλλειψη ευελιξίας, πλεονασμό (redundancy)και αυξάνει την πιθανότητα για ασυνέπεια (inconsistency).

Η λύση δίνεται με το να δημιουργηθεί ένας νέος ενδιάμεσος πίνακας που θα έχει το πρωτεύον κλειδί και των δύο. Έστω, λοιπόν, ότι τον λέμε ΜΑΘ_ΜΑΘ (δηλ. μαθητής_μάθημα), με στήλες το Α_Μ από τον Πίνακα  Μαθητή και τον Κ_Μαθήματος από το Μάθημα.

Τώρα τόσο ο Πίνακας Μαθητής, όσο και ο Πίνακας Μάθημα έχουν ο καθένας μία σχέση ένα προς πολλά με τον ΜΑΘ_ΜΑΘ.

Οπότε επανερχόμαστε σε αυτά που είναι ήδη γνωστά.

Αφού δημιουργήσετε τους πίνακες και τις σχέσει, όπως ήδη γνωρίζετε, 
η εικόνα των Σχέσεων στη Βάση Δεδομένων σας, θα είναι κάπως έτσι:

Στη συνέχεια, δημιουργήστε ερωτήματα  που να δείχνουν:
1. Το ονοματεπώνυμο του κάθε μαθητή με όλα τα μαθήματα που έχει πάρει.
2. Το ονοματεπώνυμο και το  πλήθος των μαθημάτων που πήρε ο κάθε μαθητής
3.  Το  ονοματεπώνυμο και το πλήθος των μαθημάτων που πήρε όποιος εξετάζεται προφορικά.
4. Το ονοματεπώνυμο και το πλήθος των μαθημάτων που έχει ο κάθε μαθητής της Α Τάξης.
5.  Το πλήθος των μαθημάτων ανά Τάξη
6. Το όνομα των μαθημάτων του BΠ (τι παρατηρείτε;)


Πέμπτη 8 Νοεμβρίου 2018

Σχέσεις Πινάκων - Ένα προς Πολλά

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

Οι μαθητές, ωστόσο, ανήκουν σε τάξεις. Οπότε είναι αναγκαίο να δημιουργηθεί μία νέα οντότητα (Πίνακας), η Τάξη. Αυτή έχει ένα πρωτεύον κλειδί που περιγράφει κάθε εγγραφή της με μοναδικό τρόπο, έστω ότι είναι το πεδίο Κ_ΤΑΞΗΣ (δηλ. κωδικός τάξης) με τύπο είτε αυτόματη αρίθμηση , ή αριθμός, αρκεί να είμαστε σίγουροι ότι ο αριθμός δε θα επαναληφθεί ποτέ! Επιπλέον, η κάθε τάξη περιγράφεται με ένα ΟΝΟΜΑ (π.χ. Α, Β, Γ).

Επειδή, όμως, οι μαθητές ανήκουν σε τάξη, πρέπει αυτός ο κωδικός τάξης (Κ_ΤΑΞΗΣ) να υπάρχει και στον πίνακα ΜΑΘΗΤΗΣ, για να συνδεθούν μεταξύ τους οι δύο Πίνακες με κάποιο τρόπο.
Επομένως, προστίθεται στον Πίνακα ΜΑΘΗΤΗΣ ένα ακόμη πεδίο  με τίτλο Κ_ΤΑΞΗΣ (τύπος αριθμός). Αυτό λέγεται ξένο κλειδί,  αφού ειναι πρωτεύον κλειδί άλλου Πίνακα.

Στη συνέχεια, συμπληρώνουμε τους Πίνακες. Πρώτα τον Πίνακα ΤΑΞΗ και κατόπιν, το Πεδίο Κ_ΤΑΞΗΣ του πίνακα ΜΑΘΗΤΗΣ, ανάλογα με το σε ποια τάξη ανήκει ο κάθε μαθητής.

Και τώρα είμαστε έτοιμη να δηλώσουμε στην ACCESS τη σχέση που έχουν οι δύο πίνακες.
Πρόκειται για μία σχέση ΕΝΑ ΠΡΟΣ ΠΟΛΛΑ, αφού πολλοί μαθητές ανήκουν σε μία Τάξη, αλλά ένας μαθητής αποκλείεται να ανήκει σε δύο ή περισσότερες Τάξεις.

Πηγαίνοντας στο μενού "Εργαλεία Βάσης Δεδομένων", επιλέξτε "Σχέσεις".
Από το κουμπί "Εμφάνιση Πίνακα", επιλέξτε τους Πίνακες ΜΑΘΗΤΗΣ και ΤΑΞΗ.

Πατήστε πάνω στο πεδίο Κ_ΤΑΞΗΣ του ενός και σύρτε με πατημένο το αριστερό πλήκτρο πάνω στο πεδίο Κ_ΤΑΞΗΣ του άλλου πίνακα.
Αμέσως η Access εντοπίζει ότι η σχέση είναι ΕΝΑ ΠΡΟΣ ΠΟΛΛΑ.

Σας προτείνει να κάνετε Ενεργοποίηση ακεραιότητας αναφορών. Επιλέξτε το.
Αυτό αποτρέπει από το να υπάρξει  ασυνέπεια (incosistency).
Δηλαδή, άλλα στοιχεία να έχει ο ένας πίνακας για το Κ_ΤΑΞΗΣ και άλλα ο άλλος, μετά από κάποια αλλαγή σε έναν από τους δύο.
Επιλέξτε και το Διαδοχική Ενημέρωση σχετικών εγγραφών, καθώς και το Διαδοχική διαγραφή σχετικών εγγραφών, ακριβώς για τον ίδιο λόγο.

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


Γυρίστε σε προβολή SQL και δείτε πως δηλώνει η γλώσσα αυτή τη σύνδεση των πινάκων Μαθητής και Τάξη:

ΤΑΞΗ INNER JOIN ΜΑΘΗΤΗΣ ON ΤΑΞΗ.Κ_ΤΑΞΗΣ= ΜΑΘΗΤΗΣ.[Κ_ΤΑΞΗΣ]

2. Βρείτε το πλήθος των μαθητών ανά τάξη

3. Βρείτε  όλους τους μαθητές , ομαδοποιημένους ανά τάξη , που γεννήθηκαν μετά την 01/01/2002

4. Βρείτε τους μαθητές της Α που το επώνυμό τους αρχίζει από Κ

5. Βρείτε τους μαθητές της Β που η ηλικία τους είναι μεταξύ 14 και 16 ετών

6. Βρείτε τους μαθητές της Γ που εξετάζονται προφορικά

7. Βρείτε τη μεγαλύτερη ηλικία του μαθητή της Α τάξης

8 Βρείτε  πόσοι μαθητές της Β μένουν στην Ερυθραία

9. Βρείτε  ποιοι μαθητές της Γ είναι ενήλικοι.


Στη συνέχεια, δημιουργήστε ένα νέο Πίνακα με όνομα  ΤΜΗΜΑ και πεδία Κ_ΤΜΗΜΑ και ΟΝΟΜΑ, όπως κάνατε και παραπάνω. Επαναλάβετε τη διαδικασία για το ΤΜΗΜΑ, καταχωρώντας τους μαθητές σε κάθε Τμήμα.
Δημιουργήστε μία σχέση Ένα προς πολλά μεταξύ των Πινάκων Μαθητής και Τμήμα.
 Θεωρούμε ότι ένας μαθητής δεν είναι δυνατό να ανήκει σε δύο τμήματα (πχ άλλογενικής παιδείας και άλλο κατεύθυνσης. )
Αν συνέβαινε κάτι τέτοιο, θα έπρεπε να φτιάξουμε κι άλλους πίνακες με τμήματα (π.χ. Τμήμα_Επιλογής, Τμήμα_Γενικής_Παιδείας, Τμήμα_Κατεύθυνσης κ.ο.κ)

1. Βρείτε τα ονόματα και τα επίθετα των μαθητών ομαδοποιημένα ανά τμήμα.

2.Βρείτε το πλήθος των μαθητών ανά τμήμα

3. Βρείτε πόσοι μαθητές εξετάζονται προφορικά ανά τμήμα

4. Βρείτε ποιοι μαθητές εξετάζονται προοφορικά ανά τμήμα

5. Βρείτε ποιοι μαθητές από το ΓΠ είναι ενήλικοι

6. Βρείτε ποιοι μαθητές από το ΒΜηχ έχουν ηλικία από 17 ως και 18 ετών

7. Βρείτε όλους τους μαθητές του ΒΥγ που το δεύτερο γράμμα του επιθέτου τους είναι "α".

9. Βρείτε πόσοι μαθητές από το Α1 μένουν στην Κηφησιά

Κυριακή 21 Οκτωβρίου 2018

Συγκεντρωτικά Ερωτήματα στην Access

Με τα συγκεντρωτικά ερωτήματα (aggregate queries) μπορούμε να υπολογίσουμε, για παράδειγμα,  το πλήθος, το άθροισμα (εφόσον πρόκειται για αριθμούς), το μέγιστο, το ελάχιστο, το μέσο όρο, να ομαδοποιήσουμε κατά ένα πεδίο.
Ας υποθέσουμε, ότι θέλουμε να ομαδοποιήσουμε τους μαθητές, ανά ημερομηνία γέννησης.
Αρχικά, επιλέγουμε το πεδίο Ημερομηνία Γέννησης, κατόπιν το Επίθετο και το Όνομα
Ξεκινώντας ένα ερώτημα, όπως ήδη γνωρίζουμε, αφού επιλέξουμε τα πεδία που μας ενδιαφέρουν από τον / τους κατάλληλους πίνακες, πατάμε το κουμπί Συγκεντρωτικά Στοιχεία :



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

1. Δημιουργήστε ένα ερώτημα που θα δίνει τη μικρότερη ηλικία

2. Δημιουργήστε ένα ερώτημα που θα δίνει τη μεγαλύτερη ηλικία

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

4. Βρείτε το πλήθος των μαθητών του σχολείου

5. Ομαδοποιήστε κατά ηλικία και βρείτε το πλήθος των μαθητών   που αντιστοιχεί σε κάθε ηλικία

6. Ομαδοποιήστε κατά Επίθετο και βρείτε το πλήθος των μαθητών που το επίθετό τους είναι π.χ. ΝΙΚΟΛΟΠΟΥΛΟΣ

7. Βρείτε πόσοι μαθητές εξετάζοντα προφορικά.

8. Βρείτε πόσοι μαθητές είναι ενήλικοι

9. Βρείτε πόσοι μαθητές γεννήθηκαν μετά την 01/01/2003

Πατήστε πάνω στο όνομα κάθε ερωτήματος αριστερά κι από την Προβολή  επιλέξτε Προβολή SQL
και δείτε τον κώδικα sql που αντιστοιχεί στο συγκεκριμένο ερώτημα. Η SQL (Structured Query Language) είναι η γλώσσα που κυρίως χρησιμοποιείται για ερωτήματα σε βάσεις δεδομένων.


Κάντε δεξί κλικ στο όνομα του ερωτήματος αριστερά και κάντε εξαγωγή σε ένα αρχείο EXCEL 
 




Πέμπτη 18 Οκτωβρίου 2018

Ερωτήματα στην Access

Μία βασική λειτουργία των βάσεων δεδομένων είναι η δημιουργία ερωτημάτων για απόκτηση κάποιας πληροφορίας.
Για παράδειγμα, ποιοι μαθητές εξετάζονται προφορικά; Ή ποιοι μαθητές έχουν γεννηθεί πριν το 2002; Ή ποιοι μαθητές μένουν στην Κηφισιά, ή την Εκάλη, ή την Ερυθραία;

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

Ας υποθέσουμε ότι ψάχνουμε το όνομα και το επίθετο όσων μαθητών λέγονται "ΝΙΚΟΛΑΙΔΗΣ"
Επιλέγουμε, λοιπόν, τα ΟΝΟΜΑ και ΕΠΙΘΕΤΟ μόνο.

Αν προχωρήσουμε θα δούμε ότι μας βγάζει τα ονόματα και τα επίθετα όλων των μαθητών!
Αριστερά θα δούμε το ερώτημα εκεί που γράφει "Όλοι οι πίνακες".
Πατάμε πάνω του και επιλέγουμε (προβολή σχεδίασης).
Κάτω από το επίθετο, γράφουμε ="ΝΙΚΟΛΑΙΔΗΣ" και αποθηκεύουμε το ερώτημα.
Πατάμε διπλό κλικ αριστερά στο όνομά του και μας δίνει το αποτέλεσμα.
 Αποθηκεύστε κάθε ερώτημα που κάνετε χωριστά:

1. Κάντε ένα νέο ερώτημα και  βρείτε όλα τα ονόματα  και επίθετα των μαθητών που δεν έχουν όνομα ΓΕΩΡΓΙΟΣ : NOT 'ΓΕΩΡΓΙΟΣ'. Αποθηκεύστε το .

2.Ο χαρακτήρας ? είναι μπαλαντέρ για 1 γράμμα ή αριθμό, ενώ το * είναι μπαλαντέρ για πολλούς χαρακτήρες. Κάντε ένα ερώτημα που να βρίσκει όνομα, επίθετο και διεύθυνση όσων το τρίτο γράμμα είναι  του επιθέτου είναι Ο:   '??Ο*'.
3. Κάντε ένα νέο ερώτημα που να βρίσκει όνομα και επίθετο μαθητών με ημερομηνία γέννησης μικρότερη ή ίση της 01/01/2003 : <= 01/01/2003
4. Κάντε ένα νέο ερώτημα που να βρίσκει Όνομα επίθετο, δ/νση και έτος γέννησης μαθητών όταν έτος γέννησης είναι  μεγαλύτερο του 2005 : >01/01/2005
5. Άλλο ερώτημα να βρίσκει τα παραπάνω στοιχεία, όταν έτος γέννησης είναι διάφορο του 2004 :    < >2004.

6. Στον πίνακα ΜΑΘΗΤΗΣ προσθέστε ένα νέο πεδίο το ΗΛΙΚΙΑ και καταγράψτε την ηλικία κάθε μαθητή. Το πεδίο ΗΛΙΚΙΑ θα είναι αριθμός.

7. Βρείτε τις ηλικίες, ονόματα και επίθετα  μαθητών από 15 ως 18 χρονών: Between 15 and 18

8. Κάντε το ίδιο με την εντολή AND σε άλλο ερώτημα

9.  Βρείτε όλα τα ονόματα και επίθετα των μαθητών των οποίων το επίθετο αρχίζει από Κ

10. Βρείτε  όλα τα ονόματα και επίθετα των μαθητών που εξετάζονται προφορικά (θυμηθείτε το πεδίο είναι τύπου ΝΑΙ/ΟΧΙ) με αύξουσα σειρά επιθέτου.

Πατήστε πάνω στο όνομα κάθε ερωτήματος αριστερά κι από την Προβολή  επιλέξτε Προβολή SQL
και δείτε τον κώδικα sql που αντιστοιχεί στο συγκεκριμένο ερώτημα. Η SQL (Structured Query Language) είναι η γλώσσα που κυρίως χρησιμοποιείται για ερωτήματα σε βάσεις δεδομένων.


Κάντε δεξί κλικ στο όνομα του ερωτήματος αριστερά και κάντε εξαγωγή σε ένα αρχείο EXCEL 


Σάββατο 6 Οκτωβρίου 2018

Βασικές Έννοιες



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


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

Όταν δημιουργούμε μία βάση δεδομένων πρέπει να αποφύγουμε τα παρακάτω:
1. Πλεονασμός (Redundancy)
Να μην εγγράφουμε ξανά δεδομένα που έχουμε ήδη  εγγράψει στη Βάση.

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

3. Αδυναμία Μερισμού (Sharing)
Δηλαδή, για παράδειγμα, όταν βρίσκουμε ένα ποίημα του Παλαμά, αλλά δε μπορούμε να βρούμε όλα τα ποιήματά του με βάση το όνομά του.

To πιο κοινό Σύστημα Διαχείρισης Βάσης Δεδομένων είναι το MS Access

Θέλουμε να φτιάξουμε μία ΒΔ με όλα τα στοιχεία των μαθητών.

Ανοίγουμε το Access και πάμε να δημιουργήσουμε μία καινούρια ΒΔ
Πατάμε πάνω στο   και στη δεξιά πλευρά του παραθύρου εμφανίζεται το όνομα της ΒΔ. Ας την Ονομάσουμε "Σχολείο".

Πατώντας το κουμπί "Δημιουργία" δημιουργείται μία κενή ΒΔ, με ένα άδειο πίνακα.

Ο Κάθε Πίνακας στη ΒΔ αντιστοιχεί σε μία " Οντότητα".
Η μόνη οντότητα που μας ενδιαφέρει σε αυτή την απλή άσκηση είναι η οντότητα "Μαθητές"

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

ΑΡΙΘΜΟ_ΜΗΤΡΩΟΥ, ΟΝΟΜΑ, ΕΠΙΘΕΤΟ, ΟΝΟΜΑ_ΠΑΤΕΡΑ, ΟΝΟΜΑ_ΜΗΤΕΡΑΣ, ΔΙΕΥΘΥΝΣΗ, ΠΟΛΗ,ΤΗΛΕΦΩΝΟ, ΠΡΦΟΡΙΚΗ_ΕΞΕΤΑΣΗ, ΕΤΟΣ_ΓΕΝΝΗΣΗΣ

Αυτά τα στοιχεία θα αποτελέσουν τις στήλες του Πινάκα "Μαθητής" και λέγονται πεδία.
Κάθε γραμμή του Πίνακα λέγεται εγγραφή.

Ένα πεδίο που αντιστοιχεί με μοναδικό τρόπο  σε κάθε εγγραφή μπορεί να οριστεί ως πρωτεύον κλειδί. Στην Περίπτωσή μας το πρωτεύον κλειδί είναι το "ΑΡΙΘΜΟΣ_ΜΗΤΡΩΟΥ", αφού αποκλείεται να έχουν δύο μαθητές τον ίδιο αριθμό μητρώου.



Πατώντας το κουμπί   (προβολή σχεδίασης), θα δώστε όνομα στον Πίνακα (Μαθητής) και αρχίστε  να καταχωρείτε τα ονόματα των πεδίων και δίπλα  τον τύπο των δεδομένων που αυτά έχουν (π.χ. για όνομα κείμενο)
Για τον Αριθμό Μητρώου (πρωτεύον κλειδί) επιλέξτε καλύτερα "Αυτόματη Αρίθμηση", ώστε να  μην επαναληφθεί κατά λάθος.
Η ΠΡΟΦΟΡΙΚΗ_ΕΞΕΤΑΣΗ θα είναι τύπου  "ΝΑΙ/ΟΧΙ"

Αποθηκεύστε τον πίνακα και μετά κλείστε τον.
Κατόπιν, με δεξί κλικ πάνω στο όνομά του (αριστερά) επιλέξτε "Άνοιγμα"
Αρχίστε να βάζετε τα στοιχεία των μαθητών:



Όταν τελειώσετε, αποθηκεύστε.

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

Από το "Δημιουργία" επιλέξτε    επιλέξτε στυλ από το δεξί μέρος του παραθύρου και αποθηκεύστε με το όνομα "Μαθητής".
 Με τα βελάκια μπορείτε να ανατρέξετε στις εγγρφές του πίνακα, αλλά και να προσθέσετε νέες εγγραφές. Με το χέρι μπορείτε να γράψετε τον αριθμό εγγραφής (ΑΡΙΘΜΟ_ΜΗΤΡΩΟΥ) και να βρείτε κατευθείαν τα στοιχεία του μαθητή.