Constraints.

Slides:



Advertisements
Presentazioni simili
Simple Past A cura di Mara Cruciani.
Advertisements

Microsoft SQL Server 2008 Utilizzo. Creazione DataBase CREATE DATABASE CREATE DATABASE Cinema.
SQL (Standard query language) Istruzioni per la creazione di una tabella: Create table ( tipo, (, [vincoli]) Primary key ( ) CHIVE PRIMARIA Foreign key(
WSDL (Web Services Description Language) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni
JPA Overview della tecnologia. Java Persistence Architecture Definita nella JSR-220 EJB 3.0 ( Tentativo di unificare EJB2.1 con.
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
1 SQL come linguaggio di definizione di dati Eugenio Di Sciascio.
MySQL ___.
Progettazione ER Un database universitario contiene informazioni riguardanti i professori (identificati dal codice fiscale) e informazioni relative ai.
Un DataBase Management System (DBMS) relazionale client/server.
MySQL Esercitazioni. Ripasso Connessione a MySQL. Creazione delle basi di dati e delle tablelle. Inserimento dei dati. Interrogazioni.
J0 1 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento.
1. Conoscere luso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali.
Application Code Dato Table Data Base Trigger Code 1° Controllo Procedure Client Side 3° Controllo Integrity Constraint 2° Controllo Event Driven BUSINESS.
1 Implementazione di Linguaggi 2 PARTE 6 Implementazione di Linguaggi 2 PARTE 6 Massimo Ancona DISI Università di Genova Testo: A.V. Aho, R. Sethi, J.D.Ullman.
SQL1 Structured Query Language Data Definition Language Data Manipulation Language Evoluzione Sequel IBM (1974) Standardizzazione ANSI/ISO: SQL-89, SQL-
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 6: Classi e astrazione dati 1.Introduzione 2.Definizione delle strutture 3.Accedere ai membri.
Sequence. CREARE UNA SEQUENCE CREATE SEQUENCE nome [INCREMENT BY n] [START WITH n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE]
Gestione dati DML Statement. DML – Data Manipultion Language Unoperazione DML viene eseguita quando: aggiungendo nuove righe ad una tabella modificando.
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
PRODOTTO CARTESIANO Otteniamo un prodotto cartesiano quando: viene omessa la condizione di join una condizione di join non è valida tutte le righe della.
FUNZIONI DI GRUPPO Le funzioni di gruppo operano su un set di record restituendo un risultato per il gruppo. AVG ([DISTINCT|ALL] n) media, ignora i valori.
Creazione e manipolazione tabelle. TABELLE una tabella può essere creata in qualsiasi momento,anche quando gli utenti stanno usando il database la struttura.
Componenti dell’architettura Oracle
SQL per la definizione di basi di dati SQL non è solo un linguaggio di interrogazione (Query Language), ma Un linguaggio per la definizione di basi di.
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
Ricerca di una chiave: Search(x, k) if x == nil or k == x.key return x
1. Progettare il seguente DataBase in relazione ai due esempi presenti in piattaforma, Modulo 4, esempi 1 e 2: Considerare le informazioni per la gestione.
Corso di Basi di Dati Un esempio di RDBMS: Il tool MySQL
22 maggio 2002 Avvisi: Ultima lezione: mercoledì 29 maggio II Esonero: mercoledì 5 giugno, ore 10:00.
Microsoft Access Maschere.
JavaScript Lezione 5 Tipizzazione ed operazioni tra tipi diversi Istruzioni di input.
Microsoft Access Cosa sono i database, microsoft access, le relazioni e le tabelle.
Filtered Index and Statistics Filtered Indexes Sergio Govoni
Creare grafici con un foglio di calcolo Copyright© owned by Ubaldo Pernigo, please contact: Tutti i contenuti, ove non diversamente.
Tutorial relativo al Mio EBSCOhost. Benvenuti al tutorial dedicato a Mio EBSCOhost, verranno fornite le istruzioni per la configurazione e lutilizzo ottimizzato.
Moduli o Form I Moduli permettono all'utente di immettere informazioni...
Project Review byNight byNight December 6th, 2011.
Attribution-NonCommercial-ShareAlike SQL Server.
Attribution-NonCommercial-ShareAlike Le novità
Personalizzazione e porting delle procedure esterne connesse ad Aleph Il caricamento degli utenti della circolazione da files esterni Modifiche introdotte.
sql: esempi di linguaggio sql nell'implementazione mysql
SQL Server 2005 Sicurezza Davide Mauri Factory Software
Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso:
Project Review Novembrer 17th, Project Review Agenda: Project goals User stories – use cases – scenarios Project plan summary Status as of November.
Project Review byNight byNight December 21th, 2011.
Project Review byNight byNight December 6th, 2011.
Project Review Novembrer 17th, Project Review Agenda: Project goals User stories – use cases – scenarios Project plan summary Status as of November.
Project Review byNight byNight December 5th, 2011.
SUBQUERY Chi ha un salario maggiore di quello di Abel? Occorre scomporre la query in due sotto problemi: MAIN : quali impiegati hanno un salario maggiore.
Corso di Web Services A A Domenico Rosaci Patterns di E-Business D. RosaciPatterns per l'e-Business.
Introduzione al linguaggio C. Cos’e’ il C? Il C e’ un linguaggio ad alto livello Un compilatore C prende in input un file contenente codice sorgente C.
Dato Table Data Base Application Code 1° Controllo Procedure Client Side 3° Controllo Integrity Constraint Trigger Code 2° Controllo Event Driven BUSINESS.
1 Basi di dati (Sistemi Informativi) Scuola di Dottorato in Scienze Veterinarie per la Salute Animale e la Sicurezza Alimentare a.a Ing. Mauro.
CREAZIONE UTENTE SU DATATOP. CREAZIONE UTENTE Andate su //datatop.di.unipi.it/webdb Login come utente: webdb password: ****** Administer -> User Manager.
SQL Developer Lanciare sqldeveloper (alias sul desktop) / c:\Oracle\sqldeveloper Associare tutti i tipi di file, se volete Tasto destro sulla spina “connection”
Dynamic SQL.
JDBC Java DataBase Connectivity SISTEMI ITIS B. CASTELLI Anno Scolastico
SQL (III) Data Definition Language/ Data Manipulation Language.
MySQL Database Management System
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
Vincoli interrelazionali
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
PROGETTAZIONE DATABASE SECONDO COMPITO CAROLINA CASIELLO
COME SI CREA UNA TABELLA CON UNA CHIAVE ESTERNA
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Corso di Basi di Dati Il Linguaggio SQL
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
SQL per la modifica di basi di dati
Microsoft SQL Graph Database
Transcript della presentazione:

Constraints

Cosa sono in Constraints? forzano una regola quando si agisce con una insert, update o delete su una tabella prevengono la cancellazione di una tabella se ci sono dipendenze i constraint disponibili sono: - NOT NULL - UNIQUE - PRIMARY KEY - FOREIGN KEY - CHECK

Regole per la creazione di constraints occorre mettere un nome (possibilmente coerente) al constraint, se omesso Oracle Server metterà un nome di default nel formato SYS_Cn (dove n è un intero) è possibile creare un constraint nel momento della creazione della tabella o dopo la creazione la lista dei constraint è disponibile sulla tabella del dizionario dati USER_CONSTRAINTS i constraint possono essere creati a livello di tabella o di colonna

CONSTRAINTS CREATE TABLE [schema].tabella (colonna datatype [DEFAULT espr] [constraint], … [constraint di tabella] [,…]); CREATE TABLE employees (employee_id NUMBER(6), first_name VARCHAR2(20), job_id VARCHAR2(10) NOT NULL, CONSTRAINT emp_emp_id_pk PRIMARY KEY (EMPLOYEE_ID));

Definizione di constraint a livello di colonna colonna datatype (CONSTRAINT nome_constr) tipo constraint a livello di tabella : è riferito a una o più colonne. Può essere di qualsiasi tipo tranne NOT NULL colonna, … CONSTRAINT nome_constr tipo_constraint

NOT NULL non permette l’inserimento di valori nulli nella colonna CREATE TABLE employees (employee_id NUMBER(6), last_name VARCHAR2(25) NOT NULL, … hire_date DATE, CONSTRAINT emp_hire_date_nn NOT NULL …;

UNIQUE richiede che ogni valore nella colonna o set di colonne sia unico cioè non è possibile che due righe della tabella abbiano lo stesso valore nella colonna (o set) specificata permette l’inserimento di valori nulli inquanto il valore NULL non è considerato uguale a nulla. Quindi NULL in tutti i valori di una colonna con constraint UNIQUE soddisfano il constraint al momento della creazione viene automaticamente creato un indice unique

UNIQUE Esempio CREATE TABLE employees ( employee_id NUMBER(6), last_name VARCHAR2(25) NOT NULL, … hire_date DATE NOT NULL, CONSTRAINT emp_email_uk UNIQUE(email));

PRIMARY KEY crea una chiave primaria sulla tabella solo una chiave primaria può essere creata per ogni tabella è una colonna o un set di colonne che identifica univocamente le righe della tabella forza l’unicità di una colonna (o set di colonne) e non permette l’inserimento di valori nulli al momento della creazione della chiave primaria viene automaticamente creato un indice unique

PRIMARY KEY Esempio CREATE TABLE departments ( department_id NUMBER(4), department_name VARCHAR2(30), CONSTRAINT dept_name_nn NOT NULL, manager_id NUMBER(6) location_id NUMBER(4), CONSTRAINT dept_id_pk PRIMARY KEY(department_id)); una tabella può avere una sola chiave primaria ma più unique può essere definito a livello di tabella o di colonna

FOREIGN KEY CREATE TABLE employees ( employee_id NUMBER(6), last_name VARCHAR2(25) NOT NULL, email VARCHAR2(25), salary NUMBER(8,2), department_id NUMEBR(4), … CONSTRAINT emp_dept_fk FOREIGN KEY(department_id) REFERENCES departments(department_id) CONTRAINT emp_email_uk UNIQUE(email)); department_id è stato definito foreign key della tabella employees (child table). Essa referenzia la colonna department_id della tabella departments (parent table)

FOREIGN KEY la foreign key viene definita nella tabella figlia e deve essere in relazione con un valore esistente nella tabella parent o NULL una foreign key è basata su dati ed è un puntatore logico, non fisico è possibile creare una foreign key a livello di tabella o di colonna (la differenza è che nella definizione di colonna non appare la parola chiave FOREIGN KEY) CREATE TABLE employees (… department_id NUMBER(4) REFERENCES departments (department_id),…);

PAROLE CHIAVE DELLA FOREIGN KEY FOREIGN KEY : definisce la colonna nella tabella figlia nella definizione a livello di tabella REFERENCES : definisce la tabella e la colonna della tabella parent ON DELETE CASCADE : quando una riga nella tabella padre viene cancellata, vengono cancellate anche le righe della tabella figlia ON DELETE SET NULL : quando una riga nella tabella padre viene cancellata, converte i valori della tabella figlia in NULL senza le opzioni ON DELETE CASCADE o ON DELETE SET NULL le righe della tabella padre non possono essere cancellate se esistono righe nella tabella figlia

CHECK definisce una condizione che deve essere soddisfatta da tutte le righe ... , salary NUMBER(8,2) CONSTRAINT emp_salary_min CHECK (salary > 0) la condizione può essere espressa con la stessa struttura della clausola where ad eccezione delle seguenti espressioni : - riferimenti a CURRVAL, NEXTVAL, LEVEL e ROWNUM - chiamate a funzioni SYSDATE, USER - query che ritornano valori in altre righe

CHECK una colonna può avere più CHECK contraint, non c’è limite per il numero di constraint che possono essere definiti può essere definito a livello di tabella o a livello di colonna

AGGIUNGERE CONSTRAINT Usare ALTER TABLE per : aggiungere o cancellare constraint, ma non per modificare la struttura abilitare o disabilitare constraint aggiungere il constraint NOT NULL con la clausola MODIFY ALTER TABLE table ADD CONSTRAINT constraint type (colonna);

AGGIUNGERE CONSTRAINT Aggiungere un constraint FOREIGN KEY per la tabella employees indicando che un manager deve già esistere come un record valido nella tabella employees ALTER TABLE employees ADD CONSTRAINT emp_manager_fk FOREIGN KEY(manager_id) REFERENCES employees(employee_id); Viene creata una foreign key sulla tabella employees. Il constraint assicura che un manager esiste come record valido nella tabella employees

CANCELLARE UN CONSTRAINT ALTER TABLE employees DROP CONSTRAINT emp_manager_fk; Cancellare la primary key sulla tabella department e cancellare la foreign key associata sul campo department_id della tabella employees ALTER TABLE departments DROP PRIMARY KEY CASCADE; La clausola CASCADE fa si che vengano cancellate tutte le dipendenze.

DISABILITARE UN CONSTRAINT ALTER TABLE employees DISABLE CONSTRAINT emp_emp_id_pk CASCADE; disattiva il constraint e applicando il CASCADE disabilita anche le dipendenze è possibile usare il DISABLE sia in CREATE che in ALTER table disabilitando una primary o uno unique viene rimosso l’indice di unicità

ABILITARE UN CONSTRAINT ALTER TABLE employees ENABLE CONSTRAINT emp_emp_id_pk; abilitando un constraint UNIQUE o PRIMARY KEY viene automaticamente creato un’indice unique o primary key abilitando un indice sarà valido per tutte le righe della tabella quindi tutte le righe devono essere corrette per l’abilitazione è possibile usare ENABLE sia in CREATE che ALTER table abilitando una primary key che era stata disabilitata con l’opzione cascade, non riabilita la foreign key che era dipendente dalla primary key

CASCADING CONSTRAINT è usata nella clausola DROP COLUMN cancella tutti i referential integrity constraints che si riferiscono alla primary key e unique key definite nella colonna da cancellare cancella anche i constraint definiti su più colonne

CASCADING CONSTRAINT Esempio CREATE TABLE test1 ( pk NUMBER PRIMARY KEY, fk NUMBER, col1 NUMBER, col2 NUMBER, CONSTRAINT fk_constraint FOREIGN KEY (fk) REFERENCES test1, CONSTRAINT ck1 CHECK (pk > 0 and col1 > 0), CONSTRAINT ck2 CHECK (col2 > 0)); Viene generato un errore per i seguenti statement : ALTER TABLE test1 DROP (pk); -- pk è la parent key ALTER TABLE test1 DROP (col1); -- col1 fa parte del constraint multicolonna ck1

CASCADING CONSTRAINT Per risolvere il problema precedente occorre usare il CASCADE CONSTRAINT : ALTER TABLE test1 DROP (pk) CASCADE CONSTRIANT; Oppure occorre cancellare anche tutte le colonne referenziate ALTER TABLE test1 DROP (pk, fk, col1);

CONSTRAINT – dizionario dati Usare la tabella USER_CONSTRAINT per vedere la definizione del constraint e il nome SELECT constraint_name, constraint_type, search_condition FROM user_constraint WHERE table_name = ‘EMPLOYEES’; Constraint type : C per CHECK P per PRIMARY KEY R per FOREIGN KEY (referential integrity) U per UNIQUE Il constraint NOT NULL è considerato un constraint CHECK

CONSTRAINT – dizionario dati per vedere le colonne associate con i constraint, interrogare la vista USER_CONS_COLUMNS SELECT constraint_name, column_name FROM user_cons_column WHERE table_name = ‘EMPLOYEES’;