Διάλεξη 12: SQL Data Definition Language. Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

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

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

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

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

Διάλεξη 11: SQL Data Definition Language. Διδάσκων: Παναγιώτης Ανδρέου

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

Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 12: SQL DDL. SQL Data Definition Language

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

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

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

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

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

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

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

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

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

Διάλεξη 04: Εννοιολογική Σχεδίαση Βάσης Δεδομένων II (Entity Relationship Modelling) Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

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

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

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

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

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

Lecture 14: SQL DML I

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

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

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

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

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

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

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (1)

Lecture 21: Functional Dependencies and Normalization

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

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

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

Κλειδιά (keys) Λογικά, σκεφτόµαστε για «κλειδιά» σαν τα δεδοµένα (τα πεδία) εκείνα τα οποία µας επιτρέπουν να ξεχωρίσουµε τις διάφορες εγγραφές

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

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

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

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

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

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

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

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

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

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

Lecture 8: RM I + RA I

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

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

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

Lecture 12: SQL DDL I

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

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

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

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

Κεφάλαιο 3 Σχεσιακό Μοντέλο

Διάλεξη 08: Αντιστοίχηση Εννοιολογικού σε Σχεσιακό Μοντέλο (ER/EER to Relational) Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2)

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

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

Entity-Relationship Model (Chen) Οντολογικό Σχεσιακό Μοντέλο

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

Διάλεξη 03: Εννοιολογική Σχεδίαση Βάσης Δεδομένων I (Entity Relationship Modelling) Διδάσκων: Παναγιώτης Ανδρέου

Βάσεις Δεδομένων. Βασίλειος Βεσκούκης Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL

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

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2)

Κεφάλαιο 6. Περιορισμοί Ακεραιότητας Βάσεων Δεδομένων

Βάςεισ Δεδομζνων Ι. Ενότητα 7: Ειςαγωγή ςτην γλώςςα_sql. Δρ. Σςιμπίρθσ Αλκιβιάδθσ Σμιμα Μθχανικϊν Πλθροφορικισ ΣΕ

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

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

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

Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας που λέγεται σχέση Γνωρίσματα

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

Παράδειγμα Select Introduction Group By Join Aliases.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (3)

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

Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 5: ER II. Data Modeling Using the ER Model

Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας που λέγεται σχέση Γνωρίσματα

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

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

ΚΕΦΑΛΑΙΟ ΤΡΙΤΟ ΕΝΤΟΛΕΣ SQL

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

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

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

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

Βάσεις Δεδομένων : Σχεσιακό Μοντέλο 1. Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας που λέγεται σχέση.

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

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

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

Transcript:

Διάλεξη 12: SQL Data Definition Language Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: Επιπρόσθετοι Περιορισμοί Παραδείγματα/Ασκήσεις Διδάσκων: Παναγιώτης Ανδρέου EPL342: Databases Panayiotis Andreou 2013 1

Διάγραμμα ER EPL342: Databases Panayiotis Andreou 2013 2

Σχεσιακό Σχήμα EPL342: Databases Panayiotis Andreou 2013 3

SQL DDL CREATE TABLE [dbo].[project]( [project_id] [int] NOT NULL, [name] [nvarchar](50) NOT NULL, [location] [nvarchar](50) NOT NULL, [controlling_department] [int] NOT NULL CONSTRAINT [PK_PROJECT] PRIMARY KEY ([project_id] ASC) ) CREATE TABLE [dbo].[works_on]( [SSN] [int] NOT NULL, [project_id] [int] NOT NULL CONSTRAINT [PK_WORKS_ON] PRIMARY KEY ([SSN] ASC, [project_id] ASC) ) CREATE TABLE [dbo].[department]( [department_id] [int] NOT NULL, [name] [nvarchar](50) NOT NULL, [Manager] [int] NULL, [Manager_start_date] [smalldatetime] ALTER TABLE [dbo].[employee] WITH CHECK ADD CONSTRAINT [FK_EMPLOYEE_DEPARTMENT] FOREIGN KEY([Department]) REFERENCES [dbo].[department] ([department_id]) ALTER TABLE [dbo].[employee] WITH CHECK ADD CONSTRAINT [DF_EMPLOYEE_ADDRESS] DEFAULT 'N/A' FOR [Address] ALTER TABLE [dbo].[department] WITH CHECK ADD CONSTRAINT [UQ_DEPARTMENT_NAME] UNIQUE([name]) ALTER TABLE [dbo].[employee] WITH CHECK ADD CONSTRAINT [CHECK_EMPLOYEE_SALARY] CHECK([Salary]>=1000 AND [Salary]<=5000) DROP TABLE [dbo].[department] EPL342: Databases Panayiotis Andreou 2013 4

Επιπλέον Περιορισμοί στην SQL Θέματα Διάλεξης 11: PRIMARY KEY FOREIGN KEY NOT NULL Θέματα Διάλεξης 12: Ονομασία Περιορισμών Επιπλέον περιορισμοί UNIQUE DEFAULT CHECK Εντολές Ενεργοποίησης Αναφοράς ON DELETE ON UPDATE { NO ACTION CASCADE SET NULL SET DEFAULT } Προσωρινή Απενεργοποίηση Περιορισμών WITH CHECK / WITH NO CHECK EPL342: Databases Panayiotis Andreou 2013 5

Ονομασία Περιορισμών Κάθε περιορισμός έχει κάποιο όνομα Όταν δεν δοθεί όνομα σε κάποιο περιορισμό από το χρήστη τότε η ΒΔ (DBMS) δίνει κάποιο τυχαίο όνομα π.χ., PK_EMPLOYEE_123456 Είναι πιο σωστό να ονομάζουμε τους περιορισμούς (όπου επιτρέπεται) ώστε να είναι πιο ευαναγνωστος ο κώδικας μας. π.χ., PK_EMPLOYEE, ή PRIMARY_KEY_EMPLOYEE Η ονομασία γίνεται κατά τον ορισμό του περιορισμού π.χ., CREATE/ALTER CONSTRAINT PK_EMPLOYEE PRIMARY KEY EMPLOYEE(SSN) EPL342: Databases Panayiotis Andreou 2013 6

UNIQUE Constraint UNIQUE <γνωρίσματα>: Προσδιορίζει ότι κάποιο γνώρισμα ή συνδυασμός γνωρισμάτων είναι μοναδικό Μπορεί να είναι NULL (βασική διαφορά από τα Primary Keys) Παράδειγμα: CREATE TABLE [dbo].[project]( [project_id] [int] NOT NULL, [name] [nvarchar](50) UNIQUE, [location] [nvarchar](50) NOT NULL, ) Όπως και για PKs, FKs όταν υπάρχει συνδυασμός πολλών γνωρισμάτων πρέπει να δηλωθεί στο τέλος του πίνακα ή με ALTER EPL342: Databases Panayiotis Andreou 2013 7

DEFAULT Constraint DEFAULT <value>: Ορίζει ένα value για ένα γνώρισμα δεδομένου ότι αυτό δεν ορίζεται ρητά κατά την εισαγωγή μιας πλειάδας σε μια σχέση. Παράδειγμα: CREATE TABLE [dbo].[department]( [Manager] [int] DEFAULT 0, [Manager_start_date] [smalldatetime] DEFAULT GETDATE() Πληροφορίες για TSQL To value μπορεί να είναι NULL ή String ή scalar value Το DEFAULT δεν εφαρμόζεται πάνω σε IDENTITY, TIMESTAMP EPL342: Databases Panayiotis Andreou 2013 8

CHECK Constraint CHECK (logical expression): Περιορισμός που επιβάλλεται στο πεδίο ορισμού ενός ή περισσότερων γνωρισμάτων Περιορίζει τις δυνατές τιμές ενός γνωρίσματος βάσει λογικής συνθήκης. Η συνθήκη εφαρμόζεται σε κάθε αλλαγή (insert, update) ΔΕΝ επιτρέπεται άμεση αναφορά σε άλλο πίνακα μέσω της CHECK. Επιτρέπεται έμμεσα με τη χρήση User Defined Function Παράδειγμα (γνωρίσματα του ίδιου πίνακα): CREATE TABLE [dbo].[works_on]( [HOURS] [int] CHECK (VALUE >0), Παράδειγμα (γνωρίσματα άλλου πίνακα/ων): CREATE TABLE [dbo].[department]( [NO_OF_EMPLOYEES] [int] CHECK (VALUE<=UDF_MAX_EMPLOYEES()) Πληροφορίες για TSQL Δεν μπορεί να οριστεί για text, ntext, or image EPL342: Databases Panayiotis Andreou 2013 9

CHECK Constraint Παραδείγματα Λειτουργιών της CHECK σε TSQL Λειτουργία Σύνταξη σε TSQL Εξειδίκευση Πεδίου Ορισμού Month BETWEEN 1 and 12 Εξειδίκευση Πεδίου Ορισμού Shippers IN ( Ups, Fed Ex, USPS ) Σύγκριση Πεδίου με Σταθερά Price >= 0 Σύγκριση Πεδίων DeliveryDate >= OrderDate Σύγκριση Πεδίου με Συνάρτηση StartDate <= GETDATE ( ) Έλεγχος Μορφής (e.g., 111-11-1111) [ ] : Οποιοσδήποτε χαρακτήρας μέσα σε προσδιορισμένο εύρος (π.χ. [a-f]) ή σύνολο ([abcdef]). Έλεγχος Μορφής % : 0 ή περισσότεροι χαρακτήρες _ : 1 οποιοσδήποτε χαρακτήρας. SSN LIKE [0-9] [0-9] [0-9] -[0-9] [0-9] [0-9] [0-9] [0-9] [0-9] email LIKE %@cs.ucy.ac.cy %@%.cy * To LIKE θα μελετηθεί εκτενεστέρα στα πλαίσια της SQL DML EPL342: Databases Panayiotis Andreou 2013 10

Εντολές Ενεργοποίησης Αναφοράς Οι CHECK, NOT NULL, DEFAULT είναι περιορισμοί που χρησιμοποιούνται στο επίπεδο ενός γνωρίσματος ή μιας σχέσης. Η FOREIGN KEY από την άλλη αναφέρεται σε περιορισμούς μεταξύ δυο σχέσεων. π.χ., Π.χ., FOREIGN KEY (MGRSSN) REFERENCES EMP(SSN) Εάν παραβιαστεί ο αναφορικός περιορισμός τότε η βάση απορρίπτει την πράξη (REJECT) Π.χ., δεν μπορούμε να σβήσουμε τον Manager κάποιου υπαλλήλου στην βάση. Για να εξειδικεύσουμε την αντίδραση της βάσης σε τέτοιες τροποποιήσεις χρησιμοποιούνται κάποιες επιπλέον εντολές στην δήλωση ενός πίνακα. Δες επόμενη διαφάνεια EPL342: Databases Panayiotis Andreou 2013 11

Εντολές Ενεργοποίησης Αναφοράς Οι Εντολές Ενεργοποίησης Αναφοράς δηλώνουν τι θα γίνει στο FK (Foreign Key) μιας σχέσης από αλλαγή στο PK (Primary Key) αναφερόμενης σχέσης. Ενεργοποιούνται αν παραβιαστεί ένας αναφορικός περιορισμός κατά το ON DELETE ή ON UPDATE Employee(Ssn, Ename, Dno) Department(Dno, Dname) Λειτουργίες: NO ΑCTION: Απαγορεύει την Αλλαγή (Default). Γιατί να ορίζεται; Για να ξεκαθαρίσει την πρόθεση του σχεδιαστή SET NULL: Θέτει το FK=NULL. Προϋποθέτει ότι η στήλη FK μπορεί να είναι NULLABLE. SET DEFAULT: Θέτει το FK=DEFAULT. Προϋποθέτει ότι το Default έχει οριστεί για το FK. CASCADE: Διάδοση Αλλαγής ON DELETE CASCADE: Διαγράφει την πλειάδα του FK ON UPDATE CASCADE: Ενημερώνει το FK με το νέο PK PK EPL342: Databases Panayiotis Andreou 2013 12

Εντολές Ενεργοποίησης Αναφοράς Εάν διαγραφεί ο Supervisor του υπαλληλου Χ τότε Χ.Super_ssn=NULL Εάν αλλάξει SSN ο Supervisor του υπαλληλου Χ τότε Χ.Super_ssn=NewSSN EPL342: Databases Panayiotis Andreou 2013 13

Εντολές Ενεργοποίησης Αναφοράς Οι Εντολές Ενεργοποίησης Αναφοράς, ειδικότερα το ON DELETE CASCADE, χρειάζονται μεγάλη προσοχή διότι η ενέργεια δύναται να προκαλέσει αλυσίδωτες αλλαγές (Chaining) που μπορεί να σβήσει ολόκληρο πίνακα! Π.χ., Θεωρήστε την δήλωση PK FK Employee(Ssn, MgrSSN) CREATE TABLE Employee ( SSN int NOT NULL PRIMARY KEY, MgrSSN int, FOREIGN KEY(MgrSSN) REFERENCES Employee(SSN) ON DELETE CASCADE) Και το στιγμιότυπο Εmployee = {(1,1), (2,1), (3,2), (4,3)} Σβήνοντας τον Employee.SSN=1 θα προκαλούσε διαγραφή όλων των εγγραφών του πίνακα! Για αυτό ο SQL Server δεν επιτρέπει την πιο πάνω εντολή CREATE TABLE επιστρέφοντας το μήνυμα λάθους Introducing FOREIGN KEY constraint 'FK Employee SSN 1CF15040' on table 'Employee' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. EPL342: Databases Panayiotis Andreou 2013 14

Προσωρινή Απενεργοποίηση Περιορισμών Γνωρίζουμε ότι η βάση δεδομένων είναι συνεχώς σε μια συνεπή (consistent) κατάσταση. Δηλαδή όλοι οι περιορισμοί (κλειδιού, αναφορικής ακεραιότητας, κτλ) τηρούνται με ακρίβεια. Κάποτε επιθυμούμε να απενεργοποιήσουμε προσωρινά κάποιους περιορισμούς, π.χ., Σειρά Εισαγωγής Δεδομένων: εάν φορτώσουμε πρώτα τους Employee μετά τα Departments δεν θέλουμε να μας δίνει μηνύματα λάθους (λόγω foreign key constraint) Εισαγωγή Παλιών Δεδομένων, θέλουμε να φορτώσουμε κάποια ΠΑΛΙΑ δεδομένα που δεν ακολουθούν κάποιο περιορισμό (π.χ., μορφοποίηση). Μπορούμε να τα φορτώσουμε και μετά να ενεργοποιήσουμε τον περιορισμό για τα νέα δεδομένα. ΔΕΝ ΣΥΝΙΣΤΑΤΑΙ ΤΟ ΣΕΝΑΡΙΟ 2 ΩΣΤΟΣΟ (ΑΣΥΝΕΠΕΙΑ) EPL342: Databases Panayiotis Andreou 2013 15

Προσωρινή Απενεργοποίηση Περιορισμών WITH CHECK WITH NOCHECK: Δηλώνει κατά πόσο τα δεδομένα ενός πίνακα θα επικυρωθούν (validated) ή όχι έναντι κάποιου περιορισμού (π.χ., περιορισμό FOREIGN KEY ή CHECK) Επισημάνσεις Οι περιορισμοί πρέπει να απενεργοποιούνται ΠΡΟΣΩΡΙΝΑ. Δεν μπορούμε να απενεργοποιήσουμε το PRIMARY KEY και UNIQUE Ενεργοποίηση/Απενεργοποίηση θα γίνει με χρήση της εντολής ALTER. Παραδείγματα Ενεργ./Απενεργ. Υφιστάμενου Περιορισμού: ALTER TABLE Employee CHECK ΝΟCHECK CONSTRAINT fk_something Εισαγωγή Νέου Περιορισμού FK (χωρίς έλεγχο παλιών data): : ALTER TABLE Employee WITH NOCHECK ADD CONSTRAINT FK_Employee FOREIGN KEY(SSN) REFERENCES Employee(SSN) Εισαγωγή Νέου Περιορισμού CHECK (χωρίς έλεγχο παλιών data): WITH CHECK είναι default για νέους περιορισμούς ALTER TABLE Employee WITH NOCHECK ADD CONSTRAINT CN_SSNFormat CHECK (SSN LIKE '[0 9][0 9][0 9][0 9][0 9][0 9][0 9] ) EPL342: Databases Panayiotis Andreou 2013 16

Ασκήσεις RM SQL DDL Δώστε SQL DDL (CREATE) για: Σχέση Νομός CREATE TABLE [Όνομα] [Περιοχή] [Νομός]( [nvarchar](50) NOT NULL, [nvarchar](50), ) CONSTRAINT PK_Νομός PRIMARY KEY (Όνομα), EPL342: Databases Panayiotis Andreou 2013 17

Ασκήσεις RM SQL DDL Δώστε SQL DDL (CREATE) για: Σχέση Βουλευτής CREATE TABLE [Βουλευτής]( [Ταυτότητα] [int] NOT NULL, [Όνομα] [nvarchar](50), [Ημερ.] [smalldatetime], [Κόμμα] [nvarchar](50), [Ο_Νομού] [nvarchar](50), ) CONSTRAINT PK_Βουλευτής CONSTRAINT FK_Βουλευτής_Νομός PRIMARY KEY (Ταυτότητα), FOREIGN KEY (Ο_Νομού) REFERENCES Νομός (Όνομα) EPL342: Databases Panayiotis Andreou 2013 18

Ασκήσεις ER SQL DDL Υποθέστε: Employee (SSN) Δώστε SQL DDL (CREATE) για: Οντότητα DEPARTMENT CREATE TABLE [DEPARTMENT]( [Dnumber] [int] NOT NULL, [Dname] [nvarchar](50) NOT NULL, [Manager] [int] NOT NULL, [MgrStartD] [smalldatetime], ) CONSTRAINT PK_DEPARTMENT CONSTRAINT UQ_DEPARTMENT_NAME CONSTRAINT FK_DEPARTMENT_MANAGER PRIMARY KEY (Dnumber), UNIQUE (Dname), FOREIGN KEY (Manager) REFERENCES EMPLOYEE (SSN) EPL342: Databases Panayiotis Andreou 2013 19

Ασκήσεις ER SQL DDL Υποθέστε: Employee (SSN) PROJECT (Pnumber) Δώστε SQL DDL (CREATE) για: Συσχέτιση WORKS_ON CREATE TABLE [WORKS_ON]( [Pnumber] [int] NOT NULL, [SSN] [int] NOT NULL, [PHours] [int] NULL, ) CONSTRAINT PK_ WORKS_ON CONSTRAINT FK_WORKS_ON _PROJECT CONSTRAINT FK_WORKS_ON_EMPLOYEE PRIMARY KEY (Pnumber, SSN), FOREIGN KEY (Pnumber) REFERENCES PROJECT (Pnumber) FOREIGN KEY (SSN) REFERENCES EMPLOYEE (SSN) EPL342: Databases Panayiotis Andreou 2013 20

Ασκήσεις ER SQL DDL Υποθέστε: Employee (SSN, ) Συσχέτιση Supervision αναγνωρίστηκε μετά από τη δημιουργία του πίνακα Δώστε SQL DDL (ALTER) για: Συσχέτιση SUPERVISION ALTER TABLE [dbo].[employee] ADD Supervisor [int] NULL ALTER TABLE [dbo].[employee] ADD CONSTRAINT FK_EMPLOYEE_SUPER FOREIGN KEY (Supervisor) REFERENCES EMPLOYEE (SSN) EPL342: Databases Panayiotis Andreou 2013 21

Ασκήσεις ER SQL DDL Υποθέστε: Employee (SSN) Δώστε SQL DDL (CREATE) για: Οντότητα DEPENDENT CREATE TABLE [DEPENDENT]( [ESSN] [int] NOT NULL, [Name] [nvarchar](50) NOT NULL, [Sex] [bit], [DOB] [smalldatetime], [Relationship] [nvarchar](50), ) CONSTRAINT PK_DEPENDENT CONSTRAINT FK_DEPENDENT_EMPLOYEE PRIMARY KEY (ESSN, Name), FOREIGN KEY (ESSN) REFERENCES EMPLOYEE (SSN) EPL342: Databases Panayiotis Andreou 2013 22

Ασκήσεις RM SQL DDL Υποθέστε: Σχέση Βουλευτής [Όνομα] [nvarchar](50), [Ημερ.] [smalldatetime], [Κόμμα] [nvarchar](50) CHECK ( VALUE IN (Κόμμα Α, Κόμμα Β, Κόμμα Γ)) Δώστε SQL DDL (ALTER) για τους ακόλουθους περιορισμούς: Το μέγεθος του ονόματος να είναι μεγαλύτερο από 6 χαρακτήρες (LEN()) ALTER TABLE [Βουλευτής] ADD CONSTRAINT CH_CHECK_LENGTH_Όνομα CHECK ( LEN([Όνομα]) > 6 ) Το κόμμα να είναι από τη λίστα (Κόμμα Α, Κόμμα Β, Κόμμα Γ) ALTER TABLE [Βουλευτής] ADD CONSTRAINT CH_CHECK_Κόμμα CHECK ( [Κόμμα] IN (Κόμμα Α, Κόμμα Β, Κόμμα Γ)) Η Ημερ. να είναι μεγαλύτερη της ημερομηνίας καταχώρησης ALTER TABLE [Βουλευτής] ADD CONSTRAINT CH_CHECK_Ημερ_Καταχώρησης CHECK ( Ημερ.>= GETDATE() ) EPL342: Databases Panayiotis Andreou 2013 23

Ασκήσεις ER SQL DDL Υποθέστε: Σχέση Άτομο [Όνομα] [Επίθετο] [nvarchar](50) NOT NULL, [nvarchar](50) NOT NULL, Δώστε SQL DDL (ALTER) για τους ακόλουθους περιορισμούς: Δημιουργία υπολογιζόμενου γνωρίσματος [Ονοματεπώνυμο] ALTER TABLE [Άτομο] ADD [Ονοματεπώνυμο] [Όνομα]+ + [Επίθετο] AS EPL342: Databases Panayiotis Andreou 2013 24

Ασκήσεις ER SQL DDL Υποθέστε: Σχέση Άτομο [Όνομα] [nvarchar](50) NOT NULL, [Μεσαίο Όνομα] [nvarchar](1) NULL, [Επίθετο] [nvarchar](50) NOT NULL, Δώστε SQL DDL (ALTER) για τους ακόλουθους περιορισμούς: Δημιουργία υπολογιζόμενου γνωρίσματος [ΠλήρεςΌνομα] ΣΗΜΕΙΩΣΗ: Η Συνένωση συμβολοσειράς με NULL NULL ALTER TABLE [Άτομο] ADD [ΠλήρεςΌνομα] AS [Όνομα]+ ISNULL( + [Μεσαίο Όνομα]+, ) + [Επίθετο] EPL342: Databases Panayiotis Andreou 2013 25