Βάσεις Δεδομένων σχεσιακών αντικειμένων Βάσεις Δεδομένων Διδάσκων: Μ. Χαλκίδη

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

Kεφ.2: Σχεσιακό Μοντέλο (επανάληψη) Κεφ.6.1: Σχεσιακή Άλγεβρα

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

Ανοικτά Ακαδημαϊκά Μαθήματα

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

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

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

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

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

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

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

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

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

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

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

Ανοικτά Ακαδημαϊκά Μαθήματα

Need for Complex Data Types The O-O Data Model O-O Languages. Persistent C++ Systems. Object-Relational Databases. Object-Oriented Oriented Databases

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

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

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

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

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

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

Βελτιστοποίηση ερωτημάτων Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη

PostgreSQL. Oracle. Εαρινό Εξάμηνο

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

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

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

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

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

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής.

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

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

Θεωρία Κανονικοποίησης

ΘΕΜΑΤΑ. Ερώτηση 1 Κατά τη Φυσική Αποθήκευση (Physical storage) μιας ΒΔ αποθηκεύονται στον δίσκο τα:


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

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

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

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

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

Σχεσιακή Άλγεβρα Σχεδιασμός Βάσεων Δεδομένων

ΗΜΙΟΥΡΓΙΑ USER DEFINED DATATYPES ΣΤΗΝ IBM DB2

DELETE, UPDATE, INSERT.

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

DELETE, UPDATE, INSERT

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Βάσεις Δεδομένων Ι Εξεταστική Περίοδος Φεβρουαρίου 2006

Βάσεις Δεδομένων. Σχεσιακό Μοντέλο Δεδομένων. Βασίλειος Βεσκούκης Ορισμός Βάσης Δεδομένων Δομή Περιορισμοί

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

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

Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

Κεφ 4: Προχωρημένες Εντολές SQL

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

Βάσεις Δεδομένων (Ε) Εισαγωγή στην υλοποίηση σχεσιακών βάσεων δεδομένων

ΕΝΑΥΣΜΑΤΑ ΣΤΗΝ POSTGRES

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

BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2005

SQL Data Manipulation Language

Postgress ΣΤΟΧΟΣ ΣΧΕΤΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ ΥΛΙΚΟ. ΠΕΡΙΒΑΛΛΟΝ ΓΙΑ ΕΞΑΣΚΗΣΗ pgadmin ΥΠΟΒΑΘΡΟ. Συναρτήσεις στην PostgreSQL. 1. Γενικά

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

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

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

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων

Διάλεξη 13: Γλώσσα Επεξεργασίας Δεδομένων/ Data Manipulation Language (SQL DML) I. Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ (Relational Model) Μαθ. #10

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #2

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #3

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

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


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

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

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

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

Βάσεις Δεδομένων Σύνθετα SQL queries. Ψευδώνυμα (Aliases) (2) Ψευδώνυμα (Aliases) (1) Ασάφεια και Πλήρη Ονόματα. Ερώτημα χωρίς τον όρο WHERE (1)

ΙΚΤΥΩΤΟ ΜΟΝΤΕΛΟ (Network Model) Μαθ. # 15

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

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

IBM DB2, Microsoft SQL Server. Εαρινό Εξάμηνο

Σχεδίαση Σχεσιακών ΒΔ

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

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

Βάσεις Δεδομένων Σύνθετα SQL queries

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

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

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

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

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

Transcript:

Βάσεις Δεδομένων σχεσιακών αντικειμένων Βάσεις Δεδομένων Διδάσκων: Μ. Χαλκίδη με βάση slides από A. Silberschatz, H. Korth, S. Sudarshan, Database System Concepts, 5 th edition

Object-Relational Data Models Επέκταση του σχεσιακού μοντέλου συμπεριλαμβάνοντας προσανατολισμό στο αντικείμενο και δομές για να χειριστούμε επιπρόσθετους τύπους δεδομένων. Επιτρέπουν γνωρίσματα εγγραφών να έχουν πολύπλοκους τύπους, συμπεριλαμβανομένου μη ατομικών τιμών όπως εμφωλευμένων σχέσεων. Διατήρηση σχεσιακών αρχών, συγκεκριμένα της δήλωσης προσπέλασης των δεδομένων ενώ επεκτείνουν την ισχύ της μοντελοποίησης. Ανώτερου επιπέδου συμβατότητα με υπάρχουσες σχεσιακές γλώσσες. Βάσεις Δεδομένων, Παν. Πειραιά 2

Εμφωλευμένες σχέσεις (Nested Relations) Κίνητρο Επιτρέπουν μη ατομικά πεδία ορισμού (atomic indivisible) Παραδείγματα μη ατομικών πεδίων ορισμού: set of integers,ή set of tuples Επιτρέπει πιο διαισθητική μοντελοποίηση για εφαρμογές με πολύπλοκους (σύνθετους) τύπους δεδομένων Διαισθητικός ορισμός (Intuitive definition): Επιτρέπει σχέσεις οποτεδήποτε επιτρέπουμε ατομικές (scalar) τιμές σχέσεις μέσα σε σχέσεις Διατηρεί μαθηματικές αρχές του σχεσιακού μοντέλου Παραβιάζει την 1Ν μορφή. Βάσεις Δεδομένων, Παν. Πειραιά 3

Παράδειγμα εμφωλευμένης σχέσης Example: library information system Each book has title, a set of authors, Publisher, and a set of keywords Non-1NF relation books Βάσεις Δεδομένων, Παν. Πειραιά 4

1NF έκδοση της εμφωλευμένης σχέσης 1NF version of books flat-books Βάσεις Δεδομένων, Παν. Πειραιά 5

4NF διάσπαση της εμφωλευμένης σχέσης Μείωση των προβλημάτων της flat-books υποθέτοντας ότι ισχύουν οι ακόλουθες πολλαπλών τιμών εξαρτήσεις : title title title author keyword pub-name, pub-branch Διάσπαση της flat-books σε 4NF χρησιμοποιώντας τα σχήματα: (title, author) (title, keyword) (title, pub-name, pub-branch) Βάσεις Δεδομένων, Παν. Πειραιά 7

4NF διάσπαση του flat books Βάσεις Δεδομένων, Παν. Πειραιά 8

Πρόβλημα με το 4NF Schema 4NF σχεδιασμός απαιτεί οι χρήστες να περιλαμβάνουν joins στις ερωτήσεις τους. 1NF σχεσιακή όψη του flat-books ορίζεται με σύνδεση (join) 4NF relations: Περιορίζει την ανάγκη οι χρήστες να εκτελούν joins, Αλλά χάνουν την 1-1 αντιστοίχιση ανάμεσα σε πλειάδες και έγγραφα. Έχουν μεγαλύτερο ποσοστό πλεονασμού δεδομένων Η φωλιασμένη αναπαράσταση σχέσεων είναι πιο φυσική. Βάσεις Δεδομένων, Παν. Πειραιά 9

Σύνθετοι τύποι και SQL:1999 Οι επεκτάσεις της SQL για να υποστηρίζει σύνθετους τύπους περιλαμβάνουν: Συλλογές και τύπους μεγάλων αντικειμένων Φωλιασμένες σχέσεις είναι ένα παράδειγμα των collection types Δομημένοι τύποι Φωλιασμένες δομές εγγραφών όπως σύνθετα γνωρίσματα Κληρονομικότητα Προσανατολισμός στο αντικείμενο Περιλαμβανομένου προσδιοριστές αντικειμένου και αναφορές SQL:1999 standard Δεν υπάρχει πλήρως υλοποιημένο σε κάποια ΒΔ πρόσφατα Αλλά ορισμένα χαρακτηριστικά παρουσιάζονται σε κάποια από τα βασικά εμπορικά συστήματα ΒΔ Βάσεις Δεδομένων, Παν. Πειραιά 10

Collection Types Set type (not in SQL:1999) create table books (.. keyword-set setof(varchar(20)) ) Sets είναι στιγμιότυπα collection types. Άλλα στιγμιότυπα collection types: Arrays (are supported in SQL:1999) Π.χ author-array varchar(20) array[10] Μπορεί να προσπελάσει στοιχεία ενός πίνακα με το συνήθη τρόπο: Π.χ. author-array[1] Multisets (not supported in SQL:1999) Δηλ., μη ταξινομημένες συλλογές, όπου ένα στοιχείο μπορεί να συμβεί πολλές φορές Nested relations είναι σύνολα από πλειάδες SQL:1999 υποστηρίζει πίνακες πλειάδων (arrays of tuples) Ορισμός πίνακα διαφορετικός από αυτό των σχεσιακών πινάκων Υποστηρίζει σύνολα Βάσεις Δεδομένων, Παν. Πειραιά 11

Δομημένοι τύποι (Structured Types) Δομημένοι τύποι μπορούν να δηλωθούν σε SQL create type Publisher as (name varchar(20), branch varchar(20)) create type Book as (title varchar(20), author-array varchar(20) array [10], pub-date date, publisher Publisher, keyword-set setof(varchar(20))) setof δήλωση συνόλου keyword-set δεν υποστηρίζεται από την SQL:1999 Χρησιμοποιώντας ένα array για να αποθηκεύσουμε συγγραφείς μας επιτρέπει να καταγράψουμε τη σειρά των συγγραφέων Δομημένοι τύποι μπορούν να χρησιμοποιηθούν για να δημιουργήσουμε πίνακες create table books of Book Βάσεις Δεδομένων, Παν. Πειραιά 13

Δομημένοι τύποι (2) Οι δομημένοι τύποι επιτρέπουν να αναπαριστώνται άμεσα σύνθετα γνωρίσματα των E-R diagrams. Unnamed row types μπορούν επίσης να χρησιμοποιηθούν στη SQL:1999 για να ορίσουν σύνθετα γνωρίσματα Π.χ μπορούμε να παραλείψουμε τη δήλωση του τύπου Publisher και να χρησιμοποιήσουμε την ακόλουθη στη δήλωση του τύπου Book publisher row (name varchar(20), branch varchar(20)) Παρόμοια, collection types επιτρέπουν γνωρίσματα πολλαπλών τιμών των E-R diagrams να αναπαρασταθούν άμεσα. Βάσεις Δεδομένων, Παν. Πειραιά 14

Δομημένοι τύποι (3) Μπορούμε να δημιουργήσουμε πίνακες χωρίς να δημιουργήσουμε ενδιάμεσους τύπους For example, the table books could also be defined as follows: create table books (title varchar(20), author-array varchar(20) array[10], pub-date date, publisher Publisher keyword-list setof(varchar(20))) Οι μέθοδοι μπορούν να είναι μέρος του ορισμού ενός δομημένου τύπου: create type Employee as ( name varchar(20), salary integer) method giveraise (percent integer) Δημιουργούμε το σώμα της μεθόδου ξεχωριστά create method giveraise (percent integer) for Employee begin set self.salary = self.salary + (self.salary * percent) / 100; end Βάσεις Δεδομένων, Παν. Πειραιά 15

Δημιουργία τιμών πολύπλοκων τύπων (1) Οι τιμές των δομημένων τύπων δημιουργούνται χρησιμοποιώντας τις constructor functions E.g. Publisher( McGraw-Hill, New York ) Μία τιμή δεν είναι αντικείμενο SQL:1999 constructor functions Παράδειγμα create function Publisher (n varchar(20), b varchar(20)) returns Publisher begin set name=n; set branch=b; end Κάθε δομημένος τύπος έχει ένα default constructor χωρίς παραμέτρους, μπορούν να δημιουργούν άλλους όπως απαιτείται Τιμές του τύπου row μπορεί να κατασκευαστεί παραθέτοντας σε λίστα τις τιμές σε παρένθεση Π.χ. Δεδομένου του row type row (name varchar(20), branch varchar(20)) Μπορούμε να αναθέσουμε το (`McGraw-Hill,`New York ) σαν τιμή του παραπάνω τύπου Βάσεις Δεδομένων, Παν. Πειραιά 16

Δημιουργία τιμών πολύπλοκων τύπων (2) Δημιουργία πίνακα τιμών array [ Silberschatz,`Korth,`Sudarshan ] Set value attributes (not supported in SQL:1999) set( v1, v2,, vn) Δημιουργία εγγραφής στο πίνακα books ( Compilers, array[`smith,`jones ], Publisher(`McGraw-Hill,`New York ), set(`parsing,`analysis )) Εισαγωγή της προηγούμενης εγγραφής στο πίνακα books insert into books values (`Compilers, array[`smith,`jones ], Publisher( McGraw Hill,`New York ), set(`parsing,`analysis )) Βάσεις Δεδομένων, Παν. Πειραιά 17

Κληρονομικότητα Υποθέτουμε τον ακόλουθο τύπο ορισμού για ανθρώπους: create type Person (name varchar(20), address varchar(20)) Χρησιμοποιώντας κληρονομικότητα για να ορίσουμε τύπους student και teacher create type Student under Person (degree varchar(20), department varchar(20)) create type Teacher under Person (salary integer, department varchar(20)) Οι υποτύποι μπορούν να επαναορίσουν μεθόδους χρησιμοποιώντας overriding method στη θέση του method στη δήλωση μεθόδου Βάσεις Δεδομένων, Παν. Πειραιά 18

Πολλαπλή κληρονομικότητα SQL:1999 δεν υποστηρίζει πολλαπλή κληρονομικότητα Εάν το σύστημα μας υποστηρίζει πολλαπλή κληρονομικότητα, μπορούμε να ορίσουμε ένα τύπο για teaching assistant ως εξής: create type Teaching Assistant under Student, Teacher Για να αποφύγουμε σύγκρουση ανάμεσα στις δύο εμφανίσεις του χαρακτηριστικού department μπορούμε να τα μετονομάσουμε create type Teaching Assistant under Student with (department as student-dept), Teacher with (department as teacher-dept) Βάσεις Δεδομένων, Παν. Πειραιά 19

Κληρονομικότητα πίνακα (Table Inheritance) Η κληρονομικότητα πίνακα επιτρέπει ένα αντικείμενο να έχει πολλαπλούς τύπους επιτρέποντας μία οντότητα να υπάρχει σε περισσότερους από έναν πίνακες τη φορά. Π.χ. people table: create table people of Person Μπορούμε να ορίσουμε πίνακες students και teachers ως subtables του people create table students of Student under people create table teachers of Teacher under people Κάθε πλειάδα σε ένα υποπίνακα (π.χ. students and teachers) έμμεσα εμφανίζεται και στους υπερπίνακες (π.χ. people) Εαν γίνει μία ερώτηση στο πίνακα people, ποιες εγγραφές θα βρει? Πολλαπλή κληρονομικότητα είναι δυνατή με πίνακες, όπως είναι δυνατή και με τους τύπους. create table teaching-assistants of Teaching Assistant under students, teachers Multiple inheritance not supported in SQL:1999 Βάσεις Δεδομένων, Παν. Πειραιά 20

Τύποι αναφορών Οι αντικειμενοστρεφείς γλώσσες μπορούν να δημιουργούν και να κάνουν αναφορές σε αντικείμενα. SQL:1999 Αναφορές γίνονται σε πλειάδες, Αναφορές πρέπει να είναι σε κάποιο πεδίο δράσης (scope), δηλ. μπορούν να δείχνουν σε εγγραφές σε ένα συγκεκριμένο πίνακα Βάσεις Δεδομένων, Παν. Πειραιά 22

Δήλωση αναφορών σε SQL:1999 Ορίζουμε ένα τύπο Department με πεδίο name και πεδίο head που είναι μία αναφορά σε τύπο Person, με πεδίο δράσης τoν πίνακα people create type Department( name varchar(20), head ref(person) scope people) Μπορούμε να δημιουργήσουμε ένα πίνακα departments as follows create table departments of Department Μπορούμε να παραλείψουμε τη δήλωση scope people και να κάνουμε μία προσθήκη στην εντολή δημιουργίας του πίνακα: create table departments of Department (head with options scope people) αναφορές συμπεριφέρονται σαν ξένα κλειδιά Βάσεις Δεδομένων, Παν. Πειραιά 23

Αρχικοποίηση τιμών τύπων αναφορών Παράδειγμα (βασίζεται στη σύνταξη της Oracle) create a department with name CS and head being the person named John, we use insert into departments values (`CS, null) update departments set head = (select ref(p) where name = `CS from people as p where name=`john ) create the tuple with a null reference set the reference by using the function ref(p) applied to a tuple variable Βάσεις Δεδομένων, Παν. Πειραιά 24

Αρχικοποίηση τιμών τύπων αναφορών (2) SQL:1999 δεν υποστηρίζει τη συνάρτηση ref() f, Απαιτεί τη δήλωση ενός ειδικού χαρακτηριστικού και αποθηκεύει τον προσδιοριστή αντικειμένου Το αυτο-αναφορικό γνώρισμα δηλώνεται προσθέτοντας ref is έκφραση στην εντολή create table: create table people of Person ref is oid system generated oid is an attribute name, not a keyword. Για να πάρουμε αναφορά σε μία πλειάδα, χρησιμοποιούμε select p.oid αντί select ref(p) Βάσεις Δεδομένων, Παν. Πειραιά 25

Προσδιοριστές παραγόμενοι από χρήστες SQL:1999 επιτρέπει προσδιοριστές αντικειμένων να δημιουργούνται από χρήστες Ο προσδιοριστής αντικειμένου ορίζεται σαν μέρος ορισμού τύπου του αναφερθέντος πίνακα E.g. create type Person (name varchar(20) address varchar(20)) ref using varchar(20) create table people of Person ref is oid user generated Όταν δημιουργούμε μία εγγραφή, πρέπει να παρέχουμε μία μοναδική τιμή για τον προσδιοριστή: insert into people values ( 01284567, John, `23 Coyote Run ) Βάσεις Δεδομένων, Παν. Πειραιά 26

Προσδιοριστές παραγόμενοι από χρήστες (2) Μπορούμε να χρησιμοποιήσουμε την τιμή προσδιοριστή όταν εισάγουμε εγγραφή στο departments Αποφεύγουμε την ύπαρξη ξεχωριστού ερωτήματος για να ανακτήσουμε τον προσδιοριστή: E.g. insert into departments values(`cs, `02184567 ) Χρήση υπάρχοντος πρωτεύοντος κλειδιού σαν προσδιοριστής, create type Person (name varchar(20) primary key, address varchar(20)) ref from(name) create table people of Person ref is oid derived Εισαγωγή εγγραφής για departments, μπορούμε να χρησιμοποιήσουμε insert into departments values(`cs,`john ) create type Person (name varchar(20) address varchar(20)) ref using varchar(20) create table people of Person ref is oid user generated Βάσεις Δεδομένων, Παν. Πειραιά 27

Path Expressions Find the names and addresses of the heads of all departments: select head >name, head >address from departments Η έκφραση head >name ονομάζεται path expression Path expressions βοηθούν να αποφύγουμε ρητά joins Εάν το γνώρισμα department head δεν ήταν αναφορά. To department head δηλώνεται ως ξένο κλειδί του people Απαιτείται join των πινάκων departments και people Αναφορά σε μία εγγραφή στον πίνακα people Βάσεις Δεδομένων, Παν. Πειραιά 28

Ερωτήματα με Δομημένους τύπους Find the title and the name of the publisher of each book. select title, publisher.name from books publisher.name --> προσπέλαση πεδίου σύνθετου γνωρίσματος publisher Βάσεις Δεδομένων, Παν. Πειραιά 29

Γνωρίσματα με τιμές Συλλογών (1) Γνωρίσματα με τιμές συλλογές μπορούν να αντιμετωπιστούν σαν σχέσεις, χρησιμοποιώντας τη λέξη κλειδί unnest Η σχέση books έχει το γνώρισμα author-array με τιμές πίνακα και το γνώρισμα keyword-set με τιμές συνόλου Find all books that have the word database as one of their keywords, select title from books where database in (unnest(keyword-set)) Note: Above syntax is valid in SQL:1999, but the only collection type supported by SQL:1999 is the array type Για να πάρουμε μία σχέση που περιέχει ζεύγη της μορφής title, author-name για κάθε βιβλίο και κάθε συγγραφέα βιβλίου select B.title, A from books as B, unnest (B.author-array) as A create table books (title varchar(20), author-array varchar(20) array[10], pub-date date, publisher Publisher keyword-list setof(varchar(20))) Βάσεις Δεδομένων, Παν. Πειραιά 30

Γνωρίσματα με τιμές Συλλογών (2) Προσπέλαση τιμών στοιχείων πίνακα χρησιμοποιώντας δείκτες Π.χ. Εάν γνωρίζουμε ότι ένα συγκεκριμένο βιβλίο έχει τρεις συγγραφείς, μπορούμε να γράψουμε: select author-array[1], author-array[2], author-array[3] from books where title = `Database System Concepts Βάσεις Δεδομένων, Παν. Πειραιά 31

Unnesting Ο μετασχηματισμός από μία εμφωλευμένη σχέση σε μία μορφή με λιγότερα (ή χωρίς) γνωρίσματα με τιμές σχέσεων ονομάζεται ακύρωση ένθεσης (unnesting) Π.χ. select title, A as author, publisher.name as pub_name, publisher.branch as pub_branch, K as keyword from books as B, unnest(b.author-array) as A, unnest (B.keyword-list) as K Βάσεις Δεδομένων, Παν. Πειραιά 32

Παράδειγμα εμφωλευμένης σχέσης Βάσεις Δεδομένων, Παν. Πειραιά 33

1NF έκδοση της εμφωλευμένης σχέσης 1NF version of books flat-books Βάσεις Δεδομένων, Παν. Πειραιά 34

Nesting Nesting (εμφώλευση, ένθεση) αντίθετο του unnesting, δημιουργεί συλλογές από γνωρίσματα με τιμές συλλογής NOTE: SQL:1999 does not support nesting Nesting γίνεται με τρόπο παρόμοιο με το aggregation, Χρήση της function set() στη θέση του aggregation operation Ένθεση της σχέσης the flat-books στο γνώρισμα keyword: select title, author, Publisher(pub_name, pub_branch) as publisher, set(keyword) as keyword-set from flat-books groupby title, author, publisher Ένθεση και στα δύο γνωρίσματα authors και keywords: select title, set(author) as author-set, Publisher(pub_name, pub_branch) as publisher, set(keyword) as keyword-list from flat-books groupby title, publisher Βάσεις Δεδομένων, Παν. Πειραιά 35

Παράδειγμα εμφωλευμένης σχέσης Βάσεις Δεδομένων, Παν. Πειραιά 36

Nesting (2) Μία άλλη προσέγγιση για να δημιουργούμε εμφωλευμένες σχέσεις είναι να χρησιμοποιούμε υποερωτήματα (subqueries) στη έκφραση select. select title, ( select author from flat-books as M where M.title=O.title) as author-set, Publisher(pub-name, pub-branch) as publisher, (select keyword from flat-books as N where N.title = O.title) as keyword-set from flat-books as O Μπορούμε να χρησιμοποιήσουμε την έκφραση orderby στο ένθετο ερώτημα για να πάρουμε μία ταξινομημένη συλλογή Δημιουργία arrays Βάσεις Δεδομένων, Παν. Πειραιά 37

SQL Functions Define a function that, given a book title, returns the count of the number of authors (on the 4NF schema with relations books4 and authors). create function author-count(name varchar(20)) returns integer begin declare a-count integer; select count(author) into a-count from authors where authors.title=name return a=a-count; end Find the titles of all books that have more than one author. select name from books4 where author-count(title)> 1 Βάσεις Δεδομένων, Παν. Πειραιά 38

4NF διάσπαση του flat books Βάσεις Δεδομένων, Παν. Πειραιά 39

SQL Methods Οι μέθοδοι μπορούν να θεωρηθούν ως συναρτήσεις που συνδέονται με δομημένους τύπους Έχουν μία έμμεση πρώτη παράμετρο που ονομάζεται self η οποία τίθεται στη τιμή του δομημένου τύπου στην οποία καλείται η μέθοδος Ο κώδικας μεθόδου μπορεί να αναφέρεται σε γνωρίσμα της τιμής δομημένου τύπου χρησιμοποιώντας της μεταβλητή self Π.χ. self.a Βάσεις Δεδομένων, Παν. Πειραιά 40

Σύγκριση O-O και O-R Databases Σχεσιακά συστήματα Απλές δομές τύπων, δυναμικές γλώσσες επερωτήσεων, υψηλή προστασία. Persistent-programming-language-based OODBs Πολύπλοκους τύπους δεδομένων, ολοκλήρωση με γλώσσες προγραμματισμού, υψηλή απόδοση. Object-relational systems Πολύπλοκοι τύποι δεδομένων, δυναμικές γλώσσες επερωτήσεων, υψηλή προστασία. Βάσεις Δεδομένων, Παν. Πειραιά 47

ΑΣΚΗΣΗ 1 Σχήμα ΒΔ Emp=(ename, setof(children), setof(skills)) Children =(bame, birthday) Birthday=(day, month, year) Skills=(type, setof(exams) Exams=(year, city) Η ΒΔ περιέχει μία σχέση emp(emp) Ονόματα εργαζομένων που έχουν παιδί με γενέθλια το Μάρτιο Εργαζομένους που έδωσαν εξετάσεις για τη δεξιότητα typing στην πόλη Dayton Όλους τους τύπους δεξιοτήτων της σχέσης Emp Βάσεις Δεδομένων, Παν. Πειραιά 48

ΑΣΚΗΣΗ 2 employee(person-name, street, city) works(person-name,company-name,salary) company(company-name, city) manages(person-name, manager-name) Ορισμός σχήματος που να αντιστοιχεί στο παραπάνω σχεσιακό σχήμα χρησιμοποιώντας αναφορές για να εκφράσουμε σχέσεις ξένων κλειδιών Βάσεις Δεδομένων, Παν. Πειραιά 49