Το σχεσιακό μοντέλο βάσεων δεδομένων



Σχετικά έγγραφα
Το Σχεσιακό μοντέλο και η γλώσσα SQL

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Ενότητα 3:

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Φυσική Σχεδίαση Υλοποίηση βάσης

Εισαγωγή στις βάσεις δεδομένων - Η ανατομία μιας βάσης δεδομένων

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Διάλεξη 07: Σχεσιακό Μοντέλο II (Relational Data Model) Διδάσκων: Παναγιώτης Ανδρέου

Βάσεις Δεδομένων (Databases)

Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 8: RM II. Relational Model. (Chapter )

Βάσεις Δεδομένων (Databases)

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

( Boats)) ( Tempsids, bid. sname. Boats. Boats. Boats. (Reserves)/ > Reserves. Interlake' Sailors) ...

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

Ηλεκτρονικοί Υπολογιστές II

Τμήμα Διοίκησης Επιχειρήσεων

Ενεργές ΒΔ. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Βάσεις Δεδομένων Ενεργές ΒΔ 1

Σχεδίαση Βάσεων Δεδομένων

Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language)

Βάσεις Δεδομένων Η γλώσσα SQL (Structured Query Language) Εισαγωγή στην SQL (2) Ιστορικά Στοιχεία. SQL - Structured Query Language (1)

Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων

Βάσεις Δεδομένων. Ενότητα 6: Γλώσσα Structured Query Language -SQL. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 3ο Μάθημα: Εισαγωγή στην SQL. Δρ. Κωνσταντίνος Χ.

Βάσεις Δεδομένων. Εισαγωγή για το Εργαστήριο. Δρ. Τιάκας Ελευθέριος. Τμήμα Πληροφορικής ΑΠΘ

Εισαγωγή στις Βάσεις Δεδομζνων II


ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Βάσεις Δεδομένων 5η εργαστηριακή άσκηση

Σχεδιασμός Βάσεων Δεδομένων

Σχεδίαση Βάσεων Δεδομένων

Αρχιτεκτονική Συστημάτων Βάσεων Δεδομένων. Κατηγορίες χρηστών ΣΔΒΔ Αρχιτεκτονική ANSI/SPARC Γλώσσες ερωτημάτων Μοντέλα δεδομένων Λειτουργίες ΣΔΒΔ

Πολιτισμική Πληροφορική: Οργάνωση και διαχείριση Πληροφοριών

Διαχείριση χρηστών και δικαιωμάτων

Ηλεκτρονικοί Υπολογιστές II

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9β: SQL (Διαχείριση εγγραφών, Όψεις, Περιορισμοί, Εναύσματα) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής

Σχεδίαση Βάσεων Δεδομένων

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9α: Περιορισμοί (Constraints) Εναύσματα (Triggers) Ευαγγελίδης Γεώργιος Τμήμα Εφαρμοσμένης Πληροφορικής

Βάσεις Δεδομένων Ι SQL Μέρος 3 ο. (Constraints & Joins) Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

(Μέρος 3:Γλώσσα Ορισµού, Γλώσσα Τροποποίησης, Ενσωµατωµένη SQL) Βάσεις εδοµένων Ευαγγελία Πιτουρά 2

2 ο Σύνολο Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Βάσεις Δεδομένων 3η εργαστηριακή άσκηση

Σχεσιακό Μοντέλο Περιορισμοί Μετατροπή ER σε Σχεσιακό Παράδειγμα.. Εργαστήριο Βάσεων Δεδομένων. Relational Model

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Αρχεία και Βάσεις Δεδομένων

Σχεδίαση και Χρήση Βάσεων Δεδομένων. Χρήση του DBDesigner. Γιώργος Πυρουνάκης - forky@di.uoa.gr

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML.

Σχεσιακό Μοντέλο. Σχεδιασμός Βάσεων Δεδομένων Μάθημα 2 ο Μαρία Χαλκίδη

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 2 ο Μάθημα: Βασικά Θέματα Βάσεων Δεδομένων. Δρ. Κωνσταντίνος Χ.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 3) Ουρανία Σμυρνάκη

ΤΙΤΛΟΣ ΕΡΓΑΣΙΑΣ. Πετρογεωργάκης Μανούσος Σπυρόπουλος Σταύρος

Διαχείριση Πολιτισμικών Δεδομένων

ΕΠΛ 342 Βάσεις εδοµένων

Βάσεις Δεδομένων. Εισαγωγή Ανάλυση Απαιτήσεων. Φροντιστήριο 1 ο

Σχεδίαση και λειτουργία βάσης δεδομένων Το παράδειγμα της μαιευτικής κλινικής Ευάγγελος Καρβούνης

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples Ξένου Ρουμπίνη

Σχεσιακό Μοντέλο Δεδομένων

Σχεδιασμός Πληροφοριακών Συστημάτων. Σημειώσεις

SQL Τύποι Δεδομένων Δημιουργία Πίνακα Παράδειγμα.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (1)

ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 3

Παράδειγμα Insert Update Delete Alter.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (2)

Σχεσιακό Μοντέλο. Εισαγωγή. Βάσεις εδοµένων : Σχεσιακό Μοντέλο 1

Έννοιες Διαχείρισης Βάσεων Δεδομένων και Αρχιτεκτονική

ΗΓλώσσαSQL. Εισαγωγή Βασικές Έννοιες Τύποι Δεδομένων Ορισμός Δεδομένων Χειρισμός Δεδομένων

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ Relational Model. SQL Μαθ. #11

Βάσεις δεδομένων. (8 ο μάθημα) Ηρακλής Βαρλάμης

Βάσεις Περιβαλλοντικών Δεδομένων

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - SQL

Το Σχεσιακό Μοντέλο. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Διάλεξη 16: SQL DML IV, SQL DCL, SQL TCL. Διδάσκων: Παναγιώτης Ανδρέου

Τ.Ε.Ι ΘΕΣΣΑΛΟΝΙΚΗΣ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΔΒΔ (ΕΡΓΑΣΤΗΡΙΟ 4) Τελευταία ενημέρωση: 11/2011. Μετασχηματισμός διαγράμματος ER σε σχεσιακό σχήμα ΒΔ

Διάλεξη 02: Βάσεις Δεδομένων Εισαγωγή. Διδάσκων: Παναγιώτης Ανδρέου

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο Διδάσκων Καθ.: Νίκος Τσαπατσούλης

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙI

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ Οµάδα: Α 18/11/2004

Lecture 21: Functional Dependencies and Normalization

Τεχνολογία Πολιτισμικού Λογισμικού

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

Η SQL ως γλώσσα τροποποίησης Δεδομένων

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΒΔ - ΕΙΣΑΓΩΓΗ ΣΤΟ ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ ΣΥΣΧΕΤΙΣΕΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ

Τμήμα Πληροφορικής ΑΠΘ

Εισαγωγή στην πληροφορική

Εισαγωγή στο DBMS Σχεσιακό Μοντέλο Διαγράµµατα ER. Θεσσαλονίκη, Μάρτιος 2010

Βάσεις δεδομένων. (3 ο μάθημα) Ηρακλής Βαρλάμης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

10 η Διάλεξη Python Βάσεις δεδομένων στη python

Διάλεξη 06: Σχεσιακό Μοντέλο I (Relational Data Model) Διδάσκων: Παναγιώτης Ανδρέου

Εισαγωγή στην πληροφορική

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 1: Ορισμοί βασικών εννοιών: Μια πρώτη μοντελοποίηση. Ευαγγελίδης Γεώργιος Τμήμα Εφαρμοσμένης Πληροφορικής

Πληροφοριακά Συστήµατα

PROJECT ΕΡΓΑΣΤΗΡΙΩΝ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ι. Τμήμα Μηχανικών Πληροφορικής Τ.Ε.

Transcript:

ΕΣΔ232 Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας Το σχεσιακό μοντέλο βάσεων δεδομένων Περιεχόμενα Περιεχόμενα - Βιβλιογραφία Ενότητας Εισαγωγή στο σχεσιακό μοντέλο Σχεσιακές γλώσσες ερωτημάτων Περιορισμοί ακεραιότητας Μετατροπή ER διαγράμματος Όψεις Βιβλιογραφία [Ramakrishnan 2002a]: Chapter 3 [Seyed 2007]: Chapters 4 & 5 [Forta 2005]: Chapter 15 [Taylor 2000]: Chapter 7 [Teorey 2005]: Chapter 5 Αθ. Μάργαρης, Πανεπιστήμιο Μακεδονίας: Σχεσιακό Μοντέλο 1

Εισαγωγή στο σχεσιακό μοντέλο Το σχεσιακό μοντέλο δεδομένων είναι μια αναπαράσταση των οντοτήτων και των σχέσεων τους με χρήση δυσδιάσταστων πινάκων Είναι το πλέον διαδεδομένο μοντέλο βάσεων δεδομένων και χρησιμοποιείται σε πάρα πολλά DBMS (συστήματα διαχείρισης βάσεων δεδομένων): IBM, Informix, Microsoft SQL Server, Oracle, Sybase, MySQL. Τα παλαιότερα μοντέλα όπως το ιεραρχικό χρησιμοποιούνται σε πολύ μικρότερο βαθμό π.χ. IBM s IMS Νέος ανταγωνιστής: αντικειμενοστραφές μοντέλο ObjectStore, Versant, Ontos Συνδυασμός σχεσιακού και αντικειμενοστραφούς: αντικειμενο-σχεσιακό μοντέλο (Informix Universal Server, UniSQL, O2, Oracle, DB2) Ορισμοί για σχεσιακές βάσεις δεδομένων Σχεσιακή βάση δεδομένων: Μια βάση δεδομένων στην οποία τα δεδομένων είναι αποθηκευμένα σε δυσδιάστατους (οι πίνακες αυτοί σε πολλές περιπτώσεις ονομάζονται σχέσεις relations-) Ένας πίνακας αποτελείται από δύο τμήματα: Στιγμιότυπο ή υπόδειγμα (Instance): Ένας πίνακας με γραμμές και στήλες Ο αριθμός των γραμμών ονομάζεται πληθυσμός (cardinality) πίνακα, ο αριθμός των στηλών (fields) ονομάζεται βαθμός ή τάξη (degree / arity). Σχήμα πληροφορίας: καθορίζει το όνομα του πίνακα καθώς και το όνομα και τύπο κάθε στηλής. Students (sid: string, name: string, login: string, age: integer, gpa: real). Πρέπει να σκεφτόμαστε τους πίνακες ως σύνολα εγγραφών στα οποία δεν υπάρχουν δύο όμοιες εγγραφές (γραμμές) 2

Παράδειγμα ενός υποδείγματος (instance) του πίνακα Students SID name login age gpa 53666 Jones jones@cs.org 18 3.4 53688 Smith smith@eecs.org 18 3.2 53650 Smith smith@math.org 19 3.8 Πολλαπλότητα (Cardinality) = 3, τάξη (degree) = 5, όλες οι εγγραφές είναι διακριτές Χρειάζεται όλες οι στήλες σε ένα πίνακαναέχουνδιακριτέςτιμέςγια κάθε εγγραφή; Σχεσιακές γλώσσες ερωτημάτων Ένα πολύ ισχυρό πλεονέκτημα του σχεσιακού μοντέλου βάσεων δεδομένων είναι ότι υποστηρίζει απλά ως προς τη σύνταξη αλλά ισχυρά ως προς το αποτέλεσμα ερωτήματα προς τα δεδομένα. Η σύνταξη των ερωτημάτων γίνεται με τη βοήθεια των σχεσιακών γλωσσών ερωτημάτων Τα ερωτήματα μπορούν να γραφούν με διαισθητικό (δηλαδή με τρόπο παρόμοιο με τη λογική του ανθρώπου) και το εκάστοτε σύστημα DBMS είναι υπεύθυνο για την αποτελεσματική εκτέλεση τους. Το βασικό πλεονέκτημα είναι ότι τα ερωτήματα με σημασιολογική αξία (δηλαδή διατύπωση με τρόπο που να εκφράζει το επιθυμητό αποτέλεσμα) 3

ΗγλώσσαSQL Αναπτύχθηκε από την IBM (system R) στις αρχές της δεκαετίας 1970s Υπήρχε ανάγκη προτυποποίησης διότι χρησιμοποιούταν από πολλούς προμηθευτές συστημάτων DBMS Πρότυπα: SQL-86 SQL-89 (μικρή αναθεώρηση) SQL-92 (μεγάλη αναθεώρηση, υφιστάμενο πρότυπο) SQL-99 (σημαντικές προσθήκες, χρησιμοποιείται από ορισμένους προμηθευτές αλλά δεν έχει προτυποποιηθεί ακόμη) Στο παράδειγμα του προηγούμενου πίνακα Students γιαναβρούμεκαινα εμφανίσουμε όλα τα στοιχεία για τους φοιτητές ηλικίας 18 χρονών θα μπορούσαμε να χρησιμοποιήσουμε τις εντολές: SELECT * FROM Students S WHERE S.age=18 Γιαναβρούμεμόνοταονόματακαιτα logins θα χρησιμοποιούσαμε: SELECT S.name, S.login FROM Students S WHERE S.age=18 SID 53666 53688 53650 Ερωτήματα σε πολλαπλούς πίνακες name login age gpa Jones Smith Smith jones@cs.org smith@eecs.org smith@math.org 18 18 19 3.4 3.2 3.8 Με δεδομένους τους πίνακες Students και Enrolled βρείτε τι υπολογίζει το πιο κάτω ερώτημα. SELECT S.name, E.cid FROM Students S, Enrolled E WHERE S.sid=E.sid AND E.grade= A (Είναι δυνατό να έχουμε το στιγμιότυπο του πίνακα Enrolled που φαίνεται δίπλα αν το σύστημα DBMS κάνει έλεγχο ακεραιότητας αναφοράς;) Το αποτέλεσμα του ερωτήματος είναι: 4

Δημιουργία πινάκων στην SQL Στο πιο κάτω παράδειγμα δίνονται οι εντολές για τη δημιουργία του πίνακα Students. Η σχετική εντολή είναι η CREATE TABLE. Παρατηρήστε ότι ο τύπος δεδομένων κάθε στήλης ορίζεται σαφώς. Κάθε φορά που εισάγονται καινούργια δεδομένα στον πίνακα το σύστημα DBMS ελέγχεται η συμβατότητα των δεδομένων με τους ορισθέντες τύπους. CREATE TABLE Students (sid CHAR(20), name CHAR(20), login CHAR(10), age INTEGER, gpa REAL) Ο πιο κάτω πίνακας Enrolled περιέχει πληροφορίες σχετικά με τα μαθήματα στα οποία έχουν εγγραφεί οι φοιτητές. CREATE TABLE Enrolled (sid CHAR(20), cid CHAR(20), grade CHAR(2)) Γιατηδιαγραφήενόςπίνακα(τόσο του στιγμιότυπου όσο και του σχήματος) χρησιμοποιείται η εντολή DROP TABLE. DROP TABLE Students Τροποποίηση και διαγραφή πινάκων Η τροποποίηση του σχήματος ενός πίνακα επιτυγχάνεται με την εντολή ALTER TABLE. ALTER TABLE Students ADD COLUMN firstyear: integer Κάθε υφιστάμενη εγγραφή παίρνει την τιμή NULL για κάθε νέο πεδίο που εισάγεται. Όταν διαγραφεί κάποιο πεδίο οι αντίστοιχες τιμές όλων των εγγραφών διαγράφονται. 5

Προσθήκη και διαγραφή εγγραφών Η εισαγωγή εγγραφών σε ένα πίνακα πραγματοποιείται με την εντολή INSERT INTO: INSERT INTO Students (sid, name, login, age, gpa) VALUES (53688, Smith, smith@eec.org, 18, 3.2) Η διαγραφή εγγραφών πραγματοποιείται με την εντολή DELETE. Στο πιο κάτω παράδειγμα έχουμε διαγραφή όλων των εγγραφών που ικανοποιούν συγκεκριμένη συνθήκη (name = Smith): DELETE FROM Students S WHERE S.name = Smith Υπάρχουν πολλές παραλλαγές των εντολών INSERT INTO και DELETE τις οποίες θα δούμε σε επόμενα μαθήματα. Περιορισμοί ακεραιότητας Περιορισμοί ακεραιότητας (IC - Integrity Constraints) ονομάζονται οι συνθήκες οι οποίες πρέπει να πληρούνται σε κάθε στιγμιότυπο οποιουδήποτε πίνακα υπάρχει στη βάση. Οι περιορισμοί ακεραιότητας: ονομάζονται και περιορισμοί πεδίου (domain constraints), τίθενται όταν ορίζεται το σχήμα ενός πίνακα, ελέγχονται κάθε φορά που τα περιεχόμενα των πινάκων τροποποιούνται Έγκυρο θεωρείται το στιγμιότυπο ενός πίνακα όταν ικανοποιεί όλους τους περιορισμούς ακεραιότητας που έχουν τεθεί. Τα DBMS δεν πρέπει να επιτρέπουν μη έγκυρα στιγμιότυπα πινάκων. Όταν το σύστημα DBMS ελέγχειτουςπεριορισμούςακεραιότηταςτότε τα αποθηκευμένα δεδομένα ανταποκρίνονται περισσότερα πιστά στο σύστημα του πραγματικού κόσμου (π.χ. επιχείρηση) το οποίο μοντελοποιεί η βάση. Αποφεύγονται επίσης και αντικανονικές εισαγωγές δεδομένων στη βάση 6

Περιορισμοί πρωτεύοντος κλειδιού Οι σημαντικότεροι περιορισμοί ακεραιότητας είναι: Περιορισμοί πρωτεύοντος κλειδιού Περιορισμοί υποψήφιου κλειδιού Περιορισμοί ξένου κλειδιού (ή περιορισμοί ακεραιότητας αναφοράς) Ένα σύνολο πεδίων συνιστά κλειδί για ένα πίνακα αν: 1. Καμία εγγραφή δεν έχει τις ίδιες τιμές για όλες τις συνιστώσες του κλειδιού, και 2. Το (1) δεν ισχύει για κάθε μεμονωμένη συνιστώσα (πεδίου) του κλειδιού Αν το (2) δεν ισχύει τότε το συγκεκριμένο κλειδί ονομάζεται υπερκλειδί (superkey). Αν υπάρχουν περισσότερα του ενός κλειδιά τότε ένα εξ αυτών ορίζεται ως πρωτεύον κλειδί. Παράδειγμα: Το πεδίο sid είναι κλειδί για το πίνακα Students. (Το πεδίο name είναι;) Οσυνδυασμός{sid, gpa} είναι ένα υπερκλειδί. Πρωτεύοντα και υποψήφια κλειδιά Υποψήφια κλειδιά ορίζονται ως UNIQUE, ένα από τα υποψήφια κλειδιά ορίζεται ως πρωτεύον κλειδί: CREATE TABLE Enrolled (sid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid, cid)) Ο παραπάνω ορισμός μεταφράζεται ως: Για κάθε ζεύγος φοιτητή μαθήματος υπάρχει ένας μοναδικός βαθμός Αντίθετα ο παρακάτω ορισμός επιτρέπει σε κάθε ένα φοιτητή να παίρνει μόνο ένα μάθημα και σε κανένα φοιτητή να μην έχει ίδιο βαθμόμεοποιοδήποτεάλλοστοίδιομάθημα CREATE TABLE Enrolled (sid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid), UNIQUE (cid, grade)) Περιορισμοί ακεραιότητας που αφορούν πρωτεύοντα κλειδιά (που προκύπτουν ως συνδυασμός πεδίων) πρέπει να ορίζονται προσεκτικά ώστε να μη δημιουργούνται προβλήματα στην εισαγωγή δεδομένων 7

Ξένα κλειδιά και ακεραιότητας αναφοράς Ξένο κλειδί: Είναι ένα σύνολο πεδίων σε ένα πίνακα το οποίο χρησιμοποιείται για αναφορά σε κάποια εγγραφή άλλου πίνακα. Το ξένο κλειδί πρέπει να είναι πρωτεύον κλειδί σε κάποιο άλλο πίνακα. Παράδειγμα: Το πεδίο sid στο πίνακα Enrolled είναι ένα ξένο κλειδί το οποίο αναφέρεται σε εγγραφές του πίνακα Students: Enrolled(sid: string, cid: string, grade: string) Αν όλοι οι περιορισμοί ξένου κλειδιού τηρούνται τότε επιτυγχάνεται ακεραιότητα αναφοράς. Δηλαδή δεν υπάρχουν τυφλές αναφορές. Ξένα κλειδιά στην SQL Μόνο οι φοιτητές που υπάρχουν στον πίνακα Students επιτρέπεται να εγγραφούν σε μαθήματα (επομένως το πεδίο sid του πίνακα Enrolled θα πρέπει να οριστεί ως ξένο κλειδί με αναφορά στο πίνακα Students. CREATE TABLE Enrolled (sid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid,cid), FOREIGN KEY (sid) REFERENCES Students ) 8

Επιβολή ακεραιότητας αναφοράς Θεωρήστε το παράδειγμα των πινάκων Students και Enrolled. Το πεδίο sid στο πίνακα Enrolled είναι ένα ξένο κλειδί το οποίο αναφέρεται σε εγγραφές του πίνακα Students. Τι πρέπει να γίνει αν εισαχθεί μια εγγραφή στο πίνακα Enrolled η οποία έχει στο πεδίο sid τιμή η οποία δεν υπάρχει τον πίνακα Students; Απ.: Η εισαγωγή της εγγραφής πρέπει να απορριφθεί! Τι θα πρέπει να γίνει αν μια εγγραφή του πίνακα Students διαγραφεί; 1. Διαγραφή όλων των εγγραφών στο πίνακα Enrolled οι οποίες κάνουν αναφορά στην εγγραφή αυτή, ή 2. Να μην επιτρέπεται η διαγραφή εγγραφών του πίνακα Students για τις οποίες υπάρχει αναφορά στο πίνακα Enrolled. 3. Να τεθεί το sid στο πίνακα Enrolled σε κάποια προεπιλεγμένη τιμή (ηοποία προφανώς δεν αντιστοιχεί σε κάποια υφιστάμενη τιμή sid) 4. Στην SQL, υπάρχει η δυνατότητα να θέσουμε την τιμή sid στο πίνακα Enrolled σε τιμή NULL (που πρακτικά σημαίνει άγνωστο ή μη εφαρμόσιμο ) Παρόμοιος χειρισμός συμβαίνει όταν έχουμε τροποποίηση της τιμής sid στον πίνακα Students Ακεραιότητα αναφοράς στην SQL Στην SQL υποστηρίζονται 4 επιλογές σε περίπτωση διαγραφής / ενημέρωσης: Default is NO ACTION (ηδιαγραφή/ ενημέρωση απορρίπτεται) CASCADE (διαγραφή /ενημέρωση όλων των εγγραφών οι οποίες κάνουν αναφορά στην εγγραφή που έχει διαγραφεί / ενημερωθεί) SET NULL / SET DEFAULT (η τιμή του ξένου κλειδιού τίθεται σε κάποια τιμή αναφοράς, εκ των προτέρων καθορισμένη) CREATE TABLE Enrolled (sid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid,cid), FOREIGN KEY (sid), REFERENCES Students ON DELETE CASCADE ON UPDATE SET DEFAULT ) 9

Από που προέρχονται οι περιορισμοί ακεραιότητας Οι περιορισμοί ακεραιότητας τίθενται με στόχο τα δεδομένα μας να απεικονίζουνόσοτοδυνατόπιστότεροτονπραγματικόκόσμο. Μπορούμε να ελέγξουμε ένα στιγμιότυπο ενός πίνακα για να δούμε αν κάποιος περιορισμός παραβιάζεται αλλά το αντίθετο δεν είναι αληθές: Το γεγονός ότι σε ένα στιγμιότυπο δεν παραβιάζεται κάποιος περιορισμός δε σημαίνει ότι ο περιορισμός είναι αληθής και δεν μπορεί να παραβιαστεί ποτέ. Ένας περιορισμός ακεραιότητας αφορά όλες τις πιθανές εγγραφές ενός πίνακα. Για παράδειγμα στο πίνακα Students το πεδίο name δεν είναι κλειδί όπως εύκολα μπορούμε να διαπιστώσουμε. Από την άλλη πλευρά μπορούμε να δούμε ότι το πεδίο sid με βάση τις συγκεκριμένες εγγραφές αποτελεί κλειδί αλλά κατά πόσο είναι τέτοιο πρέπει να μας το εγγυηθεί κάποιος τρίτος (ή ο τρόπος δημιουργίας των τιμών του). Τα κλειδιά και ξένα κλειδιά είναι οι πιο διαδεδομένες μορφές περιορισμών. Μετασχηματισμός οντότητας σε πίνακα Μετατροπή ER διαγράμματος CREATE TABLE Employees (ssn CHAR(11), name CHAR(20), lot INTEGER, PRIMARY KEY (ssn)) Κατά το μετασχηματισμό μιας συσχέτισης σε πίνακα τα χαρακτηριστικά / ιδιότητες της οντότητας πρέπει να περιλαμβάνουν: Κλειδιά και ξένα κλειδιά Όλα τα απαιτούμενα χαρακτηριστικά / ιδιότητες. CREATE TABLE Works_In(ssn CHAR(1), did INTEGER, since DATE, PRIMARY KEY (ssn, did), FOREIGN KEY (ssn) REFERENCES Employees, FOREIGN KEY (did) REFERENCES Departments) 10

Περιορισμοί κλειδιού Κάθε τμήμα έχει το πολύ ένα διευθυντή (σύμφωνα με τον περιορισμό κλειδιού της συσχέτισης manages) Πως θα μετατρέψω τη συσχέτιση manages στο σχεσιακό μοντέλο. Απ.: Δημιουργώντας νέο πίνακα στον οποίο πρέπει να περιλαμβάνονται και τα δεδομένα διασταύρωσης (since). Κάθε συσχέτιση: πολλά προς πολλά, ER διαγράμματα με περιορισμούς κλειδιού μετατρέπεται σε πίνακα. Στα πεδία του πίνακα περιλαμβάνονται: 1. Τα δεδομένα διασταύρωσης 2. Ωςξένακλειδιάταπρωτεύοντακλειδιάτωνοντοτήτωνπουσυσχετίζονται 3. Το (2) είναι απαραίτητο για συσχετίσεις πολλά προς πολλά. Σε διαφορετική περίπτωση περιλαμβάνουμε ως ξένο κλειδί μόνο το πρωτεύον κλειδί της οντότητας που βρίσκεται στην πλευρά του 1 στη συσχέτιση. CREATE TABLE Manages (ssn CHAR(11), did INTEGER, since DATE, PRIMARY KEY (did), FOREIGN KEY (ssn) REFERENCES Employees, FOREIGN KEY (did) REFERENCES Departments) Κάθε department έχει ένα μοναδικό manager. Επομένως χρειαζόμαστε μόνο το πρωτεύον κλειδί από τον πίνακα Employees. CREATE TABLE Dept_Mgr(did INTEGER, dname CHAR(20), budget REAL, ssn CHAR(11), since DATE, PRIMARY KEY (did), FOREIGN KEY (ssn) REFERENCES Employees) 11

Περιορισμοί συμμετοχής Στο προηγούμενο παράδειγμα το ερώτημα που τίθεται είναι: Έχουν όλατατμήματα(departments) διευθυντή; Αν ναι τότε έχουμε μια περίπτωση περιορισμού συμμετοχής και λέμε ότι στη συσχέτιση Manages η οντότηταdepartment συμμετέχει ολικά. Κάθε τιμή did στον πίνακα Departments πρέπει να εμφανίζεται σε κάποια εγγραφή του πίνακα Manages (έχοντας μη NULL ssn τιμή) ssn name lot since did dname budget Employee manages Departments Works_in since Περιορισμοί συμμετοχής (2) Οι περιορισμοί συμμετοχής μπορούν να ελεγχθούν σε δύο επίπεδα Ορισμός του ξένου κλειδιού ως μη μηδενική τιμή Με ορισμό ενός trigger το οποίο θα ελέγχει με CHECK ότιοιτιμέςssn υπάρχουν στον πίνακα Students CREATE TABLE Dept_Mgr (did INTEGER, dname CHAR(20), budget REAL, ssn CHAR(11) NOT NULL, since DATE, PRIMARY KEY (did), FOREIGN KEY (ssn) REFERENCES Employees, ON DELETE NO ACTION) 12

Αδύναμες Οντότητες Αδύναμη ονομάζεται μια οντότητα όταν μπορεί να αναγνωριστεί μοναδικά μόνο με τη βοήθεια μιας άλλης οντότητας (η οντότητα αυτή ονομάζεται ιδιοκτήτης owner). Η οντότητα ιδιοκτήτης και η αδύναμη οντότητα πρέπει να συμμετέχουν σε μια συσχέτιση 1 προς πολλά (1 ιδιοκτήτης, πολλές αδύναμες οντότητες). Η αδύναμη οντότητα έχει ολική συμμετοχή στη συσχέτιση. Αδύναμες Οντότητες (2) Η αδύναμη οντότητα και η συσχέτιση της με την οντότητα ιδιοκτήτη μετατρέπονται σε ένα μόνο πίνακα. Όταν η οντότητα ιδιοκτήτης διαγραφεί θα πρέπει να διαγράφονται και όλες οι αδύναμες οντότητες. CREATE TABLE Dep_Policy (pname CHAR(20), age INTEGER, cost REAL, ssn CHAR(11) NOT NULL, PRIMARY KEY (pname, ssn), FOREIGN KEY (ssn) REFERENCES Employees, ON DELETE CASCADE) 13

Όψεις Όψη είναι ένας πίνακας στον οποίο αποθηκεύουμε έναν ορισμό (σε SQL) αντί για εγγραφές: CREATE VIEW YoungActiveStudents (name, grade) AS SELECT S.name, E.grade FROM Students S, Enrolled E WHERE S.sid = E.sid and S.age<21 Μπορούμε να διαγράψουμε Όψεις χρησιμοποιώντας την SQL εντολή DROP VIEW. Τι γίνεται όταν διαγράψουμε ένα πίνακα με την εντολή DROP TABLE και ο πίνακας αυτός χρησιμοποιείται στον ορισμό μιας όψης; ΗεντολήDROP TABLE έχει επιλογές που επιτρέπουν στο χρήστη να χειριστεί αυτό το θέμα. Σύνοψη Το σχεσιακό μοντέλο δεδομένων είναι μια αναπαράσταση των οντοτήτων και των σχέσεων τους με χρήση δυσδιάσταστων πινάκων Είναι η πιο διαδεδομένη μορφή αναπαράστασης δεδομένων. Βασικό χαρακτηριστικό του σχεσιακού μοντέλου είναι οι περιορισμοί (constraints). Οι περιορισμοί τίθενται στη σχεδίαση και υλοποίηση της βάσης από το σχεδιαστή της βάσης και ελέγχονται από το σύστημα διαχείρισης βάσεων δεδομένων (DBMS). Υπάρχουν δύο βασικές κατηγορίες περιορισμών τα πρωτεύοντα (primary) και τα ξένα (foreign) κλειδιά. Επιπλέον των ανωτέρω υπάρχουν και οι περιορισμοί του πεδίου εφαρμογής (π.χ. οι κανόνες μιας επιχείρησης) Γιατοσχεσιακόμοντέλοέχουναναπτυχθεί γλώσσες προγραμματισμού και διαχείρισης της βάσης. Οι γλώσσες αυτές μας επιτρέπουν την υποβολή ερωτημάτων στη βάση και για αυτό ονομάζονται Δομημένες Γλώσσες Ερωτημάτων (SQL) H πλέον διαδεδομένη γλώσσα είναι η SQL-92 ήαπλάsql 14

Παραδείγματα Να λύσετε τις ασκήσεις: 1. 3.8 2. 3.9 3. 3.13 4. 3.16 απότοβιβλίοσας[ramakrishnan 2002a] 15