Κεφάλαιο 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. Βιβλιογραφία/Αναφορές

 

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

Σύνοψη
Σ’ αυτό το κεφάλαιο θα δημιουργήσουμε μια βάση δεδομένων που αφορά ένα κατάστημα ενοικίασης ψηφιακών δίσκων με το όνομα DVDClub. Θα εργαστούμε, κυρίως, με εντολές από την γλώσσα ορισμού δεδομένων (Data Definition Language). Θα συζητήσουμε για τους διαφορετικούς τύπους δεδομένων και τον τρόπο δημιουργίας πινάκων, με γραφικό τρόπο και με κώδικα. Τέλος, θα δημιουργήσουμε συσχετίσεις μεταξύ των πινάκων στο Database diagram και θα εισάγουμε τιμές στους πίνακες.

Πίνακας Περιεχομένων / Περιεχόμενα Κεφαλαίου

2.1. Ορισμός και Δημιουργία μιας Βάσης Δεδομένων

Ο SQL Server είναι ένα σύστημα διαχείρισης βάσεων δεδομένων (database management system). Ως εκ τούτου,  υποστηρίζει όλες τις λειτουργίες που πρέπει να προσφέρει μια βάση δεδομένων, όπως είναι η αναζήτηση, η εισαγωγή, η διαγραφή, η ενημέρωση εγγραφών κλπ. Η βάση δεδομένων είναι μια συλλογή στοιχείων που σχετίζονται μεταξύ τους και είναι καταχωρημένα με κατάλληλα δομημένο τρόπο. Συγκεκριμένα, μια βάση δεδομένων χαρακτηρίζεται ως σχεσιακή, όταν το βασικό δομικό στοιχείο της είναι η σχέση ή, αλλιώς, ο πίνακας, ο οποίος διέπεται από συγκεκριμένες ιδιότητες (μοναδικότητα κάθε εγγραφής, ατομικότητα τιμών κτλ.). Ο SQL Server παρέχει δύο μεθόδους για να δημιουργήσετε μια βάση δεδομένων:

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

Βάσει της παραπάνω ανάλυσης απαιτήσεων, ακολουθεί το διάγραμμα οντοτήτων-συσχετίσεων που δίνεται στην Εικόνα 2.1..

 

 

Εικόνα 2.1

Συνολικά, το διάγραμμα Οντοτήτων-Συσχετίσεων (Ο-Σ) αποτελείται από 5 οντότητες (ΠΕΛΑΤΗΣ, ΔΙΣΚΟΣ, ΤΑΙΝΙΑ, ΣΥΝΤΕΛΕΣΤΗΣ, ΡΟΛΟΣ),και τρεις συσχετίσεις (Ενοικιάζει, Αποθηκεύεται, Τ_Σ_Ρ). Από αυτές τις συσχετίσεις, οι δύο (Ενοικιάζει και Τ_Σ_Ρ) συσχετίζουν οντότητες με συσχέτιση πολλά προς πολλά και, ως εκ τούτου, πρέπει να αναχθούν σε συσχετιστικές οντότητες στο σχεσιακό σχήμα, με αποτέλεσμα να προκύπτουν συνολικά επτά πίνακες δεδομένων, όπως φαίνεται στην Εικόνα 2.2.  Σύμφωνα με τη θεωρία των Βάσεων Δεδομένων, το E-R διάγραμμα αντιστοιχίζεται με το σχεσιακό σχήμα της Εικόνας 2.2, που αποτελείται από επτά σχέσεις: μία για κάθε οντότητα και από μία για τις συσχετίσεις M:N και M:N:K. Η συσχέτιση 1:Ν ενσωματώνεται στη σχέση που προκύπτει από την οντότητα ΔΙΣΚΟΣ. Τέλος, τονίζουμε ότι στις επόμενες ενότητες θα παρουσιάσουμε βήμα-βήμα την δημιουργία της βάσης δεδομένων DVDclub βάσει του σχεσιακού σχήματος της Εικόνας 2.2.

Εικόνα 2.2 Σχεσιακό Σχήμα του DVDclub

 

Πίνακας Περιεχομένων / Περιεχόμενα Κεφαλαίου

2.1.1. Δημιουργία νέας βάσης σε γραφικό περιβάλλον

Με δεξί κλικ πάνω στο φάκελο Databases επιλέγουμε “New Database…”.

Εικόνα 2.3


Δίνουμε το όνομα της βάσης δεδομένων μας (DVDclub), όπως φαίνεται στην Εικόνα 2.4.

Εικόνα 2.4


Δημιουργούνται δύο αρχεία: το primary και το transaction log. Το κύριο αρχείο δεδομένων έχει επέκταση .mdf ενώ το transaction log έχει την επέκταση .ldf. Τονίζεται ότι και τα δύο αρχεία δημιουργούνται αυτόματα και παίρνουν το όνομα της βάσης δεδομένων ως πρόθεμα. Μπορούμε να αποδεχθούμε το όνομα ή να πληκτρολογήσουμε ένα διαφορετικό. Στο κύριο αρχείο αποθηκεύονται τα δεδομένα της βάσης δεδομένων, ενώ στο transaction log file τηρούνται οι τελευταίες μεταβολές που έγιναν στην βάση δεδομένων, προκειμένου να δοθεί η δυνατότητα επαναφοράς της σε περίπτωση βλάβης του συστήματος. Κάνοντας κλικ στην επιλογή «Options» εμφανίζεται η Εικόνα 2.4, οπότε μπορούμε να καθορίσουμε τις πιο εξειδικευμένες ρυθμίσεις που εμφανίζονται στην Εικόνα 2.5.

Οι πιο σημαντικές είναι οι παρακάτω:

Compatibility level: Αν θέλουμε να μεταφέρουμε την βάση δεδομένων που θα φτιάξουμε ή αν θέλουμε να είναι προσβάσιμη από άλλες εφαρμογές που δεν έχουν την δυνατότητα να συνδεθούν στο SQL Server 2014, τότε μπορούμε  να επιλέξουμε συμβατότητα με προηγούμενες εκδόσεις (Compatibility level).

 


Εικόνα 2.5

Recovery Model: Η ρύθμιση αφορά τον τύπο των αντιγράφων ασφαλείας. Όπως φαίνεται στην Εικόνα 2.6, το μοντέλο Simple ελαχιστοποιεί το transactions log file και αποθηκεύει τα δεδομένα απευθείας στο primary file. Έτσι, δεν δίνεται η δυνατότητα να επιστρέψουμε σε μια προηγούμενη χρονική στιγμή της βάσης δεδομένων, παρά μόνο στην τελευταία. Αντιθέτως, το μοντέλο Full δίνει την δυνατότητα να επιστρέψουμε σε οποιαδήποτε χρονική στιγμή της βάσης δεδομένων μας. Βέβαια, το μοντέλο αυτό απαιτεί να τηρούνται και τα ανάλογα back-ups του log file και καταλαμβάνει περισσότερο χώρο στο δίσκο.

 


Εικόνα 2.6

Για να αποθηκευτεί η βάση δεδομένων μας (DVDclub), κάνουμε κλικ στο κουμπί ΟΚ (βλέπε Εικόνα 2.4). Τώρα, κάνοντας δεξί κλικ πάνω στη βάση δεδομένων μας, βλέπουμε τις διαθέσιμες ενέργειες που εμφανίζονται στην Εικόνα 2.7, όπως π.χ. η διαγραφή της ΒΔ με την επιλογή Delete.

Εικόνα 2.7

Στην επιλογή «Properties» μπορούμε να αλλάξουμε τις βασικές ρυθμίσεις που ορίσαμε κατά τη δημιουργία της. Ακόμη, το υπομενού Tasks παρέχει χρήσιμες επιλογές, όπως φαίνονται στην Εικόνα 2.8.

 


Εικόνα 2.8

Πιο σημαντική είναι η διαδικασία του «Back Up», κατά την οποία θα επιλέξουμε το όνομα του αρχείου, προκειμένου να αποθηκεύεται κάθε φορά ένα αρχείο με κατάληξη «bak» που θα περιέχει όλα τα δεδομένα της βάσης μας. Μια άλλη χρήσιμη επιλογή είναι το “Restore”, όταν θέλουμε  να επαναφέρουμε μια βάση δεδομένων από ένα αρχείο .bak (backup).

Η επιλογή “detach” ουσιαστικά κάνει κατ’ αναλογία την επιλογή cut όταν εργαζόμαστε με αρχεία. Δηλαδή το αρχείο mdf θα αποκοπεί και θα σβηστεί από το περιβάλλον εργασίας μας, με σκοπό να μεταφερθεί με την επιλογή Databases – Attach σε κάποιον άλλο υπολογιστή. Τέλος, η επιλογή Shrink επιχειρεί να μειώσει τον αποθηκευτικό χώρο που καταλαμβάνει μία βάση δεδομένων, χωρίς απώλεια δεδομένων.

 

Πίνακας Περιεχομένων / Περιεχόμενα Κεφαλαίου

2.1.2. Δημιουργία νέας βάσης με κώδικα SQL

Εναλλακτικά, η δημιουργία της βάσης δεδομένων μπορεί να επιτευχθεί με τη χρήση της γλώσσας SQL. Κάνοντας κλικ στην εργαλειοθήκη στο κουμπί «New Query» επιλέγουμε να δημιουργήσουμε ένα νέο ερώτημα SQL, το οποίο θα εκτελεστεί στη βάση δεδομένων master του συστήματος. Στη συνέχεια, θα πληκτρολογήσουμε στον Query Editor την εντολή: create database dvdclub.Αφού ολοκληρώσουμε τη σύνταξη του ερωτήματος δημιουργίας βάσης, θα εκτελέσουμε τον κώδικα SQL είτε κάνοντας κλικ στο κουμπί “Execute” είτε πατώντας F5 στο πληκτρολόγιο, όπως φαίνεται στην Εικόνα 2.10.

Αφού δημιουργήσουμε τη βάση δεδομένων, επιλέγουμε Generate Scripts από το αναδυόμενο μενού της Εικόνας 2.8 και, έτσι, φανερώνεται ένας οδηγός όπου αυτόματα παράγονται οι ανάλογες εντολές SQL, οι οποίες μπορούν να δημιουργήσουν τα υπόλοιπα στοιχεία της βάσης που φτιάξαμε με γραφικό τρόπο, όπως φαίνεται στην Εικόνα 2.9.

Εικόνα 2.9

 


Εικόνα 2.10

ΠΡΟΣΟΧΗ! Το Management studio πρέπει να αναγνωρίζει σε ποια βάση δεδομένων θα εκτελέσει το κάθε ερώτημα. Γι αυτό, πρέπει, μετά τη δημιουργία της βάσης, είτε να δηλώσουμε στην αρχή του ερωτήματος ότι χρησιμοποιούμε/ εργαζόμαστε στην βάση δεδομένων DVDclub (με τη χρήση της δήλωσης «use DVDclub») είτε να δηλώνουμε κάθε φορά την πλήρη διαδρομή ονόματος του κάθε πίνακα (π.χ DVDclub.dbo.ΔΙΣΚΟΣ). Σημειώνεται ότι η δήλωση dbo είναι μία προκαθορισμένη συντόμευση του Management Studio για τον ιδιοκτήτη της βάσης δεδομένων (DataBase Owner), o οποίος έχει και τα πλήρη δικαιώματα διαχείρισης της υπό εξέτασης βάσης δεδομένων.

 

Πίνακας Περιεχομένων / Περιεχόμενα Κεφαλαίου

 

2.1.3. Διαγραφή μίας βάσης με κώδικα SQL

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

Πίνακας Περιεχομένων / Περιεχόμενα Κεφαλαίου

 

2.2. Βασικές Έννοιες και Δημιουργία Πινάκων

Οι σχεσιακές βάσεις δεδομένων χρησιμοποιούν τις σχέσεις ή, αλλιώς, τους πίνακες για την αναπαράσταση των δεδομένων τους (Hoffer, Venkatarama, & Topi, 2013· Μανωλόπουλος, & Παπαδόπουλος, 2006). Ο κάθε πίνακας έχει ένα μοναδικό όνομα και προσδιορίζεται από ένα σύνολο γραμμών και στηλών. Κάθε γραμμή ενός πίνακα αναπαριστά μια εγγραφή (record) δεδομένων. Οι στήλες του πίνακα ορίζουν τα χαρακτηριστικά της κάθε εγγραφής. Για κάθε χαρακτηριστικό υπάρχει ένα σύνολο επιτρεπτών τιμών, το οποίο καλείται «πεδίο ορισμού του χαρακτηριστικού». Για τον πλήρη προσδιορισμό του πεδίου ορισμού ενός χαρακτηριστικού είναι απαραίτητο να γνωρίζουμε τον τύπο δεδομένων του (data type) και τη μορφοποίηση του. Οι βασικοί τύποι δεδομένων του SQL Server αναλύονται στη επόμενη υποενότητα.

2.2.1. Τύποι Δεδομένων

Στον SQL Server κάθε στήλη ενός πίνακα σχετίζεται με ένα τύπο δεδομένων, ο οποίος αποτελεί ένα χαρακτηριστικό που προσδιορίζει το είδος των δεδομένων (integer, character, date κτλ.). Ο Πίνακας 2.1 παρέχει τις περιγραφές των βασικών κατηγοριών των τύπων δεδομένων που υποστηρίζει ο SQL Server και τις περιγραφές των βασικών τύπων δεδομένων που περιέχει κάθε κατηγορία:

Κατηγορία

Περιγραφή

Τύπος δεδομένων

Περιγραφή

Character

Τα δεδομένα χαρακτήρων αποτελούνται από οποιοδήποτε συνδυασμό γραμμάτων, συμβόλων και αριθμητικών δεδομένων. Για παράδειγμα, έγκυρα δεδομένα χαρακτήρων είναι οι συνδυασμοί “John123” και “(0$%b99”

Char

Τα δεδομένα έχουν το ίδιο σταθερό μήκος (μέχρι 8ΚΒ)

varchar

Τα δεδομένα μπορούν να ποικίλουν στον αριθμό των χαρακτήρων, αλλά το μήκος δεν μπορεί να υπερβαίνει τα 8ΚΒ

Unicode

Περιλαμβάνει όλους τους χαρακτήρες που ορίζονται στα διάφορα σύνολα χαρακτήρων.

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

nchar

Τα δεδομένα πρέπει να έχουν το ίδιο σταθερό μήκος (μέχρι 4000 Unicode χαρακτήρες)

nvarchar

Τα δεδομένα μπορούν να ποικίλουν στον αριθμό των Unicode χαρακτήρων τους (μέχρι 4000 Unicode χαρακτήρες)

Date and
time

Τα δεδομένα ημερομηνίας και ώρας
αποτελούνται από συνδυασμούς ημερομηνίας και ώρας.

datetime

Τα δεδομένα κυμαίνονται από 1η Ιανουαρίου 1753 μέχρι την 31η
Δεκεμβρίου 9999. Συμπεριλαμβάνεται και η ώρα. Π.χ.: 2007-05-08 12:35:29

smalldatetime

Τα δεδομένα κυμαίνονται από 1 Ιανουαρίου 1900 μέχρι την 6η Ιουνίου 2079

Date

Αποθηκεύεται μόνο η ημερομηνία χωρίς την ώρα. Π.χ.: 2007-05-08

Integer

Αποτελούνται από αρνητικούς και θετικούς αριθμούς όπως τους -15, 0, 5 και 2.507.

bigint

Τα δεδομένα είναι αριθμοί
από -2^63 μέχρι το 2^63-1.
(8 bytes)

int

Τα δεδομένα είναι αριθμοί από το -2.147.483.648 μέχρι το 2.147.483.647 (4 bytes)

smallint

Τα δεδομένα είναι αριθμοί από το -32.768 μέχρι το 32.767. (2 bytes)

tinyint

Τα δεδομένα είναι αριθμοί από το
0 μέχρι το 255. (1 byte)

Decimal

Δεκαδικός αριθμός με απόλυτη ακρίβεια.

decimal - numeric

Παράμετροι του είναι πόσα ψηφία θέλουμε πριν και μετά την υποδιαστολή. Π.χ. Decimal (9,2)

Floating
point

Τα προσεγγιστικά αριθμητικά δεδομένα βασίζονται στην ακρίβεια που προσφέρει το δυαδικό αριθμητικό σύστημα

float

Τα δεδομένα είναι floating-point αριθμοί από -1,79E + 308 μέχρι 1,79Ε + 308.

real

Τα δεδομένα είναι floating-point αριθμοί από -3,40E + 308 μέχρι 3,40Ε + 308.

Πίνακας 2.1

Πίνακας Περιεχομένων / Περιεχόμενα Κεφαλαίου


2.2.2. Χρήσιμες συμβουλές για τους τύπους δεδομένων

Υπάρχουν πολλοί τύποι δεδομένων που παρουσιάζουν ελάχιστες διαφορές αλλά κάνουν την ίδια δουλειά. Ενδέχεται, σε πολύ εξειδικευμένο στάδιο, να προκαλέσουν προβλήματα ή ζητήματα απόδοσης. Δίνονται, λοιπόν, κάποιες χρήσιμες και πρακτικές συμβουλές που αφορούν τους τύπους δεδομένων:

 


Εικόνα 2.11

Εικόνα 2.12

Εικόνα 2.13

Πίνακας Περιεχομένων / Περιεχόμενα Κεφαλαίου

 

2.2.3. Δημιουργία πινάκων με τον Management Studio

Ο SQL Server υποστηρίζει την δημιουργία σχεσιακών βάσεων δεδομένων, των οποίων το κύριο δομικό συστατικό είναι η σχέση ή, αλλιώς, πίνακας. Μερικές από τις βασικότερες ιδιότητες των πινάκων είναι οι παρακάτω:

Ένα χαρακτηριστικό (ή ένα σύνολο χαρακτηριστικών) ενός πίνακα ονομάζεται πρωτεύον κλειδί (primary key) όταν ταυτοποιεί μοναδικά τις εγγραφές του. Όταν απαιτούνται περισσότερα χαρακτηριστικά ενός πίνακα για να συνθέσουν ένα πρωτεύον κλειδί, κάτι που συμβαίνει συχνά, τότε ονομάζεται σύνθετο (composite).

Τώρα, θα επιχειρήσουμε να δημιουργήσουμε το νέο πίνακα ΤΑΙΝΙΑ με τα ακόλουθα πεδία:

Field

Type

Null

Key

ID

int

 

PRI

Τίτλος

varchar(100)

 

 

Έτος

int

YES

 

Πίνακας 2.2 ΤΑΙΝΙΑ

Προκειμένου να δημιουργήσουμε αυτόν το νέο πίνακα στην βάση μας με γραφικό τρόπο, ανοίγουμε τη δενδρική δομή. Στο αριστερό pane του Management Studio επεκτείνουμε τη βάση δεδομένων DVDclub, όπως φαίνεται στην Εικόνα 2.14. Στη συνέχεια, επεκτείνοντας το φάκελο Tables, βλέπουμε τους πίνακες που δημιουργεί και αποθηκεύει ο SQL Server για κάθε νέα βάση. Κάνουμε δεξί κλικ στο δεξιό τμήμα και επιλέγουμε “New Table…”

 

Εικόνα 2.14

Ανοίγει ο Table Designer, όπως φαίνεται στην Εικόνα 2.15, ο οποίος μας επιτρέπει να σχεδιάσουμε το νέο πίνακα με γραφικό τρόπο. Συμπληρώνουμε τα στοιχεία του Πίνακα 2.2, όπως φαίνεται στην Εικόνα 2.15. Για την επιλογή ενός τύπου δεδομένων, είτε πληκτρολογούμε το όνομά του είτε διαλέγουμε κάποιον από την drop-down λίστα (δεύτερη στήλη). Στη συνέχεια, ορίζουμε το κύριο κλειδί κάνοντας δεξί κλικ στη γραμμή του πεδίου ID και επιλέγουμε “Set Primary Key”. Δίπλα στη γραμμή εμφανίζεται ένα εικονίδιο που αναπαριστά ένα κίτρινο κλειδί. Προσέχουμε σε κάθε πεδίο του πίνακα αν θα επιτρέπουμε NULL τιμές (π.χ. το τικ στην τελευταία στήλη της Εικόνας 2.15 δείχνει ότι το επιτρέπουμε).



Εικόνα 2.15

Παρατηρήστε τις ιδιότητες του υπό εξέταση κάθε φορά πεδίου του πίνακα ΤΑΙΝΙΑ. Για παράδειγμα, όπως φαίνεται στην Εικόνα 2.16, στον ορισμό του μήκους για το πεδίο Τίτλος είχαμε ορίσει μέγεθος 100 (η  τιμή αυτή αφορά bytes). Τέλος, από τη γραμμή εργαλείων σώζουμε τον πίνακα κάνοντας κλικ στο εικονίδιο της δισκέτας. Δίνουμε το όνομα ΤΑΙΝΙΑ στον πίνακα και κλείνουμε το παράθυρο δημιουργίας πίνακα. Στη λίστα με τους πίνακες της βάσης DVDclub μπορούμε να δούμε πλέον τον πίνακα που δημιουργήσαμε.


Εικόνα 2.16


Μπορούμε να επαναλάβουμε το ίδιο για τη δημιουργία του πίνακα ΠΕΛΑΤΗΣ, με την ακόλουθη μορφή:

Field

Type

Null

Key

ID

Int

 

PRI

Όνομα

Varchar(30)

 

 

Τηλέφωνο

Varchar(10)

YES

 

Πίνακας 2.3 ΠΕΛΑΤΗΣ

Πίνακας Περιεχομένων / Περιεχόμενα Κεφαλαίου

 

2.2.4. Δημιουργία πινάκων με κώδικα της SQL

Εναλλακτικά, χρησιμοποιώντας τον κώδικα της SQL, θα δημιουργήσουμε τον πίνακα ΣΥΝΤΕΛΕΣΤΗΣ με την ακόλoυθη μορφή:

Field

Type

Null

Key

ID

Int

 

PRI

Όνομα

Varchar(50)

 

 

Πίνακας 2.4 ΣΥΝΤΕΛΕΣΤΗΣ

Ανοίγουμε τον Query Editor και προσέχουμε η ενεργή/ επιλεγμένη βάση να είναι η DVDclub. Συνεπώς, μπορούμε να πληκτρολογήσουμε τον παρακάτω κώδικα για να δημιουργήσουμε τον πίνακα ΣΥΝΤΕΛΕΣΤΗΣ με τους δύο ακόλουθους εναλλακτικούς τρόπους:

 

1ος τρόπος:

CREATE TABLE ΣΥΝΤΕΛΕΣΤΗΣ
(
ID int NOT NULL,
Όνομα varchar(50) NOT NULL,
PRIMARY KEY (ID)
)

2ος τρόπος:

CREATE TABLE ΣΥΝΤΕΛΕΣΤΗΣ
(
ID int PRIMARY KEY
Όνομα varchar (50) NOT NULL
)

Σχετικά με τον πρώτο τρόπο σύνταξης, θα πρέπει να τονίσουμε ότι το NOT NULL στο χαρακτηριστικό ID είναι προαιρετικό, γιατί δηλώνεται, στη συνέχεια, ως πρωτεύον κλειδί και δεν θα είναι ποτέ NULL. Για να εκτελέσουμε τον παραπάνω κώδικα, πατάμε είτε στην εργαλειοθήκη το κουμπί Execute είτε στο πληκτρολόγιο το F5, προσέχοντας ότι έχουμε επιλέξει τη βάση DVDclub και όχι τη master. Κάνοντας δεξί κλικ πάνω από τον φάκελο Tables και στη συνέχεια επιλέγοντας Refresh, βλέπουμε τους τρεις πίνακες που έχουμε ήδη δημιουργήσει. Αν θέλουμε να αλλάξουμε οτιδήποτε στη σχεδίαση ενός πίνακα, τον επιλέγουμε με δεξί κλικ και κάνουμε κλικ στην επιλογή Design, όπως φαίνεται στην Εικόνα 2.17.

Εικόνα 2.17

Στη συνέχεια, θα δημιουργήσουμε τον πίνακα ΔΙΣΚΟΣ. Τονίζεται ότι για πρώτη φορά θα ορίσουμε και μια συσχέτιση μεταξύ δύο πινάκων. Η συσχέτιση αφορά τον πίνακα ΔΙΣΚΟΣ με τον πίνακα ΤΑΙΝΙΑ. Όπως αναφέραμε και στο μοντέλο Οντοτήτων-Συσχετίσεων, μπορούν να υπάρχουν πολλά αντίγραφα ενός δίσκου dvd για την ίδια ταινία. Συνεπώς, το πρωτευόν κλειδί (ID) του πίνακα ΤΑΙΝΙΑ θα πρέπει να μπορεί να εμφανίζεται πολλές φορές ως χαρακτηριστικό (IDΤαινίας) του πίνακα ΔΙΣΚΟΣ. Στη περίπτωση αυτή, το πρωτεύον κλειδί του πίνακα ΤΑΙΝΙΑ αποτελεί ξένο κλειδί (foreign key) για τον πίνακα ΔΙΣΚΟΣ.

 Ο πίνακας ΔΙΣΚΟΣ έχει την ακόλουθη μορφή:

Field

Type

Null

Key

ID

Int

 

PRI

IDΤαινίας

Int

 

 

Τύπος

Varchar(4)

 

 

Τιμή

decimal (9,2)

 

 

Πίνακας 2.5 ΔΙΣΚΟΣ

Επιστρέφουμε στον Query Editor. Προσέχουμε η επιλεγμένη βάση να είναι η DVDclub. Σβήνουμε από τον editor όλα τα περιεχόμενα. Για να δημιουργήσουμε τον πίνακα ΔΙΣΚΟΣ επιλέγουμε έναν από τους δύο τρόπους που παρουσιάζουμε παρακάτω:

1ος τρόπος:

CREATE TABLE ΔΙΣΚΟΣ
(
ID int,
IDΤαινίας int NOT NULL,
Τύπος varchar(4) NOT NULL,
Τιμή decimal(9,2) NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (IDΤαινίας) REFERENCES ΤΑΙΝΙΑ(ID) on delete cascade
)

2ος τρόπος:
CREATE TABLE ΔΙΣΚΟΣ
(
ID int PRIMARY KEY,
IDΤαινίας int REFERENCES ΤΑΙΝΙΑ(ID) ON DELETE CASCADE,
Τύπος varchar(4) NOT NULL,
Τιμή decimal(9,2) NOT NULL
)

Ο περιορισμός ξένου κλειδιού (FOREIGN KEY constraint) ορίζει μια συσχέτιση μεταξύ δύο πινάκων (Μανωλόπουλος, & Παπαδόπουλος, 2006· Ramakrishnan, & Gehrke, 2003). Το κύριο κλειδί ενός πίνακα γίνεται ξένο κλειδί σε έναν άλλο πίνακα. Συνεπώς, δημιουργείται μία συσχέτιση ένα προς πολλά. Ο περιορισμός ξένου κλειδιού αποτρέπει ενέργειες που αφήνουν «ορφανές» εγγραφές σε ένα ξένο κλειδί/ πεδίο ενός πίνακα όταν αυτό το πεδίο αναφέρεται σε ένα κύριο κλειδί ενός άλλου πίνακα (Αναφορική Ακεραιότητα).

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

Η χρήση του ON DELETE ελέγχει την περίπτωση διαγραφής μιας εγγραφής του πίνακα ΤΑΙΝΙΑ. Υπάρχουν οι εξής επιλογές:

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

 

Πίνακας Περιεχομένων / Περιεχόμενα Κεφαλαίου

2.2.5. Συσχετίσεις/Relationships Πινάκων

Στην Ενότητα 2.2.4 ο πίνακας ΔΙΣΚΟΣ συσχετίστηκε με τον πίνακα ΤΑΙΝΙA μέσω του πεδίου IDΤαινίας. Αν δεν είχαμε κάνει τη συσχέτιση των δύο πινάκων (της προηγούμενης ενότητας) αλλά είχαμε δημιουργήσει μόνο τους πίνακες, τότε, προκειμένου να δημιουργήσουμε την ίδια συσχέτιση με γραφικό τρόπο, πρέπει να επεκτείνουμε το φάκελο Tables, να κάνουμε δεξί κλικ πάνω στον πίνακα ΔΙΣΚΟΣ και, τέλος, κλικ στην επιλογή Design. Αφού ανοίξει ο Table Designer, με δεξί κλικ οπουδήποτε πάνω στην σχεδίαση επιλέγουμε Relationships, όπως φαίνεται στην Εικόνα 2.18.

Εικόνα 2.18

Στη συνέχεια εμφανίζεται το αρχικό παράθυρο της Εικόνας 2.19. Πατώντας στο κουμπί ΑDD μπορούμε να δημιουργήσουμε τη συσχέτιση με γραφικό τρόπο. Αρχικά μετονομάζουμε τη συσχέτιση σε FK_ ΔΙΣΚΟΣ_TAINIA. Στη συνέχεια κάνουμε κλικ στην επιλογή Tables and Columns Specification. Εμφανίζεται το αναδυόμενο παράθυρο της Εικόνας 2.19, στο οποίο δηλώνουμε τον κύριο πίνακα με το κύριο κλειδί του (ΤΑΙΝΙΑ.ID), καθώς και τον εξαρτώμενο πίνακα με το ξένο κλειδί (ΔΙΣΚΟΣ.IDΤαινίας).



Εικόνα 2.19

Μ’ αυτόν τον τρόπο, στον πίνακα ΔΙΣΚΟΣ ορίζουμε το πεδίο IDΤαινίας να είναι ξένο κλειδί του πεδίου ID στον πίνακα ΤΑΙΝΙΑ. Έτσι, δεν θα μπορεί να εισαχθεί μια τιμή στο πεδίο IDΤαινίας του πίνακα ΔΙΣΚΟΣ, αν αυτή προηγουμένως δεν έχει εισαχθεί στο πεδίο ID του πίνακα ΤΑΙΝΙΑ.

Τέλος, όπως φαίνεται στην Εικόνα 2.20, μπορούμε και με γραφικό τρόπο να κάνουμε χρήση του DELETE Rule, με επιλογές παρόμοιες με αυτές που αναφέρθηκαν στην Ενότητα 2.2.4 (π.χ. No Action, Cascade, Set Null, Set Default). Αντίστοιχα, η χρήση της ρύθμισης Update Rule αφορά την περίπτωση που γίνεται update στο κύριο κλειδί του κύριου πίνακα.

Εικόνα 2.20

Πίνακας Περιεχομένων / Περιεχόμενα Κεφαλαίου

 

2.2.6. Δημιουργία πινάκων με τον Database Diagrams

Κάνοντας δεξί κλικ πάνω στον φάκελο Database Diagrams, όπως φαίνεται στην Εικόνα 2.21, δημιουργούμε ένα νέο διάγραμμα, στο οποίο μπορούμε με οπτικό τρόπο να ορίσουμε τη δομή και τις συσχετίσεις των πινάκων της βάσης δεδομένων μας.

Εικόνα 2.21

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

Εικόνα 2.22


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


Εικόνα 2.23

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

Εικόνα 2.24

Μπορούμε τώρα να προχωρήσουμε στη δημιουργία του πίνακα ΕΝΟΙΚΙΑΣΗ, ο οποίος θα έχει την ακόλουθη μορφή:

Field

Type

Null

Key

IDΠελάτη

int

 

PRI

IDΔίσκου

int

 

PRI

Από

date

 

 

Έως

date

YES

 

Πίνακας 2.6 ΕΝΟΙΚΙΑΣΗ

Στον πίνακα ΕΝΟΙΚΙΑΣΗ το κύριο κλειδί αποτελείται από περισσότερα του ενός πεδία (IDΠελάτη, IDΔίσκου). Σε αυτήν την περίπτωση, επιτρέπεται να υπάρχουν διπλές τιμές στο ίδιο πεδίο. Όμως, κάθε συνδυασμός των τιμών των δύο πεδίων που αποτελούν το κύριο κλειδί πρέπει να είναι μοναδικός. Μ’ αυτόν τον τρόπο, ο σχεδιασμός δεν επιτρέπει ο ίδιος πελάτης να ενοικιάσει δεύτερη φορά μια ταινία. Πρέπει να επισημάνουμε ότι η στήλη IDΠελάτη είναι ξένο κλειδί προς τη στήλη ID του πίνακα ΠΕΛΑΤΗΣ, ενώ η στήλη IDΔίσκου είναι ξένο κλειδί προς τη στήλη ID του πίνακα ΔΙΣΚΟΣ.

Προκειμένου να φτιάξουμε τον πίνακα ΕΝΟΙΚΙΑΣΗ μέσα από το περιβάλλον του Database Diagrams, είτε κάνουμε κλικ στο κουμπί New Table στην γραμμή εργαλείων είτε κάνουμε δεξί κλικ στο διάγραμμα και επιλέγουμε New Table. Στο παράθυρο διαλόγου Choose Name επιλέγουμε το όνομα ΕΝΟΙΚΙΑΣΗ και πατάμε ΟΚ. Στο αναδυόμενο παράθυρο (που μοιάζει με αυτό του Table Designer) προσθέτουμε τα στοιχεία για τα πεδία και ορίζουμε το κύριο κλειδί. Η επιλογή των δύο πεδίων γίνεται κρατώντας πατημένο το πλήκτρο Ctrl και ταυτόχρονα κάνοντας δεξί κλικ πάνω τους και κλικ στο Set Primary Key. Τότε, τα δύο πεδία εμφανίζονται με σκίαση, όπως φαίνεται στην Εικόνα 2.25:

Εικόνα 2.25

Για να συσχετίσουμε τον πίνακα ΠΕΛΑΤΗΣ με τον πίνακα ΕΝΟΙΚΙΑΣΗ, επιλέγουμε το πεδίο ID του πίνακα ΠΕΛΑΤΗΣ (κρατώντας πατημένο το ποντίκι στο εικονίδιο με το κίτρινο κλειδί) και το μεταφέρουμε (με drag & drop) πάνω από το πεδίο IDΠελάτη του πίνακα ΕΝΟΙΚΙΑΣΗ. Εμφανίζεται, έτσι, το παράθυρο της Εικόνας 2.26, με τα πεδία που συμμετέχουν στη συσχέτιση να είναι προεπιλεγμένα.

Εικόνα 2.26

Επιλέγουμε ΟΚ και, στη συνέχεια, επεκτείνουμε την επιλογή Insert and Update Specification. Επιλέγουμε Cascade, το οποίο αφορά στο τι θα γίνει σε περίπτωση αλλαγής (update) της τιμής κύριου κλειδιού, όπως φαίνεται στην Εικόνα 2.27.



Εικόνα 2.27


Κατά τον ίδιο τρόπο συσχετίζουμε τον πίνακα ΔΙΣΚΟΣ με τον πίνακα ΕΝΟΙΚΙΑΣΗ με βάση τα πεδία (ΔΙΣΚΟΣ.Id) και (ΕΝΟΙΚΙΑΣΗ.IDΔίσκου). Η τρέχουσα κατάσταση του Database Diagram φαίνεται στην Εικόνα 2.28.


Εικόνα 2.28

Στη συνέχεια θα δημιουργήσουμε τον πίνακα ΡΟΛΟΣ, όπου θα καταγράφονται οι διαφορετικοί τύποι συμμετοχής ενός συντελεστή σε μια ταινία (π.χ. ηθοποιός, σκηνοθέτης, ηχολήπτης, κτλ.). Προκειμένου να δημιουργήσουμε τον πίνακα ΡΟΛΟΣ (έτσι όπως φαίνεται στον Πίνακα 2.8), κάνουμε δεξί κλικ μέσα στο Database Diagram, επιλέγουμε New Table και δίνουμε το όνομα ΡΟΛΟΣ. Στην φόρμα που θα εμφανιστεί συμπληρώνουμε τα στοιχεία του Πίνακα 2.8. Για την επιλογή ενός τύπου δεδομένων, είτε πληκτρολογούμε το όνομά του είτε διαλέγουμε κάποιον από την drop-down λίστα της δεύτερης στήλης. Στη συνέχεια, ορίζουμε το κύριο κλειδί κάνοντας δεξί κλικ στη γραμμή του πεδίου ID και επιλέγουμε “Set Primary Key”. Επίσης, σε κάθε πεδίο του πίνακα προσέχουμε  αν θα επιτρέπουμε NULL τιμές.

Field

Type

Null

Key

ID

Int

 

PRI

Περιγραφή

Varchar(25)

 

 

Πίνακας 2.8 ΡΟΛΟΣ

Τέλος, θα δημιουργήσουμε τον πίνακα Τ_Σ_Ρ, που συσχετίζει τον πίνακα ΤΑΙΝΙΑ, με τον πίνακα ΣΥΝΤΕΛΕΣΤΗΣ και τον πίνακα ΡΟΛΟΣ, έχοντας ένα τριπλό σύνθετο κύριο κλειδί, όπως φαίνεται στον Πίνακα 2.9. Σημειώνεται ότι η στήλη IDΤαινίας είναι ξένο κλειδί προς τη στήλη ID του πίνακα ΤΑΙΝΙΑ, η στήλη IDΣυντελεστή είναι ξένο κλειδί προς τη στήλη ID του πίνακα ΣΥΝΤΕΛΕΣΤΗΣ και η στήλη IDΡόλου είναι ξένο κλειδί προς την στήλη ID του πίνακα ΡΟΛΟΣ.

Field

Type

Null

Key

IDΤαινίας

Int

 

PRI

IDΣυντελεστή

Int

 

PRI

IDΡόλου

Int

 

PRI

Πίνακας 2.9 Τ_Σ_Ρ

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

Μετά από τις τελευταίες δύο προσθήκες πινάκων (Τ_Σ_Ρ και ΡΟΛΟΣ) το τελικό σχήμα της βάσης δεδομένων μας είναι αυτό που φαίνεται στην Εικόνα 2.2, η οποία παρουσιάζεται ξανά αμέσως μετά (όπως φαίνεται στην Εικόνα 2.29) για λόγους εύκολης και άμεσης αναγνωσιμότητας.


Εικόνα 2.29

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

ALTER TABLE ΠΕΛΑΤΗΣ
ADD COLUMN Ημερομηνία_Γέννησης DATE NOT NULL

ALTER TABLE ΠΕΛΑΤΗΣ
DROP COLUMN Ημερομηνία_Γέννησης

Σε αυτό το παράδειγμα, εφαρμόζουμε αλλαγές στον πίνακα ΠΕΛΑΤΗΣ προσθέτοντας τη στήλη Ημερομηνία_Γέννησης και στη συνέχεια, διαγράφουμε τη στήλη.

Επίσης, μπορούμε να διαγράψουμε πίνακες από τη βάση δεδομένων που έχουμε δημιουργήσει με τη σύνταξη του παρακάτω ερωτήματος, με το οποίο διαγράφουμε τον πίνακα ΕΝΟΙΚΙΑΣΗ:

DROP Table ΕΝΟΙΚΙΑΣΗ (RESTRICT ή CASCADE)

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

 

Πίνακας Περιεχομένων / Περιεχόμενα Κεφαλαίου

 

2.3. Εισαγωγή τιμών στους πίνακες

2.3.1. Εισαγωγή τιμών στους πίνακες με το Management Studio

Θα επιχειρήσουμε τώρα να εισάγουμε τις ακόλουθες εγγραφές στον πίνακα ΤΑΙΝΙΑ:

IDΤαινίας

Τίτλος

Χρονιά

1

Rear Window

1954

2

Psycho

1960

3

Ben-Hur

1959

Πίνακας 2.8 ΤΑΙΝΙΑ

 

Είμαστε στην κονσόλα του Management Studio και βλέπουμε τους πίνακες της βάσης DVDclub. Κάνουμε δεξί κλικ στον πίνακα ΤΑΙΝΙΑ. Επιλέγουμε Edit Top 200 Rows, όπως φαίνεται στην Εικόνα 2.30.

Εικόνα 2.30

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

Εικόνα 2.31


Επαναλαμβάνουμε τα προηγούμενα βήματα για να εισάγουμε τις ακόλουθες τιμές στον πίνακα ΣΥΝΤΕΛΕΣΤΗΣ:


ID

Όνομα

1

Alfred Hitchcock

2

Grace Kelly

3

Anthony Perkins

Πίνακας 2.9 ΣΥΝΤΕΛΕΣΤΗΣ

 

Επίσης, για τον πίνακα ΡΟΛΟΣ εισάγουμε τις ακόλουθες τιμές:

ID

Περιγραφή

1

Σκηνοθέτης

2

Ηθοποιός

Πίνακας 2.9 ΡΟΛΟΣ


Επαναλαμβάνουμε τα προηγούμενα βήματα για να εισάγουμε τις ακόλουθες τιμές στον πίνακα ΠΕΛΑΤΗΣ:


ID

Όνομα

Τηλέφωνο

1

Perkins

246801

2

Καντακουζηνός

246801

3

Παλαιολόγος

987654

Πίνακας 2.10 ΠΕΛΑΤΗΣ


Τέλος, επαναλαμβάνουμε τα προηγούμενα βήματα για να εισάγουμε τις ακόλουθες τιμές στον πίνακα Τ_Σ_Ρ:

IDΤαινίας

IDΣυντελεστή

IDΡόλου

1

1

1

2

1

2

1

2

1

2

3

2

Πίνακας 2.11 Τ_Σ_Ρ

Πίνακας Περιεχομένων / Περιεχόμενα Κεφαλαίου

 


2.3.2. Εισαγωγή τιμών στους πίνακες με εντολές SQL

Η δήλωση INSERT, χρησιμοποιείται για να προσθέσει μια νέα γραμμή (ή γραμμές) σε έναν πίνακα. Θα εισάγουμε τις ακόλουθες τιμές στον πίνακα ΔΙΣΚΟΣ:

ID

IDΤαινίας

Τύπος

Τιμή

1

1

BLU-RAY

2

2

1

DVD

3

3

2

BLU-RAY

2

Πίνακας 2.12 ΔΙΣΚΟΣ

Μεταβαίνουμε στο Management Studio και επιλέγουμε από την μπάρα εργαλείων New Query. Η ίδια επιλογή μπορεί να γίνει με δεξί κλικ στην database DVDclub και κλικ στο New Query, όπως φαίνεται στην Εικόνα 2.32.

Εικόνα 2.32

Δίνουμε την παρακάτω εντολή, η οποία φαίνεται και στην Εικόνα 2.33:

INSERT INTO ΔΙΣΚΟΣ
(ID, IDΤαινίας, Τύπος, Τιμή)
VALUES (4, 1, 'BLU-RAY', 2)
GO


Εικόνα 2.33

Επιλέγουμε EXECUTE/F5 για εκτέλεση. Η εγγραφή θα εισαχθεί (εκτός απροόποτου) στο παράθυρο Messages, οπότε  θα δούμε το μήνυμα (1 row(s) affected), όπως φαίνεται στην Εικόνα 2.33.

 

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

INSERT INTO ΔΙΣΚΟΣ
VALUES (2, 1, 'DVD', 3)
GO

Επίσης, μπορούμε να αλλάξουμε τη σειρά με την οποία δηλώνουμε τα ορίσματα. Για παράδειγμα:

INSERT INTO ΔΙΣΚΟΣ
(ID, IDΤαινίας, Τιμή, Τύπος)
VALUES (3, 2, 2, 'BLU-RAY')
GO

Για να ελέγξουμε αν εισήχθησαν σωστά οι εγγραφές στον πίνακα ΔΙΣΚΟΣ, κάνουμε δεξί κλικ στον πίνακα και επιλέγουμε την εντολή «Select Top 1000 Rows», όπως φαίνεται στην Εικόνα 2.34.

Εικόνα 2.34


Στην Εικόνα 2.35 βλέπουμε τις τιμές των πεδίων του πίνακα ΔΙΣΚΟΣ, καθώς και το ερώτημα SQL , το οποίο συντάσσετε αυτόματα από το Management Studio.

Εικόνα 2.35

Επαναλαμβάνουμε τα προηγούμενα βήματα για την εισαγωγή των ακόλουθων εγγραφών στον πίνακα ΕΝΟΙΚΙΑΣΗ, προσέχοντας ιδιαίτερα να γράφουμε πρώτα το μήνα και μετά την ημέρα:

IDΠελάτη

IDΔίσκου

Από

Εώς

1

1

07/10/2006

09/10/2006

1

2

09/20/2006

11/20/2006

2

1

09/10/2006

Null

Πίνακας 2.13 ΕΝΟΙΚΙΑΣΗ


INSERT INTO ΕΝΟΙΚΙΑΣΗ
(IDΠελάτη, IDΔίσκου, Από, Έως)
VALUES (1, 1, '07/10/2006', '09/10/2006')
GO

INSERT INTO ΕΝΟΙΚΙΑΣΗ
(IDΠελάτη, IDΔίσκου, Από, Έως)
VALUES (1, 2, '09/20/2006', '11/20/2006')
GO

Αν παραλείψουμε ένα όρισμα, τότε στο αντίστοιχο πεδίο εισάγεται η τιμή NULL, εφόσον, βέβαια, δεν υπάρχει περιορισμός NOT NULL για αυτό το πεδίο. Για παράδειγμα:

INSERT INTO ΕΝΟΙΚΙΑΣΗ
(IDΠελάτη, IDΔίσκου, Από)
VALUES (2, 1, '09/10/2006')
GO

Αν δοκιμάσουμε να εκτελέσουμε μαζί τις εντολές και όχι ξεχωριστά, τότε το αποτέλεσμα θα φαίνεται όπως αυτό της Εικόνας 2.36:

Εικόνα 2.36

                Τέλος, προκειμένου να εισάγουμε την τέταρτη εγγραφή του πίνακα 2.13, πρέπει να εκτελέσουμε την παρακάτω εντολή:

INSERT INTO ΕΝΟΙΚΙΑΣΗ
(IDΠελάτη, IDΔίσκου, Από, Έως)
VALUES (2, 2, '09/30/2006', '9/30/2006')
GO

 

Πίνακας Περιεχομένων / Περιεχόμενα Κεφαλαίου

 

2.4. Αλλαγή σε δεδομένα πινάκων

Τα δεδομένα στους πίνακες μπορούν να αλλάζουν ή να διαγράφονται. Παραθέτουμε εδώ τις δύο βασικές εντολές. Το συγκεκριμένο θέμα θα εξεταστεί πιο αναλυτικά στο Κεφάλαιο 4.

2.4.1. Ενημέρωση δεδομένων

Στην περίπτωση όπου απαιτείται η αλλαγή των τιμών των στηλών ενός πίνακα, χρησιμοποιούμε την εντολή UPDATE, η σύνταξη της οποίας περιγράφεται στη συνέχεια:

UPDATE όνομα_πίνακα
SET πεδίο=νέα_τιμή
WHERE κριτήρια

Η ενημέρωση των δεδομένων αποτυγχάνει στην περίπτωση που μετά από έλεγχο δεν ικανοποιούνται οι περιορισμοί ακεραιότητας. Επίσης, θα πρέπει να δοθεί προσοχή στον τρόπο που θα ορίσουμε τη συνθήκη WHERE, ώστε να προσδιορίσουμε αν θα ενημερωθούν τα δεδομένα σε μία μόνο εγγραφή του πίνακα, προσθέτοντας στη συνθήκη κάποιο κλειδί του πίνακα. Στην περίπτωση που το κλειδί παραλειφθεί, υπάρχει κίνδυνος να αλλοιωθούν τα δεδομένα του πίνακα. Ας υποθέσουμε, λοιπόν, ότι μας ζητείται να αλλάξουμε την ημερομηνία έναρξης ενοικίασης από 09/30/2006 σε 09/29/2006 στην εγγραφή του πίνακα ΕΝΟΙΚΙΑΣΗ που αφορά τον οπτικό δίσκο με κωδικό (IDΔίσκου = 2), ο οποίος ενοικιάστηκε από τον πελάτη με κωδικό (IDΠελάτη=2). Η σύνταξη της εντολής DELETE είναι:

2.4.2.  Διαγραφή δεδομένων

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

 

DELETE FROM όνομα_πίνακα
WHERE κριτήρια

Σ’αυτήν την περίπτωση, γίνεται έλεγχος των περιορισμών ακεραιότητας για την επιτυχή εκτέλεση της διαγραφής. Ας υποθέσουμε, λοιπόν, ότι μας ζητείται να διαγράψουμε την εγγραφή του πίνακα ΕΝΟΙΚΙΑΣΗ που αφορά τον οπτικό δίσκο με κωδικό (IDΔίσκου = 2), ο οποίος ενοικιάστηκε από τον πελάτη με κωδικό (IDΠελάτη=2). Η αντίστοιχη εντολή σε SQL είναι:

DELETE FROM ΕΝΟΙΚΙΑΣΗ
WHERE IDΔίσκου = 2 and IDΠελάτη = 2

Πίνακας Περιεχομένων / Περιεχόμενα Κεφαλαίου

 


2.5. Κώδικας SQL για τη δημιουργία της βάσης δεδομένων DVDclub

Παρακάτω δίνεται ολόκληρος ο κώδικας SQL για τη δημιουργία της βάσης δεδομένων DVDclub, προκειμένου να αποφευχθούν πιθανά προβλήματα λόγω λαθών από την τμηματική εκτέλεση των ερωτημάτων, όπως αυτά αναπτύχθηκαν στις προηγούμενες ενοτήτες. Η πρότασή μας προς τον χρήστη είναι  να διαγράψει τη βάση δεδομένων DVDclub από το σύστημα και να την δημιουργήσει ξανά. Στη συνέχεια, επιλέγοντας ως ενεργή βάση δεδομένων τη DVDclub (όχι τη master) και ανοίγοντας τον Query Editor, να τρέξει τον παρακάτω κώδικα SQL:

Πίνακας Περιεχομένων / Περιεχόμενα Κεφαλαίου

2.6. Ασκήσεις

  1. Να δημιουργήσετε στο περιβάλλον του SQL Server τους παρακάτω πίνακες που αφορούν μια βάση δεδομένων με το όνομα REAL ESTATE για ένα μεσιτικό γραφείο. Λάβετε υπόψη σας ότι με την ενιαία υπογράμμιση ορίζονται τα πρωτεύονται κλειδιά των πινάκων, ενώ με τη διακεκομμένη υπογράμμιση ορίζονται τα ξένα κλειδιά
  2.  

    ΠΕΛΑΤΕΣ (Πελάτης_Id, Όνομα, Περιοχή_Id)

    ΠΕΡΙΟΧΕΣ (Περιοχή_Id, Περιγραφή)

    ΑΚΙΝΗΤΑ(Ακίνητο_Id, Περιοχή_Id, Τύπος, Τετραγωνικά, τιμή_εκκίνησης)

    ΑΓΟΡΑΠΩΛΗΣΙΕΣ (Πελάτης_id, Ακίνητο_id, Ημερομηνία, Ποσό_αγοράς)

  3. Να εισάγετε τις παρακάτω εγγραφές στους αντίστοιχους πίνακες της βάσης δεδομένων REAL ESTATE (που δημιουργήσατε στην άσκηση 1) με τη χρήση εντολών της SQL
  4.  

    Πελάτης_id

    Όνομα

    Περιοχή_id

    1

    ΜIXALIS

    1

    2

    BASILIS

    2

    3

    KOSTAS

    3

     Πίνακας 2.14 ΠΕΛΑΤΕΣ                    

     

     

    Περιοχή _id

    Περιγραφή

    1

    ΚALAMARIA

    2

    KRINI

    3

    PILEA

    Πίνακας 2.15  ΠΕΡΙΟΧΕΣ

  5. Να εισάγετε τις παρακάτω εγγραφές στους αντίστοιχους πίνακες της βάσης δεδομένων REAL ESTATE (που δημιουργήσατε στην άσκηση 1) με γραφικό τρόπο μέσα από το Management Studio
  6.  

    Aκίνητο_id

    Περιοχή_id

    Τύπος

    Τετραγωνικά

    Τιμή_εκκίνησης

    1

    1

    DIAMERISMA

    100

    9000

    2

    2

    KATASTIMA

    150

    14000

    3

    3

    MEZONETA

    200

    19000

    Πίνακας 2.16  AKINHTA

     

    Πελάτης_id

    Aκίνητο_id

    Ημερομηνία

    Ποσό_αγοράς

    2

    1

    1/17/1990

    10000

    2

    2

    2/18/1995

    15000

    Πίνακας 2.17 ΑΓΟΡΑΠΩΛΗΣΙΕΣ

     

     

  7. Χρησιμοποιώντας την εντολή UPDATE της SQL να αλλάξετε την ημερομηνία αγοράς  από 1/17/1990 σε 7/11/2015 στην εγγραφή ου πίνακα ΑΓΟΡΑΠΩΛΗΣΙΕΣ που αφορά το Ακίνητο με κωδικό (Ακίνητο_id = 1), το οποίο αγοράστηκε από τον πελάτη με κωδικό (Πελάτης_id = 2)

  8. Χρησιμοποιώντας της εντολή DELETE της SQL να διαγράψετε την εγγραφή του πίνακα ΑΓΟΡΑΠΩΛΗΣΙΕΣ που αφορά το ακίνητο με κωδικό (Ακίνητο_id = 2), το οποίο αγοράστηκε από τον πελάτη με κωδικό (IDΠελάτη=2).

Πίνακας Περιεχομένων / Περιεχόμενα Κεφαλαίου

 

2.7. Βιβλιογραφία/Αναφορές

Hoffer, J. A., Venkatarama, R., & Topi, H. (2013). Modern Database Management, Prentice Hall.

Μανωλόπουλος, Ι., & Παπαδόπουλος, Α. Ν. (2006). Συστήματα Βάσεων Δεδομένων: Θεωρία & Πρακτική Εφαρμογή, Αθήνα, Εκδόσεις Νέων Τεχνολογιών.

Ramakrishnan, R., & Gehrke, J. (2003). Database Management Systems, McGraw-Hill.

 

Πίνακας Περιεχομένων / Περιεχόμενα Κεφαλαίου

 

 

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 αλλάζει μόνο το τρόπο απεικόνισης των διαστάσεων του κύβου μα