Definizione di domini



Documenti analoghi
SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Gestione delle tabelle

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

SQL Sintassi Dei Comandi

Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

Documentazione SQL. Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema}

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

Domini elementari, 2. Basi di dati. Domini elementari, 4. Domini elementari, 3. Domini definiti dagli utenti. Domini elementari, 5

Basi di Dati: Corso di laboratorio

Giovanna Rosone 04/03/ /03/2010 SQL, Istruzioni per la modifica dello schema

Linguaggio SQL. Structured Query Language

Corso sul linguaggio SQL

Vincoli di Integrità Approccio dichiarativo alla loro implementazione

Corso di Basi di Dati A.A. 2013/2014

Vincoli di Integrità

Laboratorio di Basi di Dati e Web

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

SQL Laboratorio di Basi di Dati a.a. 2002/2003

Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici

SQL - Tipi di dato Il linguaggio SQL

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL

Linguaggio SQL Descriviamo la notazione usata nel seguito:

Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia:

Laboratorio di Basi di Dati

Basi di dati SQL. Standardizzazione di SQL. Linguaggi di Interrogazione: SQL. Prof.Angela Bonifati

Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a

Basi di Dati prof. Letizia Tanca

SQL: Concetti Base -Prima Parte-

Basi di Dati Relazionali

DBMS (Data Base Management System)

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati

SQL. Linguaggio di interrogazione per basi di dati relazionali. Relazione = tabella con attributi (a 1, a 2,, a n ): Funzionalità principali di SQL:


Lezione V. Aula Multimediale - sabato 29/03/2008

Corso di Informatica (Basi di Dati)

Il linguaggio SQL: DDL di base

SQL. Storia e standard

OR true null false true true true true null true null null false true null false NOT

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

SQL (STRUCTURED QUERY LANGUAGE)

Il linguaggio SQL: le basi

SQL. Alcune note sulla definizione dei dati

MAX, SUM, AVG, COUNT)

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro) ESERCIZIO 3

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2

DDL DML. Tipi di linguaggi per basi di dati. Si distinguono due categorie:

Esercitazione: Il DBMS MySQL

I comandi del linguaggio DDL (Data Definition Language): CREATE E ALTER

Operazioni sui database

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

BASE DI DATI: sicurezza. Informatica febbraio ASA

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

Il Modello Relazionale

Il Modello Relazionale

Archivi e Basi di Dati

Elena Baralis 2013 Politecnico di Torino 1

Il linguaggio SQL: le basi. Versione elettronica: SQLa-basi.pdf

INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti:

DUE GRUPPI DI COMANDI

Vincoli di integrità

Lo schema concettuale risultante dalla progettazione concettuale è l input alla fase di progettazione logica.

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Corso Sistemi Informativi Avanzati. Programma 30 set Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26

Basi di dati. SQL: concetti base

PROGRAMMA DI CLASSE 5AI

SQL. DDL e vincoli. Basi di Dati 1 Esercitazione 4. Matteo Picozzi {picozzi@elet.polimi.it}

Laboratorio di Basi di Dati Introduzione a SQL

Capitolo 4. Soluzione: Soluzione: Create domain STRING as character varying (256) default sconosciuto not null

2104 volume III Programmazione

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:

Organizzazione degli archivi

Informatica per le discipline umanistiche 2 lezione 10

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 9 SETTEMBRE 2015 Tempo: 2h30m

Volumi di riferimento

Domini elementari in SQL

Appunti di MySql. Evoluzione di un tutorial di base di mysql, scritto da Etel Sverdlov.

Capitolo 13. Interrogare una base di dati

Basi di Dati e Sistemi Informativi. Progettazione logica: Il modello relazionale

Basi di dati. SQL: Amministrazione e Viste. Prof.ssa Rosalba Giugno Dott. Aurelio Giudice

Esercitazione 1. Sistemi Informativi T. Versione elettronica: L01.2.DDLDMLbase.pdf

Corrado Aaron Visaggio 1. Esercizio

MODELLO RELAZIONALE. Introduzione

MODELLO RELAZIONALE. cesarini-bdsi mod relazionale 1 MODELLO RELAZIONALE

Transcript:

Definizione di domini Come nei linguaggi ad alto livello (es. C) è possibile definire nuovi domini (tipi di dati) a partire da quelli predefiniti, anche se il costruttore è più limitato. create domain NomeDominio as TipodiDato [ValDefault] [Vincolo] Non si possono creare array o strutture poiché il modello relazionale impone che gli attributi siano definiti su un dominio elementare. E però possibile associare dei vincoli ad un dominio definito dall utente. Se si modifica la definizione di un dominio, la modifica si propaga a tutte le tabelle.

Definizione di domini: esempio CREATE DOMAIN Voto AS SMALLINT DEFAULT NULL CHECK ( value >=18 AND value <= 30 )

Definizione di schemi E possibile definire uno schema di base di dati come collezione di oggetti. create schema[nomeschema] [[authorization] Autorizzazione]] {DefElementoSchema} Autorizzazione rappresenta il nome dell utente proprietario dello schema NB In MySQL sintassi diversa per le opzioni

Definizione di tabelle Una tabella SQL è costituita da una collezione ordinata di attributi e da un insieme di vincoli create table NomeTabella ( NomeAttributo Dominio [default ValDefault] [Vincoli] {,NomeAttributo Dominio [default ValDefault] [Vincoli]} [AltriVincoli] ) Una tabella è inizialmente vuota e chi la crea possiede tutti i diritti su di essa

Definizione di tabelle Esempio create table Dipartimento ( Nome char(20) primary key, Indirizzo char(50), Città char(20) )

Valori di default Si possono specificare valori di default per un attributo quando, al momento della creazione di una nuova tupla, in un campo non viene inserito alcun valore. default < GenericoValore user null > GenericoValore è un valore compatibile col dominio user è il nome dell utente che aggiorna la tabella null corrisponde al valore di default di base

Valori di default Un nuovo default (es. nella definizione di un tipo a partire da un altro) sostituisce il precedente Es. NumeroFigli smallint default 0 impone il valore 0 quando non viene specificato il valore dell attributo.

Vincoli intrarelazionali I più semplici vincoli intrarelazionali predefiniti sono: not null indica che il valore nullo non è ammesso su uno specifico attributo. Si impone che sia inserito in ogni caso un valore, salvo che non sia già definito un valore di default. SQL non distingue i diversi tipi di valore nullo. Se è necessario, bisogna definire opportuni domini.

Vincoli intrarelazionali unique(attributo {, Attributo}) indica che l insieme di attributi deve essere una superchiave per la tabella. primary key(attributo {, Attributo}) definisce la chiave primaria. Può essere una sola. Tutti gli attributi della chiave primaria sono automaticamente not null.

Vincoli intrarelazionali Nome character(20) not null, Cognome character(20) not null, unique (Nome, Cognome) impone che non esistano due tuple in cui sia i valori di Nome che di Cognome siano uguali Nome character(20) not null unique, Cognome character(20) not null unique impone che non esistano due tuple che abbiano uguali valori di Nome o di Cognome

Vincoli interrelazionali Vincoli di integrità referenziale Il vincolo di foreign key (chiave esterna) collega i valori di un insieme di attributi della tabella corrente (tabella interna) a un insieme di attributi di un altra tabella (tabella esterna). Per ogni tupla della tabella interna i valori della chiave esterna devono essere presenti nei corrispondenti attributi della tabella esterna. L insieme di attributi esterni deve essere unique. Se l insieme contiene un unico attributo si usa la clausola references(attribtabext)nella riga in cui è definito; altrimenti foreign key(listaattributi)

Vincoli interrelazionali create table Impiegato ( Matricola character(6) primary key, Nome character(20) not null, Cognome character(20) not null, Dipart character(15) references Dipartimento(NomeDip), Stipendio numeric(9) default 0, ) unique (Cognome, Nome), foreign key(nome, Cognome) references Anagrafica(Nome,Cognome)

Vincoli interrelazionali Per i vincoli visti l inserimento di un valore che li viola viene semplicemente impedito. In caso di vincoli di integrità referenziale, ciò vale nel caso di introduzione di dati non validi nella tabella interna. Se la violazione avviene per una modifica apportata alla tabella esterna, si deve associare una politica alle operazioni che possono causare inconsistenza: on < delete update > <cascade set null set default no action> subito dopo la specifica del riferimento

Vincoli interrelazionali Modifica (comando update): cascade il nuovo valore dell attributo della tabella esterna viene riportato su tutte le corrispondenti righe della tabella interna. set null all attributo referente viene assegnato il valore nullo. set default all attributo referente viene assegnato il valore di default. no action la modifica non viene consentita.

Vincoli interrelazionali Cancellazione (comando delete): cascade tutte le corrispondenti righe della tabella interna vengono cancellate. set null all attributo referente viene assegnato il valore nullo. set default all attributo referente viene assegnato il valore di default. no action la cancellazione non viene consentita.

Modifica degli schemi E possibile modificare gli schemi con i comandi alter e drop. alter consente di modificare domini e schemi di tabelle. alter domain NomeDominio < set default ValDefault drop default add constraint DefVincolo drop constraint NomeVincolo >

Modifica degli schemi alter table NomeTabella < alter column NomeAttributo <set default NuovoDefault drop default> add constraint DefVincolo drop constraint NomeVincolo add column NomeAttributo drop column NomeAttributo > NB Quando si inserisce un nuovo vincolo, questo deve essere soddisfatto dai dati già presenti

Modifica degli schemi Il comando drop permette di rimuovere dei componenti drop < schema domain table view assertion > NomeElemento [ restrict cascade ] restrict specifica di non eseguire il comando in presenza di oggetti non vuoti. cascade implica che gli oggetti specificati siano rimossi insieme a tutti gli oggetti da essi dipendenti. Quindi, ATTENZIONE!!!!

Interrogazioni Le interrogazioni (query) in SQL sono formulate in modo dichiarativo, descrivono cioè cosa si vuole ottenere e non come lo si vuole ottenere. L interrogazione viene elaborata dall ottimizzatore di interrogazioni (query optimizer) che fa parte del DBMS. Questo la analizza e la traduce nel linguaggio di interrogazione interno al DBMS. Per questo in SQL si deve cercare di scrivere codice leggibile e facilmente modificabile, affidando all ottimizzatore la formulazione di query efficienti.

Interrogazioni L istruzione base per le interrogazioni è select select ListaAttributi (target list) from ListaTabelle (clausola from) [ where Condizione ] (clausola where) Più in dettaglio: select AttrEspr [[as] Alias]{,AttrEspr [[as] Alias]} from Tabella [[as] Alias]{,Tabella [[as] Alias]} [ where Condizione ] seleziona le righe che soddisfano la condizione where fra quelle appartenenti al prodotto cartesiano delle tabelle in ListaTabelle, mostrandone gli attributi specificati. Ogni colonna (tabella) può essere ridenominata con un alias.

Interrogazioni Es. Data una base di dati che contiene le tabelle: IMPIEGATO (Nome, Cognome, Dipart, Ufficio, Stipendio, Città) DIPARTIMENTO (Nome, Indirizzo,Città) select Stipendio/12 as SalarioMensile from Impiegato where Cognome = `Rossi` genera una tabella con una colonna ridenominata SalarioMensile e tante righe quanti sono gli impiegati che si chiamano Rossi. Se si indica select * si selezionano tutti gli attributi

Persone Nome Età Andrea 27 Aldo 25 Maria 55 Anna 50 Filippo 26 Luigi 50 Franco 60 Olga 30 Sergio 85 Luisa 75 Reddito 21 15 42 35 30 40 20 41 35 87