LABORATORIO di INFORMATICA
|
|
|
- Bonaventura Fantini
- 9 anni fa
- Visualizzazioni
Transcript
1 Università degli Studi di Cagliari Corso di Laurea Magistrale in Ingegneria per l Ambiente ed il Territorio LABORATORIO di INFORMATICA A.A. 2010/2011 Prof. Giorgio Giacinto IL MODELLO RELAZIONALE Perché studiare il Modello Relazionale?! È il modello più largamente usato! Produttori: IBM, Informix, Microsoft, Oracle, Sybase, MySQL, PostgreSQL, etc.! Sistemi proprietari nei modelli più vecchi! ad esempio IMS dell IBM! Modelli recenti: modello orientato agli oggetti! ObjectStore, Versant, Ontos! Una sintesi emergente: il modello relazionale ad oggetti! Informix Universal Server, UniSQL, O2, Oracle, PostgreSQL
2 Basi di dati relazionali: definizioni! Base di dati relazionale: un insieme di relazioni! Relazione: consiste di due parti:! schema: specifica il nome della relazione, più il nome e il tipo di ciascuna colonna (chiamata campo o attributo)! ad esempio: Studenti(sid:string, nome:string, login:string, età:integer, media:real)! istanza: una tabella, con righe e colonne. #righe = cardinalità, #campi = grado/arità! Possiamo pensare a una relazione come a un insieme di righe di t-uple (cioè tutte le righe sono distinte e l ordinamento è casuale) Esempio di istanza della relazione Studenti sid nome login età media Jones jones@cs Smith smith@eecs Smith smith@math ! Cardinalità = 3, grado = 5, tutte le righe sono distinte! L ordinamento delle righe è irrilevante! Devono essere anche distinte tutte le colonne nell istanza di una relazione?
3 Campi di una relazione! Nel modello relazionale i campi di una relazione sono identificati dal nome! L ordine delle colonne è irrilevante! In SQL in alcuni casi ci si riferisce alle colonne in base alla loro posizione! Ad esempio, per inserire una nuova tupla nella relazione! Vincoli di dominio! I valori di ciascun campo di una tupla devono appartenere ai domini associati in fase di definizione dello schema Base di dati relazionale! Base di dati relazionale! Collezione di relazioni con nomi di relazione distinti! Schema di base di dati relazionale! Collezione degli schemi per le relazioni nella base di dati! Istanza di una base di dati relazionale! Collezione di istanze di relazione, una per ogni schema di relazione nella BD
4 CREARE E MODIFICARE RELAZIONI CON SQL Introduzione In SQL la relazione è indicata con il nome di TABLE (tabella) Il sottoinsieme di SQL che consente di creare, cancellare e modificare le tabelle è chiamato DDL (Data Definition Language) SQL contiene domini predefiniti, e consente di definirne di nuovi
5 Introduzione! Vedremo nel seguito i comandi SQL per! definire, modificare, cancellare una tabella! Inserire, modificare, cancellare dati in una tabella! Di solito queste operazioni vengono effettuate mediante moduli in interfacce grafiche! il sistema invierà al DBMS i comandi SQL corrispondenti CREATE TABLE CREATE TABLE Studenti ( sid CHAR(20), nome CHAR(30), login CHAR(20), età INTEGER, media REAL)
6 Inserimento di valori in una tabella INSERT INTO Studenti(sid,nome,login,età,media) VALUES (52688, Smith, 18, 28.1)! I nomi delle colonne possono essere omessi se si devono inserire valori per tutti i campi! in questo caso la lista dei valori deve rispettare l ordinamento dei campi come definito nello schema Cancellazione di tuple DELETE FROM Studenti S WHERE S.nome = Smith La clausola WHERE specifica le tuple che vogliamo cancellare
7 Modifica dei valori di una tabella UPDATE Studenti S SET S.età = S.età + 1, S.media = 0.95*S.media WHERE S.sid = UPDATE Studenti S SET S.media = 0.95*S.media WHERE S.media <= 24.5 VINCOLI D INTEGRITÁ SULLE RELAZIONI
8 Vincoli di integrità (VI)! VI: condizione che deve essere vera per qualunque istanza della base di dati; ad esempio vincoli di dominio! I VI sono specificati quando si definisce lo schema! I VI sono controllati quando si modificano le relazioni! Una istanza legale di una relazione è una istanza che soddisfa tutti i VI specificati! I DBMS non dovrebbero permettere istanze illegali! Se il DBMS controlla i VI, i dati memorizzati sono più fedeli al significato nel mondo reale! Si evitano anche gli errori di inserimento! Vincoli di chiave primaria! Un insieme di campi è una chiave per una relazione se! due tuple distinte non possono avere gli stessi valori in tutti i campi chiave, e! ciò non è vero per qualunque sottoinsieme della chiave! La condizione 2 è falsa? Si ha una superchiave! Se c è più di una chiave, il DBA sceglie una delle chiavi come chiave primaria! Esempio sid è una chiave per Studenti (e nome?). L insieme {sid, media} è una superchiave
9 Chiavi primarie e candidate! Sono possibili molte chiavi candidate, una delle quali viene scelta come chiave primaria Per un dato studente e un dato corso, c è una singola classe oppure Gli studenti possono seguire solo un corso, e ricevere un singolo voto per quel corso; inoltre, nessuna coppia di studenti in un corso riceve lo stesso voto! Usato a sproposito, un VI può impedire la memorizzazione di istanze della base di dati che si presentano nella pratica! Specifica dei vincoli di chiave in SQL CREATE TABLE Studenti( sid CHAR(20), nome CHAR(30), login CHAR(20), età INTEGER, media REAL, UNIQUE(nome,età), CONSTRAINT ChiaveStudenti PRIMARY KEY (sid))
10 Chiavi esterne, integrità referenziale! Chiave esterna: insieme di campi in una relazione che viene usato per riferirsi a una tupla in un altra relazione (deve corrispondere alla chiave primaria della seconda relazione).! Simile a un puntatore logico! Se tutti i vincoli di chiave esterna sono garantiti, si raggiunge l integrità referenziale (nessuna referenza irrisolta)! HTML è un modello di dati senza integrità referenziale! Integrità referenziale Ad esempio, studid è una chiave esterna che fa riferimento a Studenti Iscritto(studid: string, cid: string voto: string)
11 Garantire l integrità referenziale! Che cosa si dovrebbe fare se viene inserita in Iscritti una tupla con un ID studente che non esiste? (Rifiutarla!)! Cosa fare se viene cancellata una tupla di Studenti?! Cancellare anche le tuple di Iscritti che vi fanno riferimento! Non permettere la cancellazione di tuple di Studenti cui si fa riferimento da Iscritti! Impostare a un sid predefinito il sid delle tuple di Iscritti che puntano a Studenti! In SQL, anche: impostare al valore speciale NULL (denota sconosciuto o inapplicabile ) il sid delle tuple di Iscritti che si riferiscono a Studenti (ma il sid in Studenti non può mai essere NULL) Specifica dei vincoli di chiave esterna in SQL CREATE TABLE Iscrizioni ( studid cid voto CHAR(20), CHAR(20), CHAR(10), PRIMARY KEY(studid,cid), FOREIGN KEY(studid) REFERENCES Studenti)
12 Da dove vengono i VI?! I VI sono basati sulla semantica dell organizzazione del mondo reale che viene descritta nelle relazioni della base di dati! Possiamo controllare l istanza di una base di dati per vedere se un VI viene violato, ma non possiamo MAI inferire che un VI è vero solo esaminando un istanza! Un VI è una asserzione su tutte le possibili istanze!! Analizzando l esempio si può scoprire che nome non è una chiave, ma è necessario ci sia un asserzione per stabilire che sid è una chiave! VI su chiavi e su chiavi esterne sono i più comuni; sono supportati anche VI più generali APPLICAZIONE DEI VINCOLI D INTEGRITÁ
13 Vincolo di chiave INSERT INTO Studenti(sid,nome,login,età,media) VALUES (53688, Mike, 17, 22.1) Questo inserimento viola il vincolo di chiave primaria, e pertanto il DBMS rifiuterà la richiesta INSERT INTO Studenti(sid,nome,login,età,media) VALUES (NULL, Mike, mike@ee, 17, 22.1) Questo inserimento viola il vincolo per cui la chiave primaria non può contenere NULL Considerazioni analoghe nel caso di operazioni di aggiornamento Vincoli di dominio! Le operazioni di inserimento e di aggiornamento sono accettate solo se i valori dei campi appartengono al dominio di definizione! Le operazioni di cancellazione non causano violazione dei vincoli di chiave primaria, unicità e di dominio
14 Vincoli di chiave esterna! Consideriamo le tabelle Studenti e Iscrizioni! La cancellazione di tuple in Iscrizioni non viola l integrità referenziale! Gli inserimenti di tuple in Iscrizioni possono violare l integrità referenziale d altra parte! La cancellazione di tuple in Studenti potrebbe violare l integrità referenziale! Gli inserimenti di tuple in Studenti non violano l integrità referenziale Vincoli di chiave esterna e SQL! Come gestire l inserimento in Iscrizioni di una riga con un valore di studid che non compare in Studenti?! Il comando INSERT viene ignorato
15 Vincoli di chiave esterna e SQL! Come gestire la cancellazione di una riga di Studenti? 1. Cancellare tutte le righe di Iscrizioni che la referenziano 2. Non consentire la cancellazione se vi sono righe di Iscrizioni che la referenziano 3. Impostare il valore di studid delle righe di Iscrizioni che la referenziano con un qualche valore predefinito 4. Impostare il valore di studid delle righe di Iscrizioni che la referenziano a NULL! Questa opzione è però in contrasto con il vincolo di chiave primaria per Iscrizioni Vincoli di chiave esterna e SQL! Come gestire la modifica dei valori di chiave primaria nella tabella Studenti?! Opzioni analoghe al caso di cancellazione
16 Vincoli di chiave esterna e SQL! SQL consente di scegliere separatamente una delle quattro opzioni per operazioni di cancellazione (DELETE) e aggiornamento (UPDATE) 1. CASCADE 2. NO ACTION (operazione predefinita) 3. SET DEFAULT Il valore di default è specificato in fase di definizione del dominio del campo 4. SET NULL Esempio CREATE TABLE Iscrizioni ( studid CHAR(20), cid CHAR(20), voto CHAR(10), PRIMARY KEY(studid,cid), FOREIGN KEY(studid) REFERENCES Studenti ON DELETE CASCADE ON UPDATE NO ACTION)
17 ELIMINAZIONE E MODIFICA DI TABELLE Eliminazione di tabelle DROP TABLE Studenti Elimina la tabella Studenti DROP TABLE Studenti RESTRICT Elimina la tabella solo se nessuna vista è definita a partire da Studenti
18 Modifica di tabelle ALTER TABLE Studenti ADD COLUMN NomeTutore CHAR(10) Aggiunge una colonna alla tabella Studenti. Il comando ALTER consente anche di cancellare e modificare colonne aggiungere e cancellare vincoli di integrità INTERROGARE BASI DI DATI RELAZIONALI
19 Interrogazione (query)! Può essere definita come una domanda sui dati e la risposta consiste in una nuova relazione! Un linguaggio di interrogazione è un linguaggio specializzato per scrivere interrogazioni Linguaggi di Interrogazione Relazionali! Uno dei punti di forza del modello relazionale: supporta un semplice ma potente linguaggio di interrogazione dei dati.! Le interrogazioni possono essere scritte in maniera intuitiva, e il DBMS è responsabile di una valutazione efficiente! Fattore chiave: semantica precisa per le interrogazioni relazionali.! Permette all ottimizzatore di riordinare estensivamente le operazioni, garantendo che la risposta non cambi
20 Esempio SQL SELECT * FROM Studenti S WHERE S.età < 18 È la formulazione in SQL della domanda: Quali sono i dati degli studenti che hanno meno di 18 anni? Esempio SQL SELECT S.nome, I.cid FROM Studenti S, Iscrizioni I WHERE S.sid = I.studid AND I.voto=30 È la formulazione in SQL della richiesta: Mostrare il nome degli studenti e il corso nel quale hanno ottenuto un voto pari a 30
21 Modello relazionale: sommario! Una rappresentazione tabellare dei dati! Semplice e intuitivo, attualmente il più usato! Il DBA può specificare vincoli di integrità basati sulla semantica dell applicazione. Il DBMS controlla eventuali violazioni! Due VI importanti: chiavi primarie e chiavi esterne! Inoltre abbiamo sempre vincoli di dominio! Esistono linguaggi di interrogazione potenti e naturali
SQL: DDL, VI, Aggiornamenti e Viste
SQL: DDL, VI, Aggiornamenti e Viste 1 SQL è più di un semplice linguaggio di interrogazione v Linguaggio di definizione dati (Data-definition language, DDL): Crea/distrugge/modifica relazioni e viste Definisce
SQL: Definizione e Manipolazione di Relazioni. Capitolo 2
SQL: Definizione e Manipolazione di Relazioni Capitolo 2 1 Sintassi della Creazione di uno Schema Relazionale CREATE TABLE ( [NOT NULL] [UNIQUE] [],...,...,
Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2
Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2 Vincoli di integrita 2 Cosa e un vincolo di integrita E una proprieta sempre valida
SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:
SQL SQL (pronunciato anche come l inglese sequel): acronimo di Structured Query Language (linguaggio di interrogazione strutturato) Linguaggio completo che presenta anche proprietà di: DDL (Data Definition
Elena Baralis 2007 Politecnico di Torino 1
Introduzione Istruzione INSERT Istruzione DELETE Istruzione UPDATE Linguaggio SQL: fondamenti 2 (1/3) Inserimento di tuple Cancellazione di tuple Modifica di tuple 4 (2/3) INSERT inserimento di nuove tuple
Modello relazionale: Concetti Base. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma
Modello relazionale: Concetti Base Schema di una Relazione Lo schema di una relazione specifica: Il nome della relazione Il nomediognicampo(o colonna o attributo) e il dominio di ciascun campo Esempio:
Manuale SQL. Manuale SQL - 1 -
Manuale SQL - 1 - Istruzioni DDL Creazione di una tabella : CREATE TABLE Il comando CREATE TABLE consente di definire una tabella del database specificandone le colonne, con il tipo di dati ad esse associate,
SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini
SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA 3. Panoramica su SQL Prof. Mauro Giacomini Sommario Introduzione Istruzione SELECT Tipi di Join Subquery Comandi DML Creazione delle tabelle Introduzione
SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)
1 SQL Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) a.a. 2017/2018 http://www.di.uniba.it/~lisi/courses/basi-dati/bd2017-18.htm Prof.ssa Francesca A. Lisi [email protected]
SQL DDL. Create database. Alter database. Drop database
SQL In informatica, SQL (Structured Query Language) è un linguaggio standardizzato per database basati sul modello relazionale (RDBMS), progettato per le seguenti operazioni: creare e modificare schemi
I.I.S. G. COSSALI - ORZINUOVI DATABASE. Marzo 2017 Prof. Dario Tomasoni 1
I.I.S. G. COSSALI - ORZINUOVI DATABASE Marzo 2017 Prof. Dario Tomasoni 1 IMPOSTAZIONE 60 min = Database concetti + Esercizi; 10 min = pausa; 30 min = Linguaggio SQL; 30 min = Database prove LibreOffice
Progettazione concettuale usando il modello Entità-Relazione (ER)
Progettazione concettuale usando il modello Entità-Relazione (ER) 1 Introduzione alla progettazione delle basi di dati Progettazione concettuale (in questa fase si usa il modello ER) Quali sono le entità
V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/2002 4.1
Modelli di Base Dati 4 Un DBMS: Access a.a. 2001/2002 4.1 DBMS 4.2 DBMS = Data Base Management System Software per la costruzione e la gestione di una base dati Esempi di DBMS: Oracle, MySQL, SQLServer,
Corso di Basi di Dati A.A. 2015/2016
Corso di Laurea in Ingegneria Gestionale Sapienza Università di Roma Corso di Basi di Dati A.A. 2015/2016 E3 - MySQL: Creazione di Schemi ed Interrogazioni Tiziana Catarci, Andrea Marrella Ultimo aggiornamento
SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)
SQL quick reference piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013) I tipi dei dati di SQL sono: delimitatori delle costanti: TEXT(n) stringa di caratteri
8 SQL : Check, Asserzioni,Viste
Corso di Laurea in Ingegneria Gestionale SAPIENZA Università di Roma Esercitazioni del corso di Basi di Dati Prof.ssa Catarci e Prof.ssa Scannapieco Anno Accademico 2011/2012 8 SQL : Check, Asserzioni,Viste
Interrogazioni nidificate
Interrogazioni nidificate Nella clausola where si possono utilizzare valori prodotti da altre istruzioni select utilizzando any (qualsiasi) o all (tutti) insieme agli operatori di confronto Trovare nome,
Linguaggio SQL: costrutti avanzati Controllo dell accesso
Linguaggio SQL: costrutti avanzati D B M G Sicurezza dei dati Risorse e privilegi Gestione dei privilegi in SQL Gestione dei ruoli in SQL D B M G 2 Pag. 1 1 D B M G Sicurezza dei dati Protezione dei dati
Basi di Dati: Corso di laboratorio
Basi di Dati: Corso di laboratorio Lezione 2 Raffaella Gentilini 1 / 45 Sommario 1 Il DDL di SQL: Cancellazione ed Aggiornamento di una BD Cancellazione di Schemi, Tabelle, e Domini Aggiornamento di Tabelle
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1996-2002 : SQL SQL originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene sia il DDL sia
SQL. Lezione 1. Docente: Alberto Belussi
LaboratoriodiBasidiDatieWeb Docente: Alberto Belussi Lezione 1 SQL Structured Query Language SQL è stato definito nel 1973 ed è oggi il linguaggio più diffuso per i DBMS relazionali Il linguaggio SQL è
Basi di Dati: Corso di laboratorio
Basi di Dati: Corso di laboratorio Lezione 9 Raffaella Gentilini 1 / 41 Sommario 1 DBMS Attivi e Triggers 2 2 / 41 DBMS Attivi DBMS Attivi I DBMS tradizionale sono passivi: Eseguono delle operazioni solo
DATABASE PER IL WEB. Programmazione Web 1
DATABASE PER IL WEB Programmazione Web 1 Archite3ura web con database Client Tier Web/App Tier DB Tier Client Web / App Server Database Il server web comunica con un altro server che con8ene il la banca
Il linguaggio SQL: DDL di base
Il linguaggio SQL: DDL di base Sistemi Informativi T Versione elettronica: 04.1.SQL.DDLbase.pdf SQL: caratteristiche generali SQL (Structured Query Language) è il linguaggio standard de facto per DBMS
Caratteristiche dei linguaggi per Database
IL LINGUAGGIO Caratteristiche dei linguaggi per Database I linguaggi per basi di dati relazionali possiedono i comandi per: definizione del data base; manipolazione dei dati; associazione tra tabelle diverse;
PROGETTAZIONE DI DATABASE Linguaggio SQL
PROGETTAZIONE DI DATABASE Linguaggio SQL Modello Concettuale (Modellazione del mondo reale) Modello Logico (Definizione del tipo e del formato dei dati) Modello Fisico (Implementazione fisica su supporti
