Il 0% ha trovato utile questo documento (0 voti)
18 visualizzazioni31 pagine

Domande Aperte Basi Di Dati

Caricato da

crapistoester
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
18 visualizzazioni31 pagine

Domande Aperte Basi Di Dati

Caricato da

crapistoester
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 31

DOMANDE LEZIONE 2

QUESITO 6-DESCRIVERE LE COMPONENTI DI UN SISTEMA INFORMATICO


Un sistema informatico, per fornire i servizi attesi dagli utenti, prevede i seguenti componenti
principali:
• il software e l’hardware di base;
• una base di dati, che contiene una rappresentazione del patrimonio informativo
dell’organizzazione;
• uno schema, descrive la struttura della base di dati, le operazioni per agire su di essa e le
restrizioni delle organizzazioni; uno schema, che descrive la struttura delle basi di dati, le
operazioni per agire su di essa e le restrizioni sui valori memorizzati nella base di dati e sui
modi in cui essi possono evolvere nel tempo (vincoli di integrità). Lo schema viene usato
dal sistema per garantire un uso corretto della base di dati;
• I programmi applicativi, che forniscono i servizi agli utenti eseguendo un certo insieme di
operazioni sulla base di dati.
• La comunicazione, che permette l’accesso ai servizi del sistema informatico ad utenti e
programmi

QUESITO 7-DESCRIVERE BREVEMENTE I CONCETTI CHE STANNO ALLA BASE


DEI QUATTRO STADI DELL'EVOLUZIONE DEI SISTEMI INFORMATICI:
I quattro stadi dell’evoluzione dei sistemi informatici sono i seguenti:
Primo stadio: applicazioni operative
Secondo stadio: servizi informatici di funzione
Terzo stadio: servizi informatici per l’organizzazione
Quarto stadio: servizi informatici per la pianificazione strategica

DOMANDE LEZIONE 3
QUESITO 4-DESCRIVERE BREVEMENTE I CONCETTI BASE DEI METODI DI
APPROCCIO ALLA GESTIONE DEI DATI DI TIPO CONVENZIONALE.
L’approccio alla gestione dei dati basato su file funziona bene nel caso di sistemi di piccole
dimensioni, prevalentemente single-user, o con scarsa necessità di condivisione dei dati. Non sono
in grado di gestire una grande mole di dati (non sono scalabili), non permettono l’accesso
simultaneo di più utenti ed applicazioni (non sono concorrenti)

QUESITO 5-DESCRIVERE BREVEMENTE I CONCETTI CHE STANNO ALLA BASE


DEI SISTEMI INFORMATICI DIREZIONALI.
A partire dalle basi di dati operazionali, che raccolgono le informazioni sugli effetti delle operazioni
quotidiane, si arriva a quelle del sistema informativo direzionale. La direzione, infatti, ha bisogno di
produrre report, analizzare dati, anche confrontandoli con quelli storici, per poter prendere delle
decisioni.

1
QUESITO 6- DESCRIVERE BREVEMENTE I METODI DI APPROCCIO ALLA
GESTIONE DEI DATI:
I metodi di approccio di gestione possono essere: I metodi convenzionali, sono basati sui files, non
si può fare una distinzione tra dati ed applicazioni. Queste contengono la logica di gestione e
memorizzazione dei dati. Il sistema operativo offre le basi per l’accesso ai files ed i meccanismi di
sicurezza del file-system, possono avere limitazioni e sono l’accesso ai file condivisi avviene
attraverso le politiche di accesso del file-system che utilizzano Lock a livello di file che generano
prestazioni limitate.

I metodi strutturati sono basati su software di gestione dei dati (DBMS). L’approccio alla
gestione dei dati basato su file funziona bene nel caso di sistemi di piccole dimensioni. Non sono in
grado di gestire molti dati, quindi non sono scalabili, mentre, se non permettono l’accesso di più
utenti ed applicazioni non sono concorrenti

DOMANDE LEZIONE 4
QUESITO 5-DESCRIVERE I VANTAGGI E LIMITI DEI DBMS:
I vantaggi sono molti: accesso ai dati indipendente dalla loro rappresentazione e memorizzazione,
tecniche di accesso ai dati ottimizzate (anche attraverso l’uso di strutture aggiuntive, come gli
indici), per migliorare le performance delle interrogazioni, possibilità di controllo dell’integrità e
della completezza dei dati, possibilità di controllo dell’accesso ai dati e modalità di accesso multi-
utente.
Svantaggi: non permettono visualizzazioni grafiche dei dati o delle strutture dati; implementano
funzionalità matematiche e statistiche elementari di base,

QUESITO 6-DEFINIRE IL CONCETTO DI BASE DI DATI E DI DBMS.


Un data base (Base di Dati) è una collezione omogenea di dati strutturati correlati tra loro. UN
DBMS è un insieme di programmi che permettono di creare, popolare, manipolare e condividere
una base di dati. Una base di dati è un insieme di dati che può essere gestita da un DBMS.

QUESITO 7- QUALI SONO I PUNTI DI VISTA ESSENZIALI DEL MONDO DELLE


BASI DI DATI?
I quattro punti di vista essenziali di una base di dati sono:Utente: come interagire con un DB
(aggiungere/modificare e recuperare informazioni), Progettista: come progettare un DB,
Programmare: sviluppo di applicazioni Web/Stand-Alone che si interfaccio con un DB e Analista:
strumenti per avere informazioni da un DB attraverso tecniche di data-mining.

QUESITO 8- DESCRIVERE IL PARADIGMA DI SEPARAZIONE TRA I DATI E LE


APPLICAZIONI
Paradigma di separazione di dati ed applicazioni: le applicazioni non devono di conoscere la
struttura fisica dei dati (es. come e dove sono memorizzati sulla memoria di massa) ma solo la
struttura logica, cioè, l’informazione che rappresentano.

2
DOMANDE LEZIONE 5
QUESITO 6-DESCRIVERE IL CONCETTO DI DATA BASE DISTRIBUITO E
SCALABILITÀ DI UN DBMS.
Il concetto di Scalabilità Orizzontale (Horizzontal Scaling) si applica ai DBMS quando nasce
l’esigenza di gestire grandi quantità di dati aumentando il numero di nodi usati per lo storage
(database distribuito)

QUESITO 7-DESCRIVERE DUE DELLE 4 CARATTERISTICHE CHE UN DBMS DEVE


POSSEDERE
Le caratteristiche DBMS sono: efficienza, concorrenza, affidabilità e sicurezza.
1)L’efficienza nella gestione dei dati, i DBMS sono dotate strutture dati per organizzare i dati
dentro dei file, e per supportare operazioni di ricerca e aggiornamento. Le strutture dati più
utilizzati sono quelle ad albero o attraverso tabelle hash. Le strutture ad albero dinamiche di tipo
B(B-tree) e B+(B+-tree) sono quelle più usate per la realizzazione di indici. L’efficienza è
enfatizzata dal concetto di indice, ovvero: struttura che contiene informazioni sulla posizione di
memorizzazione dei campi dati (tuple) sulla base del valore del campo chiave.

2)Affidabilità: alcune operazioni sui dati (es:trasferimento elettronico di denaro) sono delicate,
devono essere gestite inmodo deterministico, secondo la regola del tutto o niente. Bisogna essere
sicuri che la transazione monetaria avvenga o non avvenga. I DBMS utilizzano il meccanismo di
Roll-Back, in caso di anomalie l’operazione corrente viene annullata e lo stato del sistema viene
ripristinato prima dell’operazione non riuscita senza alcuna perdita di informazione (es: denaro).

QUESITO 8-QUANDO NON USARE UN DBMS IN UN PROGETTO SOFTWARE?


Non bisogna usare un DBMS, quando l'applicazione che si vuole sviluppare è: semplice,
relativamente stabile nel tempo, non prevede accesso concorrente da parte di più utenti

DOMANDE LEZIONE 6
QUESITO 5-DESCRIVERE L’ARCHITETTURA A LIVELLI DEI DBMS
Un DBMS può essere descritto con un’architettura software caratterizzata da almeno tre livelli detti
anche schemi:
o Schema Esterno: si occupa dell’interfacciamento del Data Base con l’utente
o Schema Logico: descrive cosa rappresenta il DB
o Schema Fisico: si occupa della memorizzazione dei dati

QUESITO 6- DESCRIVERE 2 DEI 5 LIVELLI FUNZIONALI DI UN DBMS


I vari livelli funzionali di un DBMS sono descritti mediante specifici linguaggi:
a) Data Query Language (DQL): utilizzato per interrogare il database, formulando query o
combinazioni di query ed estrarne così l’informazione desiderata (SQL, XQuery);
b) Data Definition Language (DDL): utilizzato per la gestione, a livello logico, delle strutture e
dei modelli dei dati. Consente di definire la struttura (schema, memorizzati nel dizionario dei
dati) del database. Comprende le operazioni di creazione, modifica ed eliminazione di oggetti
del database, ma non dei valori assunti dai dati al loro interno (SQL);

3
QUESITO 7-DESCRIVERE BREVEMENTE LA STORIA DEI DATA BASE
Negli anni’60, Charles Bachman (General Electric) progettò il primo DBMS basato sul modello
reticolare. Successivamente sviluppò l’Information Management System (IMS), basato sul
modello gerarchico di gestione dei dati, usato ancora oggi. L’IMS venne utilizzato come supporto
alle missioni Apollo per la gestione dei dati tecnici ed amministrativi e per la gestione delle
forniture di materiali. Negli anni 70’, Edgar Codd propone per la prima volta il modello relazionale,
basato sul concetto di relazione tra insiemi.

DOMANDE LEZIONE 7
QUESITO 5-DESCRIVERE BREVEMENTE IL CONCETTO DI CONOSCENZA
CONCRETA.
La conoscenza concreta, detta anche stato dell’universo del discorso, si evolve nel tempo, in quanto
le collezioni, le entità, i valori delle loro proprietà e le associazioni cambiano nel tempo per effetto
di processi continui (dipendenti dal trascorrere del tempo), o di processi discreti (dipendenti dal
verificarsi di eventi in certi istanti).

QUESITO 6-DESCRIVERE L’ASPETTO ONTOLOGICO NELLA MODELLAZIONE DEI


DATA BASE
L’aspetto ontologico, ovvero lo studio di ciò che esiste, riguarda ciò potrebbe esistere nell’universo
del discorso e quindi sia da modellare. Quando si utilizza la tecnologia delle basi di dati vanno
modellati questi fatti: la conoscenza concreta; astratta; procedurale e la comunicazione.

DOMANDE LEZIONE 8
QUESITO 5-DESCRIVERE LA DIFFERENZA TRA CONOSCENZA ASTRATTA E
CONOSCENZA PROCEDURALE.
La conoscenza astratta riguarda la struttura dell’universo del discorso, la conoscenza procedurale
riguarda le operazioni a cui può essere soggetta la conoscenza concreta, ed in particolare l’effetto di
tali operazioni ed il modo in cui esse si svolgono.

QUESITO 6-DESCRIVERE IL CONCETTO DI ASPETTO LINGUISTICO CONCRETO


L’aspetto linguistico concreto riguarda le caratteristiche, e la definizione, del linguaggio formale
usato per costruire il modello.

QUESITO 7-DA COSA DIFFERISCONO I VINCOLI D’INTEGRITÀ STATICI DA


QUELLI DINAMICI?
I vincoli d’integrità statici definiscono condizioni sui valori della conoscenza concreta che devono
essere soddisfatte indipendentemente da come evolve l’universo del discorso mentre i vincoli
d’integrità dinamici definiscono condizioni sul modo in cui la conoscenza concreta può evolvere
nel tempo
QUESITO 8-COSA SI INTENDE PER ASPETTO LINGUISTICO ASTRATTO?
L’aspetto linguistico astratto riguarda gli strumenti concettuali, o meccanismi di astrazione, adottati
per modellare l’universo del discorso

4
DOMANDE LEZIONE 9
QUESITO 5-FORNIRE UNA BREVE DESCRIZIONE DEL MODELLO DEI DATI AD
OGGETTI.
Si “definisce” il modello, ovvero si rappresenta la struttura della conoscenza concreta, le altre parti
della conoscenza astratta, la conoscenza procedurale, i tipi di comunicazione (definizione di schema
e applicazioni).

QUESITO 6-DESCRIVERE LE FASI PER LA COSTRUZIONE DI UN MODELLO


INFORMATICO.
Nella costruzione di un modello informatico si procede in due stadi:
• Si “definisce” il modello, ovvero si rappresenta la struttura della conoscenza concreta, le altre
parti della conoscenza astratta, la conoscenza procedurale, i tipi di comunicazione (definizione
di schema e applicazioni);
• Si “costruisce” la rappresentazione di fatti specifici conformi alle definizioni date, ovvero la
rappresentazione della conoscenza concreta (immissione dati)

QUESITO 7- COSA DEFINISCE UN TIPO OGGETTO?


Un oggetto è la rappresentazione, nel modello informatico, degli aspetti strutturali e
comportamentali di un'entità della realtà. Una caratteristica del modello ad oggetti, è che non
esistono limitazioni sulla complessità della struttura degli oggetti, ovvero, è sempre possibile avere
una corrispondenza biunivoca fra le entità e gli oggetti del modello che le rappresentano. Un
oggetto è un'entità software con stato, comportamento e identità, che modella un'entità
dell’universo del discorso. Lo stato è formato da un insieme di campi, o componenti, che possono
assumere valori di qualsiasi complessità che modellano le proprietà dell’entità.

QUESITO 8-COME SI RAPPRESENTANO GRAFICAMENTE GLI OGGETTI?


Un tipo oggetto si rappresenta con una notazione simile a quella usata in UML (Unified Modeling
Language):
➢ Un rettangolo diviso in tre parti;
➢ La prima contiene il nome del tipo;
➢ La seconda parte contiene i componenti dello stato e il loro tipo;
➢ La terza parte, che può mancare, contiene la descrizione di vincoli d’integrità.

DOMANDE LEZIONE 10
QUESITO 5-QUANDO SI DEFINISCONO PIÙ SOTTOCLASSI DI UNA STESSA
CLASSE, SULL'INSIEME DI SOTTOCLASSI QUALI VINCOLI POSSONO ESSERE
DEFINITI?
Due vincoli: il vincolo di disgiunzione, se ogni coppia di sottoclassi in questo insieme è disgiunta,
ovvero è priva di elementi comuni (sottoclassi disgiunte) e il vincolo di copertura, se l’unione
degli elementi delle sottoclassi coincide con l’insieme degli elementi della superclasse (sottoclassi
copertura).

5
QUESITO 6-QUANDO UN'INTERFACCIA È DEFINITA PER EREDITÀ?
Si dice che la definizione dell’interfaccia di un tipo oggetto è data per ereditarietà a partire da un
tipo T quando questa definizione è fornita specificando cosa va aggiunto o modificato per ottenere
il nuovo tipo a partire da T. Un’interfaccia è definita per ereditarietà da un’interfaccia I specificando
quali attributi aggiungere ad I e come, eventualmente, modificare (overriding) il tipo degli attributi
ereditati, ovvero degli attributi già presenti in I. In genere si impone che, nel definire un’interfaccia
per ereditarietà, se si modifica il tipo di un attributo, il nuovo tipo sia un sottotipo del tipo
precedente (vincolo di ereditarietà stretta).

DOMANDE LEZIONE 11
QUESITO 5-IN COSA DIFFERISCE IL MODELLO ENTITÀ-RELAZIONE DA QUELLO
AD OGGETTI?
Rispetto al modello a oggetti, il modello entità-relazione: non tratta aspetti procedurali (metodi) né
gerarchie di inclusione tra collezioni; non distingue collezioni e tipi; non supporta alcun
meccanismo di ereditarietà. Definisce un meccanismo per modellare direttamente le associazioni, e
le associazioni non binarie o con proprietà
DOMANDE LEZIONE 12
QUESITO 5-QUALI SONO LE FASI DELLA METODOLOGIA DI PROGETTAZIONE
PER LA COSTRUZIONE DI SISTEMI COMPLESSI? FORNIRE UNA DESCRIZIONE
SINTETICA.
La costruzione di un sistema complesso, e di un qualunque sistema informatico, è un processo che
si articola in tre fasi: analisi dei requisiti: in questa fase si stabilisce che cosa il committente si
aspetta dal sistema; progetto del sistema: in questa fase si progetta un sistema che soddisfi le
esigenze del committente; realizzazione del sistema progettato. Le fasi di analisi dei requisiti e
progetto del sistema sono chiamate collettivamente progettazione poiché il loro scopo è la
produzione di un progetto del sistema realizzare

QUESITO 6-QUALI OBIETTIVI UNA METODOLOGIA DI PROGETTAZIONE PER LA


COSTRUZIONE DI SISTEMI COMPLESSI DOVREBBE SODDISFARE?
In questo contesto, una metodologia dovrebbe soddisfare i seguenti obiettivi:
• Controllo costante di qualità: la metodologia dovrebbe permettere di verificare la
corrispondenza di tutti i progetti intermedi ai requisiti dell’utente, poiché la correzione di un
errore in una fase avanzata ha un costo molto superiore rispetto a quella di una fase
precedente;
• Supporto al progettista: la metodologia dovrebbe permettere al progettista di sapere in
ogni momento come operare, anche senza limitarne la libertà di azione;
• Supporto alla gestione: la struttura della metodologia dovrebbe permettere a chi gestisce il
progetto di assegnare le risorse per le varie fasi riducendo al minimo gli errori di
valutazione. Le attività di produzione di documenti (documentazione) e di revisione del
lavoro dei progettisti da parte di altri, previste da ogni metodologia, dovrebbero permettere a
chi gestisce il progetto di verificare costantemente il rispetto dei tempi e degli obiettivi, e

6
dovrebbero permettere di sostituire, in ogni momento, uno o più progettisti, senza che
pregiudichi l’andamento del progetto;
• Sovraccarico limitato: le attività di documentazione, incontri e revisione previste da ogni
metodologia tolgono tempo alla progettazione. Queste attività devono essere calibrate in
modo che i benefici ottenuti superino il costo. È fondamentale l’utilizzo di strumenti di
supporto informatici per la metodologia (strumenti CASE) che permettano di automatizzare
tutti i compiti ripetitivi e che facilitino la produzione e gestione della documentazione.

QUESITO 7- DESCRIVERE IL CONCETTO DI APPLICAZIONE DI UN SISTEMA


INFORMATICO;
Un'applicazione è una parte di un sistema informatico finalizzata a soddisfare le esigenze
informative di un settore dell'organizzazione. Un'applicazione interagisce con una parte della base
di dati (possiede una "vista" della base di dati). Ad un'applicazione è associato un insieme di
operazioni degli utenti (le operazioni dell'applicazione)

QUESITO 8- LA PROGETTAZIONE E REALIZZAZIONE DI UN QUALUNQUE


PROGETTO SOFTWARE COINVOLGE QUALI ATTORI?
• Il committente, che ha un problema e paga una ditta fornitrice perché lo risolva
• Il responsabile del progetto, che è un dirigente della ditta fornitrice che dirige il processo di
produzione del software. Il responsabile non partecipa direttamente alla progettazione, ma fissa
insieme al committente gli obiettivi del progetto, assegna tempi e risorse (risorse umane) alla
progettazione stessa, e verifica il buon uso delle risorse ed il rispetto dei tempi e degli obiettivi;
• Il progettista, che, insieme ad altri, realizza il progetto rispettando i tempi e gli obiettivi fissati
dal responsabile, o contratta con il responsabile modifiche a tempi e obiettivi che si rivelino non
realistici. Gruppi diversi partecipano a fasi diverse della progettazione, e persone diverse
possono sostituire anche all'interno di una singola fase o di un singolo compito

DOMANDE LEZIONE 13
QUESITO 5-FORNIRE UNA DESCRIZIONE DEL METODO DI PROTOTIPAZIONE
RAPIDA DELLE BASI DI DATI
Un prototipo è una versione preliminare e funzionante di ciò che va realizzato, che esibisca le
caratteristiche funzionali essenziali, ignorando i requisiti sulle prestazioni. Affinché un impegno di
prototipazione risulti economicamente vantaggioso, il costo della realizzazione dei prototipi deve
essere una piccola frazione del costo di una prima realizzazione delle applicazioni sul DBMS
prescelto. Questo è possibile usando strumenti specializzati per la produzione rapida di prototipi.

QUESITO 6-DESCRIVERE BREVEMENTE LE METODOLOGIE CLASSICHE DI


PROGETTAZIONE DEI DELLE BASI DI DATI;
Dalla fase di progettazione di una base di dati si ottiene la specifica della struttura della base di
dati e delle operazioni in un linguaggio non eseguibile. Successivamente si passa alla fase di
codifica nel linguaggio del DBMS prescelto per poi procedere con le altre fasi tradizionali del
processo di sviluppo del software: validazione, prova, messa a punto, manutenzione

7
QUESITO 7-DESCRIVERE GLI STRUMENTI FORMALI CHE SI ADOPERANO PER
LA PROGETTAZIONE DELLE BADI SI DATI.
Le metodologie adottano meccanismi di astrazione e formalismi diversi durante le varie fasi del
processo di progettazione che ricadono in queste categorie:
❖ Diagrammi per la descrizione dei dati: descrivono la struttura dei dati. Ad esempio quelli
entità-relazioni e la rappresentazione grafica del modello a oggetti,
❖ Diagrammi di flusso dati: descrivono le operazioni, mostrando come ognuna possa essere
divisa in sotto operazioni e qual è il flusso dei dati tra queste operazioni;
❖ Diagrammi di stato: descrivono in che modo lo stato del sistema, o di una componente del
sistema, evolve in corrispondenza di un evento. Servono a specificare sistemi che reagiscono ad
eventi, quindi la parte di un’applicazione che gestisce il dialogo con l’utente.

DOMANDE LEZIONE 14
QUESITO 5-DESCRIVERE IL CONCETTO DI ANALISI DEI REQUISITI NEL
CONTESTO DELLA PROGETTAZIONE DELLE BASI DI DATI.
Le caratteristiche principali delle fasi di analisi dei requisiti e di progettazione concettuale, per
dare suggerimenti su come procedere nella definizione dello schema concettuale di una base di
dati. L’analisi dei requisiti presuppone lo studio dell’organizzazione, e delle sue finalità, con la
valutazione di questi aspetti: gli obiettivi del sistema informatico da realizzare, le attività
dell’organizzazione che devono essere supportate dal sistema informatico, le unità organizzative
(settori o aree funzionali) che utilizzeranno il sistema informatico; il piano di sviluppo del sistema
informatico, ed uno studio di fattibilità con la stima di costi e tempi del piano di sviluppo, per
verificarne la convenienza.

L’analisi dei requisiti raffina i risultati di questo studio specificando ciò che l’organizzazione, ed i
vari settori che la compongono, si aspetta dal sistema informatico in corso di progettazione,
arrivando a rappresentare la struttura delle informazioni da trattare e le procedure che dovranno
essere realizzate. Il risultato della fase di analisi dei requisiti può essere dato in modi diversi, che
possono anche coesistere: informalmente, con linguaggio naturale ristretto, con tabelle integrate da
rappresentazioni diagrammatiche; con un linguaggio formale non eseguibile.

QUESITO 6-CON RIFERIMENTO AI DIAGRAMMI DI STATO SPIEGARE IL


CONCETTO DI PROGETTAZIONE PER RAFFINAMENTO
I diagrammi di stato si prestano bene alla progettazione per raffinamento, scomponendo uno
stato in sottostati. Questo permette di associare direttamente ad un superstato (cioè ad uno stato che
è stato raffinato) le transizioni che riguardano tutti i suoi sottostati (si consideri ad esempio la
transizione attivata dall’evento “richiesta abort”). Ad un maggior livello di dettaglio, un’azione
associata ad una transizione (“segnala abort”) possa essere anche considerata un’operazione
eseguita dal sistema in un certo stato.

8
DOMANDE LEZIONE 15
QUESITO 5-LA SCRITTURA DI FRASI NELLA SPECIFICA DEI REQUISITI CHE
TIPO DI CARATTERISTICHE DEVE AVERE? ELENCARE ALMENO DUE ESEMPI.
È bene che la specifica dei requisiti sia scritta utilizzando frasi con una struttura il più possibile
elementare ed omogenea, come nell’esempio che segue. Frasi di carattere generale: si vogliono
gestire informazioni relative a domande di trasferimento ed alla corrispondenza tra corsi esterni e
corsi interni. Frasi relative ai corsi interni Di un corso interno interessano: il nome e il numero di
crediti.

QUESITO 7-DESCRIVERE BREVEMENTE I PASSI CARATTERISTICI DELL'ANALISI


DEI REQUISITI.
Passo1: Analisi del sistema informativo esistente e raccolta di una versione dei requisiti in
linguaggio naturale, con coinvolgimento degli utenti. Passo 2-3: la descrizione va rielaborata,
togliendo informazioni non rilevanti, ambiguità, sinonimie, omonimie, ponendo domande
specifiche che portano a questo risultato. Passo 4: costruzione del glossario, che viene alimentato
durante la raccolta dei requisiti, e che aiuta a risolvere qualsiasi tipologia di ambiguità, ponendo in
esso I termini definitive che verranno utilizzati. Passo 5: definizione di uno schema, “scheletro”,
dei fatti essenziali, usando il formalismo opportune, e che sarà poi completato in fase di
progettazione concettuale. Si identificano le classi, si descrivono le associazioni tra di esse, si
individuano le sottoclassi. Passo 6: specifica delle operazioni (un’operazione si specifica col tipo di
interazione che ci sarà con l’utente e i depositi di dati interessati).

DOMANDE LEZIONE 16
QUESITO 5-QUALI PASSI PREVEDE LA PROGETTAZIONE PER LA PRODUZIONE
DEL PROGETTO CONCETTUALE NELL’APPROCCIO PER INTEGRAZIONE?
La progettazione per la produzione del progetto concettuale nell’approccio per integrazione richiede
i seguenti passi: definisci gli schemi di settore; integra gli schemi di settore; ristruttura
eventualmente lo schema finale; definisci l’architettura delle operazioni degli utenti e i metodi degli
oggetti; controlla la completezza delle operazioni degli utenti e di base.

QUESITO 6-DESCRIVERE GLI OBIETTIVI DELLA PROGETTAZIONE


CONCETTUALE DI UNA BASE DI DATI.
Un buon progetto concettuale è importante quando aumenta la complessità del sistema da
realizzare, perché il processo di sviluppo richiede risorse da rendere, difficilmente praticabile, una
riprogettazione del sistema in caso di funzionamento non soddisfacente. Le tre principali proprietà
che caratterizzano un buon progetto concettuale sono:
a) Completezza concettuale: vanno specificati tutti gli aspetti delle applicazioni, per consentirne
una realizzazione corretta;
b) Indipendenza dalle applicazioni: lo schema concettuale non deve essere fatto in funzione
dell’efficienza di applicazioni, ma con l’obiettivo di modellazione.
c) Indipendenza dal DBMS: nello schema concettuale si prescinde da aspetti specifici del DBMS
impiegato nella realizzazione.

9
QUESITO 7-QUAL È LO SCOPO DELLA PROGETTAZIONE CONCETTUALE DI UNA
BASE DI DATI?
Lo scopo della progettazione concettuale è tradurre il risultato dell’analisi dei requisiti settoriali in
una descrizione formale ed integrata degli aspetti strutturali e dinamici del sistema informatico.

QUESITO 8-DESCRIVERE LA PROCEDURA PER PRODURRE LO SCHEMA


CONCETTUALE DI UNA BASE DI DATI.
Per produrre lo schema concettuale di una base di dati bisogna raffinare la definizione degli
schemi scheletro settoriali definiti nella specifica dei requisiti e produrre uno schema globale. La
produzione di uno schema globale si divide: per particolarizzazione o per integrazione.
Nell’approccio per particolarizzazione, si definiscono i dati comuni a tutti i settori, si
particolarizzano le definizioni prodotte tenendo conto delle esigenze di ogni settore.
Nell’approccio per integrazione, si definisce per ogni settore uno schema parziale delle
informazioni, per aggregazioni successive dei sottoschemi associati ad ogni applicazione. Si
analizzano ed integrano questi schemi parziali in un unico schema concettuale che soddisfi i
requisiti di tutti i settori.

DOMANDE LEZIONE 17
QUESITO 5-QUALI SONO LE FAMIGLIE DEI LINGUAGGI PER INTERROGARE
UNA BASE DI DATI RELAZIONALE?
I linguaggi per interrogare una base di dati relazionale permettono di definire la relazione
risultato a partire dalle relazioni che compongono la base di dati. Sono riconducibili a tre famiglie:
❖ Linguaggi algebrici: un’interrogazione è definita da un’espressione con operatori su relazioni
che producono come risultato altre relazioni;
❖ Linguaggi basati sul calcolo dei predicati: un’interrogazione è definita da una formula del
calcolo dei predicati del primo ordine;
❖ Linguaggi logici: sono linguaggi ispirati dal linguaggio logico Prolog, in cui un’interrogazione
è definita da un insieme di formule del calcolo dei predicati del primo ordine, ricorsive ma con
una struttura molto rigida (formule Horn)

QUESITO 6-COSA SI INTENDE PER ASPETTO INTENSIONALE DEL MODELLO DEI


DATI RELAZIONALE?
L’aspetto intensionale del modello dei dati viene caratterizzato da due definizioni: uno schema di
relazione R: {T} è una coppia formata da un nome di relazione R e da un tipo relazione definito
come:
▪ int, real, boolean e string sono tipi primitivi;
▪ Se T1, Tn sono tipi primitivi, e A1, An sono etichette distinte, dette attributi, allora (A1:T1,
An:Tn) è un tipo ennupla di grado n.
▪ Due tipi ennupla sono uguali se hanno uguale il grado, gli attributi e il loro tipo con lo stesso
nome. L’ordine degli attributi non è significativo;
▪ Se T è un tipo ennupla, allora {T} è un tipo insieme di ennuple o tipo relazione;
▪ Due tipi relazione sono uguali se hanno lo stesso tipo ennupla.

10
DOMANDE LEZIONE 18
QUESITO 5-QUALI SONO I PASSI DA SEGUIRE PER LA TRASFORMAZIONE DI
UNO SCHEMA AD OGGETTI IN UNO SCHEMA RELAZIONALE?
La trasformazione di uno schema ad oggetti in uno schema relazionale avviene eseguendo questi
passi:
▪ PASSO 1: Rappresentazione delle associazioni uno a molti e uno ad uno;
▪ PASSO 2: Rappresentazione delle associazioni molti a molti;
▪ PASSO 3: Rappresentazione delle gerarchie fra classi;
▪ PASSO 4: Definizione delle chiavi primarie,
▪ PASSO 5: Rappresentazione degli attributi multivalore;
▪ PASSO 6: Appiattimento degli attributi composti.

QUESITO 6- QUALI SONO GLI OPERATORI PRIMITIVI DELL’ALGEBRA


RELAZIONALE?
Gli operatori primitivi sono: ridenominazione, unione, differenza, proiezione, restrizione e
prodotto

DOMANDE LEZIONE 19
QUESITO 5-FORNIRE UNA DESCRIZIONE DEGLI OPERATORI DERIVATI
DALL’ALGEBRA RELAZIONALE
Alcune definizioni di operatori che sono un’abbreviazione di espressioni dell’algebra usate
frequentemente: intersezione; divisione; giunzione (join); giunzione naturale (natural join); semi-
giunzione (semi join).

QUESITO 6-DESCRIVERE LA DIFFERENZA TRA OPERATORI PRIMITIVI E


DERIVATI DALL’ALGEBRA RELAZIONALE
Operatori primitivi sono un insieme minimo di operatori, mentre gli operatori derivati, sono derivati
dai precedenti, ed esprimono, in modo sintetico, alcune operazioni complesse molto frequenti
nell’uso di basi di dati relazionali.

DOMANDE LEZIONE 20
QUESITO 5-DESCRIVERE LE PROPRIETÀ DI ASSOCIATIVITÀ DEGLI OPERATORI
INSIEMISTICI DELL’ALGEBRA RELAZIONALE.
Le proprietà di associatività degli operatori insiemistici dell’algebra relazionale sono:
(𝐸1 ∪ 𝐸2 ) ∪ 𝐸3 = 𝐸1 ∪ (𝐸2 ∪ 𝐸3 )
(𝐸1 ∩ 𝐸2 ) ∩ 𝐸3 = 𝐸1 ∩ (𝐸2 ∩ 𝐸3 )

QUESITO 6-DESCRIVERE LE PROPRIETÀ DI COMMUTAZIONE DEGLI


OPERATORI INSIEMISTICI DELL’ALGEBRA RELAZIONALE.
Le proprietà di commutatività degli operatori insiemistici dell’algebra relazionale
𝐸1 ∪ 𝐸2 = 𝐸2 ∪ 𝐸1
𝐸1 ∩ 𝐸2 = 𝐸2 ∩ 𝐸1
𝐸1 − 𝐸2 ≠ 𝐸2 − 𝐸1
11
DOMANDE LEZIONE 21
QUESITO 5-DEFINIRE IL CONCETTO RELAZIONALE SU ENNUPLE
Il calcolo relazionale è un linguaggio che permette di definire il risultato di un’interrogazione
come l’insieme di quelle ennuple che soddisfano una certa condizione φ. Esiste un altro
linguaggio, detto calcolo relazionale su domini, equivalente al calcolo relazionale su ennuple da cui
differisce per il fatto che le variabili della condizione φ assumono come valori elementi di domini
invece che ennuple

QUESITO 6- COSA È IL DATALOG E DA COSA È CARATTERIZZATO?


Il Datalog è un linguaggio di interrogazione per basi di dati e di programmazione logica
sintatticamente derivato da Prolog rappresentandone un sottoinsieme relativo ai database
relazionali; infatti è basato su regole di deduzione ma non permette l'utilizzo di simboli di funzione
né un modello di valutazione non procedurale. Il linguaggio Datalog è più espressivo dell’algebra
relazionale perché le clausole possono essere ricorsive. Quello puro non è in grado di esprimere gli
operatori di differenza e di complemento, esprimibili nell’algebra e nel calcolo. Valgono queste
equivalenze:
▪ Il Datalog senza definizioni ricorsive ha lo stesso potere espressivo dell’algebra e del calcolo
nelle loro versioni positive, prive di negazione, complemento e differenza;
▪ Il Datalog senza definizioni ricorsive ma con opportuni operatori di negazione ha lo stesso
potere espressivo dell’algebra e del calcolo;
▪ L’algebra ed il calcolo positivi, con opportuni operatori di punto fisso, hanno lo stesso potere
espressivo del Datalog;
▪ L’algebra ed il calcolo, con operatori di punto fisso, hanno lo stesso potere espressivo del
Datalog, migliorato con un’opportuna forma di negazione.

DOMANDE LEZIONE 22
QUESITO 5- QUAL È LO SCOPO PRINCIPALE DELLA TEORIA DELLA
NORMALIZZAZIONE?
Lo scopo principale della teoria della normalizzazione è quello di fornire strumenti formali per la
progettazione di basi di dati che non presentino anomalie, senza prendere in considerazione il costo
delle operazioni.

QUESITO 6- COSA SONO LE ANOMALIE NEGLI SCHEMI RELAZIONALI?


Le anomalie provengono da una rappresentazione impropria dei fatti dell’universo del discorso.
Alcuni inconvenienti sono la ripetizione dell’informazione; l’impossibilità di rappresentare certi
fatti. Scaturiscono da uno schema mal definite, da una cattiva progettazione. Vengono risolte con la
teoria della normalizzazione.

12
DOMANDE LEZIONE 23
QUESITO 5- DEFINIRE IL CONCETTO DI DERIVAZIONE DI UNA DIPENDENZA.
Una derivazione di f da F è una sequenza finita f1, …, fm di dipendenze, dove fm = f e ogni fi è un
elemento di F oppure è ottenuta dalle precedenti dipendenze f1, …, fi-1 della derivazione usando
una regola di inferenza. Una sottosequenza f1, …, fk di una derivazione f1, …, fm è anche una
derivazione, quindi F ͱ fk per ogni k = 1. …, m.

QUESITO 6-COSA DEFINISCONO LE REGOLE DI ARMSTRONG?


Alcune regole usate, derivabili a partire dagli assiomi di Armstrong, sono:
Unione: {X→Y, X→Z} ͱ X → YZ.
Decomposizione: {X → YZ} ͱ X → Y
Indebolimento: {X → Y} ͱ XZ → Z
Identità: { } ͱ X → X

QUESITO 7-COSA SONO LE DIPENDENZE FUNZIONALI?


Le dipendenze funzionali, verificano la presenza di anomalie nel progetto e, eventualmente, per
normalizzare lo schema. Data la loro importanza per la progettazione di uno schema relazionale, le
dipendenze funzionali si considerano facenti parte dello schema di una relazione, che si indicherà,
in generale, con: R⟨T, F⟩, con F insieme di dipendenze funzionali su T.

DOMANDE LEZIONE 24
QUESITO 05-COME SI PRESERVANO LE DIPENDENZE NELLA DECOMCOSA SONO
LE FORME NORMALI?
Dato uno schema R(T), ρ = {R1 (T1), … ,Rk (Tk)} è una decomposizione di R se e solo se ∪iTi=T.
La definizione non richiede che gli schemi Ri siano disgiunti. L’equivalenza tra lo schema
originario e la sua decomposizione, deve soddisfare due condizioni, indipendenti fra di loro:
preservi i dati (decomposizione senza perdite o lossless join) e preservi le dipendenze.

QUESITO 06- DEFINIRE IL CONCETTO DI DECOMPOSIZIONE DEGLI SCHEMI.


L’approccio da seguire per eliminare anomalie da uno schema mal definito, è quello di decomporlo
in schemi più piccoli che godono di particolari proprietà (forme normali), ma sono equivalenti allo
schema originale. Dato uno schema R(T), ρ = {R1(T1), ..., Rk(Tk)} è una decomposizione di R se e
solo se ∪iTi = T. La definizione non richiede che gli schemi Ri siano disgiunti

QUESITO 7- ILLUSTRARE LA FORMA NORMALE DI BOYCE-CODD


La forma normale di Boyce-Codd si basa sul fatto che una dipendenza funzionale X→A (in cui X
non contiene attributi estranei) indica che, nel dominio che si modella, esiste una collezione C di
entità che sono univocamente identificate da X. Quindi, se una relazione ben disegnata contiene X,
ci sono solo due possibilità:
1) Se la relazione modella la collezione C, allora X deve essere una chiave per tale relazione;
2) Se la relazione non modella la collezione C, allora X deve apparire solo come chiave esterna,
per cui nessuno degli altri attributi delle entità della collezione deve apparire nella relazione.

13
DOMANDE LEZIONE 25
QUESITO 05-DESCRIVERE IL CONCETTO DI NORMALIZZAZIONE DI SCHEMI IN 3NF
La terza forma normale (3NF) `e un criterio per valutare la qualità di uno schema meno restrittivo
della BCNF, con queste proprietà: ogni schema R<T,F> ammette una decomposizione che preserva
i dati, le dipendenze, ed è in 3NF. Questa decomposizione può essere ottenuta in tempo
polinomiale. Lo svantaggio della 3NF sta nel fatto che, essendo meno restrittiva della BCNF,
accetta anche schemi che presentano delle anomalie. Questo schema è in 3NF se e solo se, per ogni
dipendenza funzionale non banale X→A € 𝐹 +, allora X è una superchiave oppure A è primo

QUESITO 06-ESPRIMERE IL CONCETTO CHE STA ALLA BASE DELLA


NORMALIZZAZIONE DI SCHEMI IN BCNF.
L’idea su cui si basa la nozione di forma normale di Boyce-Codd è che una dipendenza funzionale
X→A (in cui X non contiene attributi estranei) indica che, nel dominio che si modella, esiste una
collezione C di entità che sono identificate da X.

DOMANDE LEZIONE 26
QUESITO 4- ESPRIMERE IL CONCETTO DI DENOMARLIZZAZIONE
La denormalizzazione consiste nel memorizzare ad esempio le informazioni sugli studenti ed
esami in un’unica relazione, evitando così di effettuare giunzioni, anche se con un maggior costo
delle operazioni di modifica, e occupazione di memoria. È molto comune quando i dati sono gestiti
usando non un DBMS ma un sistema di archiviazione oppure un foglio elettronico (spreadsheet).
Si utilizza non solo per ragioni di efficienza, ma anche per velocizzare la produzione delle
applicazioni, evitando la codifica di algoritmi di giunzione

QUESITO 05-NEL PROCESSO DI NORMALIZZAZIONE COME SI ELIMINANO LE


DIPENDENZE MULTI VALORE?
Si eliminano decomponendo lo schema in due sottoschemi, in modo da modellare le proprietà
multivalori indipendenti (come è stato fatto nell’algoritmo di trasformazione di uno schema ad
oggetti in relazionale), quindi si avrà una base di dati priva di anomalie

QUESITO 06-COME SI USA LA TEORIA DELLA NORMALIZZAZIONE?


Si utilizza per velocizzare la produzione delle applicazioni, evitando la codifica di algoritmi di
giunzione. L’utilizzo delle nozioni definite da parte di un progettista dipende dallo scopo che si sta
cercando di perseguire, distinguendo tra:
1) Traduzione relazionale di un progetto concettuale ad oggetti, durante la progettazione
concettuale (anche ad oggetti), le dipendenze anomale devono essere guardate con sospetto,
chiedendosi se una dipendenza anomala X → Y non nasconda in realtà un’entità con attributi
XY che non è stata individuata
2) Analisi di una base di dati, o archivio, già esistente;
3) Progettazione secondo l’approccio della relazione universale

14
DOMANDE LEZIONE 27
QUESITO 05-IN CHE MODO PUÒ AVVENIRE L'INTEGRAZIONE TRA IL
LINGUAGGIO OSPITE AD ALTO LIVELLO E SQL?
L'integrazione tra questo e il linguaggio ospite ad alto livello può avvenire in due modi:
a) SQL Embedded: Questo metodo prevede di introdurre direttamente nel programma sorgente
scritto in linguaggio ad alto livello le istruzioni SQL distinguendole con un separatore. Prima
della compilazione del codice un precompilatore traduce le istruzioni in quelle de linguaggio
ospiing
b) Call Level Interface: Questa soluzione consiste nel mettere a disposizione una libreria di
procedure scritte nel linguaggio ad alto livello per realizzare il dialogo con la base di dati. Due
esempi di interfacce per la connettività sono:
o ODBC (Open Database Connectivity), sviluppato originariamente da Microsoft e
diventato in seguito uno standard;
o JDBC (Java Database Connectivity), ideato dalla Sun Microsystems per gestire la
connettività di Java verso le basi di dati relazionali.

QUESITO 06-DESCRIVERE I LINGUAGGI PER L'ACCESSO ALLE BASI DI DATI


I linguaggi per l'accesso alle basi di dati comprendono:
1) Linguaggio di definizione dei dati (data-definition language, DDL): permette di definire i tre
livelli di astrazione della base di dati: esterno, logico e fisico;
2) Linguaggio di manipolazione dei dati (data-manipulation language, DML): permette di
inserire, cancellare, modificare e reperire i dati. Questo linguaggio può essere:
• Procedurale (l'utente specifica che dati recuperare e come farlo);
• Dichiarativo (l'utente specifica i dati recuperare ma non dice come. Il sistema si occupa di
implementare le richieste dell'utente).

QUESITO 7-QUALI SONO LE FASI CHE CARATTERIZZANO IL PROCESSO DI


SVILUPPO DI UNA BASE DI DATI?
Le fasi del processo di sviluppo delle basi di dati sono: progettazione concettuale delle basi di dati,
scelta della tipologia della base di dati; progettazione logica della base di dati; scelta di un DBMS;
progettazione fisica della base di dati; realizzazione e ottimizzazione del sistema della base di dati.

QUESITO 8-COME SI GESTISCONO GLI ERRORI DI PROGETTAZIONE?


È importante fare attenzione al fatto che le fasi più importanti sono quelle più generali, cioè quelle
iniziali.

15
DOMANDE LEZIONE 028
QUESITO 05-NELLA PROGETTAZIONE DI BASI DI DATI RELAZIONALI DESCRIVERE LE
REGOLE GENERALI DA SEGUIRE PER OTTENERE UNA SPECIFICA PRECISA E PRIVA DI
AMBIGUITÀ:
Alcune regole sulla specifica precisa e priva di ambiguità:
• Evitare termini troppo generici o troppo precisi. Mantenere un livello di astrazione costante;
• Evitare l'uso di sinonimi e omonimi. Riferirsi allo stesso concetto sempre nello stesso modo;
• Usare frasi brevi e semplici uniformandone la struttura;
• Dividere il testo in paragrafi: dedicare ogni paragrafo alla descrizione di una specifica entità
della realtà modellata; ed evidenziare l'entità descritta in ogni paragrafo

QUESITO 06-NELLA PROGETTAZIONE DI BASI DI DATI RELAZIONALI


DESCRIVERE LA DIFFERENZA TRA LA PROGETTAZIONE DEI DATI E DELLE
TRANSAZIONI.
Differenziano perché: progettazione dei dati, si individuano la struttura e l'organizzazione dei dati;
progettazione delle transazioni, si definiscono le caratteristiche delle operazioni che usano i dati.

QUESITO 7-DESCRIVERE IL PROCESSO DI RACCOLTA ED ANALISI DEI


REQUISITI DA ADOTTARE NELLA PROGETTAZIONE DI BASI DI DATI
RELAZIONALI.
La raccolta dei requisiti individua le caratteristiche statiche (dei dati) e dinamiche (delle operazioni)
dell'applicazione da realizzare. I requisiti vengono raccolti delle specifiche espresse in linguaggio
naturale e per questo motivo spesso ambigue e disorganizzate. L'analisi dei requisiti è essenziale per
il chiarimento e l'organizzazione delle specifiche raccolte. I requisiti dell'applicazione provengono
da diverse fonti, quali ad esempio: gli utenti dell'applicazione; la documentazione esistente attinente
al problema allo studio; eventuali realizzazioni preesistenti dell'applicazione.

DOMANDE LEZIONE 029


QUESITO 05-DESCRIVERE IN TERMINI PRATICI QUALI SONO LE FASI CHE
CONTRADDISTINGUONO LA PROGETTAZIONE CONCETTUALE COL MODELLO
ENTITTÀ-RELAZIONE.
La progettazione concettuale è contraddistinta delle seguenti fasi: 1. Formalizzare i requisiti sui dati
in un diagramma entità-relazione; 2. Documentare il diagramma; 3. Aggiungere le regole aziendali
non codificabili nel diagramma; 4. Progettare le transazioni; 5. Verificare la qualità degli schemi
concettuali prodotti

16
QUESITO 06-DEFINIRE IL CONCETTO DI CARDINALITÀ DI UNA RELAZIONE
FORNENDO ANCHE UN ESEMPIO
una cardinalità di relazione, ovvero, una coppia di numeri naturali che specifica il numero minimo e
massimo di istanze di relazione a cui una istanza dell'entità può partecipare. Si indica con la
costante N, un numero generico maggiore di uno, quando la cardinalità non è nota con precisione.
Nel diagramma ER, la cardinalità di relazione di una entità etichetta l'arco che lega l'entità alla
relazione.

DOMANDE LEZIONE 030


QUESITO 05-CON RIFERIMENTO AI COSTRUTTI DEL DIAGRAMMA ENTITÀ-
RELAZIONE DESCRIVERE LA DIFFERENZA TRA SPECIALIZZAZIONE TOTALE E
DISGIUNTA.
La specializzazione è totale se ogni istanza dell'entità genitore corrisponde ad una istanza di qualche
sottoentità, oppure parziale altrimenti. Una specializzazione è disgiunta se gli insiemi di istanze
delle sotto-entità sono disgiunti, altrimenti è sovrapposta.

QUESITO 06-CON RIFERIMENTO AI COSTRUTTI DEL DIAGRAMMA ENTITÀ-


RELAZIONE DEFINIRE IL CONCETTO DI SPECIALIZZAZIONE
Una entità può specializzarsi anche in più sotto-entità. La specializzazione è totale se ogni istanza
dell'entità genitore corrisponde ad una istanza di qualche sotto-entità, oppure parziale. Una
specializzazione è disgiunta se gli insiemi di istanze delle sotto-entità sono disgiunti, altrimenti è
sovrapposta

DOMANDE LEZIONE 31
QUESITO 05-IN CHE MODO È POSSIBILE DESCRIVERE UNO SCHEMA CONCETTUALE
BASATO IN XML?
Una soluzione per descrivere uno schema concettuale si può basare su XML (eXtensible Markup
Language). Particolari applicazioni (linguaggi) XML possono essere definite nel linguaggio
Document Type Definition (DTD). Il Document Type Definition (definizione del tipo di
documento) è uno strumento utilizzato dai programmatori il cui scopo è quello di definire le
componenti ammesse nella costruzione di un documento XML
QUESITO 06-COSA DEVE CONTENERE LA DOCUMENTAZIONE DEL DIAGRAMMA
ER?
la documentazione del diagramma ER deve contenere:
▪ per ogni entità: il nome, una descrizione, la lista degli attributi, la chiave, il tipo (normale o
debole) e eventuali specializzazioni;
▪ per ogni relazione: il nome, una descrizione, le entità partecipanti e le relative cardinalità, gli
eventuali attributi e il tipo (normale o identificante);
▪ Per ogni attributo: il nome, una descrizione, il tipo (semplice, multivalore, composto, calcolato)
e il fatto che sia obbligatorio o opzionale;
▪ Le regole aziendali.

17
DOMANDE LEZIONE 032
QUESITO 05-NELLA PROGETTAZIONE LOGICA DELLA BASE DI DATI
RELAZIONALE CHE DIFFERENZA C'È TRA I VINCOLI DI DOMINIO E VINCOLI DI
CHIAVE?
Vincoli di dominio: specificano che un attributo associato ad un certo dominio deve assumere
valori in quel dominio. Vincoli di chiave: specificano che una chiave deve avere valori univoci e
una chiave primaria deve avere valori univoci e non nulli.

QUESITO 06-NELLA PROGETTAZIONE LOGICA DELLA BASE DI DATI


RELAZIONALE COSA S'INTENDE PER MODELLO BASATO SU VALORI?
Il modello per stabilire le corrispondenze tra i dati prende il nome di modello basato su valori,
Rappresenta solo informazione rilevante per la realtà modellata; l'indipendenza fisica dei dati viene
mantenuta permettendo di cambiare la rappresentazione fisica dei dati (ad esempio spostando i dati
in una zona diversa di memoria) senza cambiare quella logica.

QUESITO 7-IN COSA CONSISTE LA PROGETTAZIONE LOGICA DELLA BASE DI


DATI RELAZIONALE?
La progettazione logica della base di dati consiste nella traduzione dello schema concettuale dei
dati in uno schema logico che rispecchia il modello dei dati scelto (modello relazionale).

QUESITO 8-COSA SONO LE STRUTTURE RELAZIONALI?


Il modello relazionale si fonda sul concetto di relazione, la cui rappresentazione è una tabella:
o Il concetto di relazione è formale e proviene dalla teoria degli insiemi.
o Il concetto di tabella è intuitivo ed è usato in vari contesti fuori dalle basi di dati. Il successo
delle basi di dati relazionali sta nella congiunzione di un concetto formale, la relazione, che ha
permesso lo sviluppo di una teoria con risultati di impatto pratico, con un concetto intuitivo, la
tabella, che ha reso comprensibile il modello relazionale anche ad utenti finali senza alcuna
nozione matematica.

DOMANDE LEZIONE 033


QUESITO 05-NEL CONTESTO DELLA TRADUZIONE DEL MODELLO ER NEL
MODELLO RELAZIONALE COME SI TRADUCONO LE RELAZIONI MOLTI A MOLTI
TRA DUE ENTITÀ?
Una relazione molti a molti tra due entità si traduce con una relazione con lo stesso nome avente
come attributi le chiavi delle entità coinvolte, che formano la chiave della relazione, più eventuali
attributi della relazione. Gli attributi possono essere rinominati per maggiore chiarezza

QUESITO 06-NEL CONTESTO DELLA TRADUZIONE DEL MODELLO ER NEL


MODELLO RELAZIONALE COME SI TRADUCONO GLI ATTRIBUTI COMPOSTI?
Gli attributi composti vengono sostituiti con gli attributi componenti. Eventuali gerarchie di attributi
composti si traducono, in modo simile, procedendo dalle foglie verso la radice

18
QUESITO 07-COME SI TRADUCE IL MODELLO ER NEL MODELLO RELAZIONALE
Uno schema ER può essere tradotto in uno schema relazionale equivalente con opportune regole,
permettendo di passare da un concetto astratto ad uno concreto. Il risultato della traduzione è più
lontano dal livello concettuale e più vicino al livello fisico dei dati. Il risultato è organizzato
secondo il modello dei dati che è stato scelto (modello relazionale).

DOMANDE LEZIONE 34
QUESITO 04-NEL CONTESTO DELLA TRADUZIONE DEL MODELLO ER NEL
MODELLO RELAZIONALE COME SI TRADUCONO LE RELAZIONI UNO AD UNO?
Nel caso della relazione uno a uno esistono quattro casi a seconda delle cardinalità minime (0 o 1)
delle due entità partecipanti. Ad esempio se la partecipazione delle entità alla relazione sia
obbligatoria: potremmo avere una relazione biunivoca, e una possibile soluzione potrebbe essere
quella di usare una unica relazione che raggruppa tutti e tre i concetti del frammento ER. Questa
soluzione è tecnicamente giusta ma metodologicamente sbagliata.

QUESITO 05- COME SI DOCUMENTA IL MODELLO RELAZIONALE?


Il modello relazionale non contiene queste informazioni: il significato delle relazioni e dei loro
attributi; il tipo degli attributi (semplice o calcolato) e la loro obbligatorietà; eventuali chiavi
candidate; le relazioni concettuali che sono state rimosse durante la fase di traduzione dallo schema
ER allo schema relazionale; le regole aziendali. In particolare tali regole contengono le regole di
derivazione degli attributi calcolati. Si può documentare anche utilizzando una soluzione basato su
XML.

QUESITO 6-NEL CONTESTO DELLA TRADUZIONE DEL MODELLO ER NEL


MODELLO RELAZIONALE COME SI TRADUCONO LE ENTITÀ DEBOLI?
La traduzione per una entità debole è simile alla prima traduzione per le relazioni uno a molti.
Un’entità debole è identificata da una entità proprietario mediante una relazione a cui partecipa con
vincolo (1,1). Bisogna però aggiungere alla chiave parziale della relazione dell'entità debole la
chiave dell'entità proprietario, in questo modo le istanze dell'entità debole possono essere
identificate.
QUESITO 7- NEL CONTESTO DELLA TRADUZIONE DEL MODELLO ER NEL
MODELLO RELAZIONALE COME SI TRADUCONO LE SPECIALIZZAZIONI?
Esistono diverse traduzioni possibili in questo caso, ognuna con pregi e difetti. Si crea una tabella
per ogni entità coinvolta nella specializzazione. Le tabelle delle sotto-entità ereditano dall'entità
genitore la chiave, che diventa la loro chiave e anche esterna riferita all'entità genitore. Il vincolo
di chiave esterna realizza il vincolo di sotto-insieme tra istanze delle entità.

DOMANDE LEZIONE 035


QUESITO 05-QUALI SONO LE DIFFERENZE FONDAMENTALI TRA RELAZIONI
DEL MODELLO RELAZIONALE E TABELLE SQL?
Esistono due differenze fondamentali tra relazioni del modello relazionale e tabelle SQL: una
tabella SQL può contenere righe duplicate e colonne omonime. Le colonne vengono identificate
dalla loro posizione

19
QUESITO 06-QUALI SONO IN SQL GLI ELEMENTI DI DIFFERENZIAZIONE
RISPETTO ALL’ALGEBRA/CALCOLO RELAZIONALE?
In SQL esistono due elementi importanti di differenziazione rispetto all’algebra/calcolo relazionale:
o I risultati delle proiezioni sono multi-insiemi anziché insiemi (di default i duplicati non
vengono rimossi);
o Valori vs. relazioni il risultato dell’applicazione di una funzione aggregata può, essere trattato
come un valore e non come una relazione.

QUESITO 07-QUALI SONO LE FUNZIONI CHE CARATTERIZZANO IL


LINGUAGGIO SQL?
È caratterizzato dalle seguenti funzioni:
• Definizione dei dati: SQL permette di definire, i tre livelli della base di dati, il livello esterno
(viste), il livello logico (struttura delle tabelle e vincoli di integrità) e il livello fisico
(memorizzazione delle tabelle e indici) della base di dati;
• Aggiornamento dei dati: SQL permette di aggiornare l'istanza della base con inserimenti,
cancellazioni e modifiche di tuple;
• Interrogazione sui dati: SQL consente di estrarre informazione presente nella base di dati

QUESITO 08-PERCHÉ SQL SI DEFINISCE COME UN LINGUAGGIO


DICHIARATIVO?
SQL è un linguaggio dichiarativo: permette di specificare cosa cercare senza dire come. Quando
una interrogazione (query) viene eseguita dall'elaboratore di interrogazioni (query processor), viene
tradotta in un linguaggio procedurale interno al sistema che, permette di specificare come accedere
ai dati.

DOMANDE LEZIONE 036


QUESITO 05-DESCRIVERE I COMPONENTI DEL MAPPING IN SQL
SELECT: specifica gli attributi e/o le funzioni (le espressioni) il cui valore viene restituito dalla
valutazione dell’interrogazione (schema della relazione risultato). Può essere specializzata in più
modi (uso della parola chiave DISTINCT);
FROM: specifica tutte le relazioni a cui bisogna accedere per recuperare l’informazione richiesta
dall’interrogazione (non quelle coinvolte in interrogazioni nidificate);
WHERE: specifica le condizioni (espressioni Booleane) per la selezione delle tuple delle relazioni
indicate nella clausola FROM (condizioni di selezione e join; in SQL-2 è possibile spostare le
condizioni di join nella clausola FROM).

QUESITO 06-DESCRIVERE LE INTERROGAZIONI DI BASE IN SQL FORNENDO


ANCHE UN ESEMPIO.
L'interrogazione di base SQL è la seguente: select * from, il risultato è l'intera tabella: la prima riga
dell'interrogazione è detta clausola select e serve per selezionare le colonne della tabella che ci
interessano. L'operatore * permette di selezionare tutte le colonne. La seconda riga
dell'interrogazione è detta clausola from e serve per indicare quali tabelle usare. La clausola select e
quella from sono obbligatorie in una interrogazione.

20
DOMANDE LEZIONE 037
QUESITO 05-COSA S’INTENDE IN SQL PER CONDIZIONE DI JOIN?
Una visione operazionale alternativa del join, è quella che prevede una condizione detta di join.
Supponiamo di dover fare un join tra due tabelle R e S con condizione di join theta. Se dovessimo
programmare questa operazione, dovremmo scrivere due cicli for annidati secondo questo
algoritmo:
▪ Il ciclo esterno scandisce le righe di R;
▪ Il ciclo interno per ogni riga r di R, scandisce le righe s di S e verifica se la riga congiunta rs
soddisfa theta. In tal caso la riga viene selezionata.

QUESITO 06-DESCRIVERE IL CONCETTO DI INTERROGAZIONI DI


CONGIUNZIONE JOIN FORNENDO ANCHE UN ESEMPIO
Le interrogazioni di congiunzione (termine join) sfruttano il modello di corrispondenza basato su
valori, tipico del modello relazionale, per recuperare dati correlati ma distribuiti in più di una
tabella. Supponiamo di voler recuperare il nome e cognome di tutti i dipendenti del teatro Bellini.
Queste informazioni sono distribuite in due tabelle: dipendente e lavoro. Bisogna quindi
congiungere queste due tabelle attraverso la chiave esterna dipendente della tabella lavoro: select
nome, cognome from lavoro, dipendente where (teatro = ‘Bellini') and (dipendente = cf)

DOMANDE LEZIONE 038


QUESITO 05-DEFINIRE IL CONCETTO DI RAGGRUPPAMENTO IN SQL,
FORNENDO ANCHE UN ESEMPIO.
La clausola group by permette di partizionare le righe di una tabella in sottoinsiemi e applicare gli
operatori aggregati ai singoli sottoinsiemi. Questa clausola ha come argomento un insieme di
attributi e raggruppa le righe che posseggono lo stesso valore per gli attributi dell'insieme
argomento. Nella clausola select posso usare operatori aggregati e attributi ma quest'ultimi devono
essere inclusi nella clausola group by. Supponiamo di voler calcolare il numero di dipendenti per
ogni ruolo. Possiamo scrivere la seguente interrogazione: select ruolo, count(*) as numero from
lavoro group by ruolo. La query raggruppa le tuple di lavoro secondo i valori dell'attributo ruolo.

21
QUESITO 06-DESCRIVERE GLI OPERATORI AGGREGATI DI SQL FORNENDO UN
SEMPLICE ESEMPIO PER CIASCUNO DI ESSI.
Un operatore aggregato è una funzione che si applica ad un insieme di tuple di una tabella e ha
come risultato un valore atomico.
❖ count; questo operatore serve per contare le tuple di una tabella e può essere usato nei seguenti
tre modi:
select count(*)
from dipendente
Il risultato è il numero di tuple della tabella dipendente.
❖ min e max; restituiscono rispettivamente il minimo e il massimo di una espressione valutata
sulle tuple di una tabella. L'espressione deve restituire valori su cui è definito un ordinamento
(numeri, stringhe, istanti temporali). Ad esempio, la seguente interrogazione restituisce lo
stipendio massimo di un dipendente:
select max(stipendio) from dipendente
❖ sum e avg: restituiscono la somma e la media di una espressione valutata sulle tuple di una
tabella. L'espressione deve restituire valori su cui è definita la somma (numeri). Ad esempio,
questa interrogazione restituisce la somma degli stipendi dei dipendenti:
select sum(stipendio)
from dipendente

DOMANDE LEZIONE 039


QUESITO 05-DESCRIVERE IL CONCETTO DI INSIEME ESPLICITO NELLE
INTERROGAZIONI NIDIFICATE DI SQL FORNENDO ANCHE UN ESEMPIO.
L’interrogazione interna, può essere sostituita da un insieme esplicito. Ad esempio, se vogliamo
recuperare tutti i nomi dei dipendenti in un certo insieme esplicito:
select nome
from dipendente
where nome in ("Lucia Battini", "Lucio Vizzini", "Cinzia Ligresti")

QUESITO 06-DESCRIVERE IL CONCETTO DI INTERROGAZIONE NIDIFICATA IN


SQL FORNENDO ANCHE UN ESEMPIO
Una interrogazione nidificata contiene un'altra interrogazione. La seguente interrogazione seleziona
tutti gli attori che sono anche autori. Abbiamo già scritto la stessa query usando l'operatore
intersect: select nome from attore where nome = any (select nome from autore)

QUESITO 07-QUALI SONO GLI OPERATORI INSIEMISTICI IN SQL?


Gli operatori insiemistici sono l'unione (union); l'intersezione (intersect); la differenza (except). tra
insiemi di righe di tabelle.

22
DOMANDE LEZIONE 040
QUESITO 05-DESCRIVERE IL CONCETTO DI DOMINIO ATOMICO IN SQL
FORNENDO ANCHE UN ESEMPIO.
Un dominio atomico corrisponde sostanzialmente ad un tipo di dato semplice dei linguaggi di
programmazione. I principali domini atomici presenti in SQL sono:
a) Stringhe: per definire una stringa di n caratteri si scrive char(n), per una stringa di al massino n
caratteri si scrive varchar(n); char è una abbreviazione di char(1)
b) Numeri; per i numeri interi si usa il dominio integer oppure smallint; per i numeri frazionari
in virgola fissa si usa decimal(p,s), dove p è la precisione (numero di cifre decimali utilizzate
per il numero) e s è la scala (il numero di cifre decimali della parte frazionaria). Ad esempio:
decimal(4,2) rappresenta tutti i numeri da -99,99 a +99,99 con incrementi pari a un centesimo.
Per i numeri frazionari in virgola mobile si possono usare i domini float, real e double
precision.
c) Istanti temporali: è possibile usare il dominio:
▪ date per le date (YYYY-MM-DD);
▪ time per le ore (HH:MM:SS);
▪ timestamp per gli istanti temporali composti da una data e un'ora (YYYY-MM-DD
HH:MM:SS). Il tipo time(n) specifica una precisione di n cifre dopo la virgola per i secondi.
Ad esempio: 13:24:50,25 appartiene a time(2)

QUESITO 06-DESCRIVERE LE OPERAZIONI DI INSERIMENTO, CANCELLAZIONE


E MODIFICA IN SQL FORNENDO ANCHE UN ESEMPIO.
• Inserimento; è possibile inserire una o più righe in una tabella con il comando insert, ad
esempio consideriamo lo schema di relazione:
dipendente(cf, nome, cognome, stipendio)
Il comando inserisce un nuovo dipendente:
insert into dipendente(cf, nome, cognome, stipendio)
values ('ALSBRT69', 'Alessio', 'Bertallot', '1000')
• Cancellazione; si possono cancellare una o più righe da una tabella con il comando delete. Ad
esempio, per cancellare tutti i dipendenti, posso scrivere questo comando: delete from
dipendente. Questo comando cancella il contenuto della tabella ma, a differenza del
comando drop, non rimuove la tabella dallo schema della base di dati. Per cancellare solo
alcune righe, posso aggiungere la clausola where che segue la sintassi delle interrogazioni di
selezione di dati.
• Modifica; una o più righe di una tabella possono essere modificate con il comando update.
Ad esempio, se volessimo incrementare del 10% lo stipendio del dipendente identificato dal
codice ALSBRT69:
update dipendente
set stipendio = stipendio * 1.1
where cf = 'ALSBRT69'

23
QUESITO 07-COME SI DEFINISCONO LE STRUTTURE E I VINCOLI SUI DATI IN
SQL?
In SQL è possibile di definire le strutture e i vincoli sui dati:
1) La definizione della struttura delle tabelle: in cui bisogna specificare il nome della tabella e, per
ogni attributo, il nome, il dominio e un valore predefinito;
2) La definizione dei vincoli di integrità: si distinguono in vincoli tipici del modello relazionale
(chiavi e obbligatorietà degli attributi) e vincoli di integrità generici (regole aziendali);
3) La definizione delle viste sui dati.

DOMANDE LEZIONE 041


QUESITO 05-DESCRIVERE IL CONCETTO DI OBBLIGATORIETÀ DEGLI
ATTRIBUTI IN SQL FORNENDO ANCHE UN ESEMPIO
in SQL, per default, un attributo (non chiave primaria) è opzionale, cioè può assumere valori nulli.
Per rendere obbligatorio un attributo, cioè per fare in modo che il suo valore sia sempre diverso
da NULL, si usa il vincolo not null da usare come nell’esempio:
nome varchar(20) not null
Se il valore di un attributo obbligatorio non viene specificato in fase di inserimento di una riga, il
DBMS genera un errore. Non si specifica un valore, in fase di inserimento, per un attributo
obbligatorio con valore di default diverso da NULL. È possibile identificare una unica chiave
primaria con il vincolo primary key

QUESITO 06-DESCRIVERE IL CONCETTO DI CHIAVE ESTERNA IN SQL


FORNENDO ANCHE UN ESEMPIO.
Il vincolo di chiave esterna (foreign key) coinvolge due tabelle (che possono essere due istanze
della stessa tabella). La tabella che contiene la chiave esterna è detta secondaria (slave), mentre la
tabella a cui fa riferimento la chiave esterna è detta principale (master). Gli attributi riferiti nella
tabella principale devono formare una chiave candidata, di solito la chiave primaria. Il vincolo
specifica che: ogni valore non nullo della chiave esterna nella tabella secondaria deve corrispondere
ad un valore nella tabella principale. La definizione del vincolo di chiave esterna usa il costrutto
foreign key come segue:
create table teatro
(
nome varchar(20) primary key,
indirizzo varchar(40) not null,
email varchar(20) unique
)
create table biglietteria
(
nome varchar(20) primary key,
indirizzo varchar(40) not null,
teatro varchar(20) foreign key
references teatro(nome)
)

24
QUESITO 07-COME SI SPECIFICANO I VINCOLI D’INTEGRITÀ IN SQL?
In SQL è possibile specificare dei vincoli di integrità sui dati, sia quelli propri del modello
relazionale che quelli che specificano le regole aziendali. Vincoli di dominio: sono specificati
implicitamente quando un attributo viene associato al corrispondente dominio: i valori dell'attributo
devono appartenere al relativo dominio. Obbligatorietà degli attributi: in SQL, per default, un
attributo (non chiave primaria) è opzionale, cioè può assumere valori nulli. Per rendere
obbligatorio un attributo, cioè per fare in modo che il suo valore sia sempre diverso da NULL, si
usa il vincolo not null

QUESITO 08-COME SI DEFINISCONO LE REGOLE AZIENDALI IN SQL?


In SQL esistono anche i vincoli imposti dalle regole aziendali, detti vincoli di integrità generici
perché non legati al modello relazionale. Questi vincoli possono essere rappresentati in SQL in
diversi modi: attraverso il costrutto check nella definizione di una tabella; attraverso le asserzioni;
attraverso l'uso di regole attive (trigger)

DOMANDE LEZIONE 042


QUESITO 05-DESCRIVERE IN CHE MODO UN TRIGGER IN SQL POTREBBE
VIOLARE I VINCOLI D'INTEGRITÀ.
L'azione di un trigger può violare vincoli di integrità. La violazione di un vincolo di integrità di
chiave esterna può causare, come conseguenza delle politiche di gestione di tali vincoli, ulteriori
modifiche alla base di dati che possono scatenare altri trigger, oppure violare altri vincoli di
integrità. La violazione di un vincolo di integrità non gestito, a qualsiasi livello della catena di
attivazione, produce un annullamento degli effetti di tutte le operazioni innescate dalla primitiva
madre che ha generato la catena di trigger, compresi gli effetti della primitiva madre stessa.

QUESITO 06-DESCRIVERE COME I TRIGGER POSSONO ESSERE USATI PER


SPECIFICARE LE REGOLE DI CALCOLO DEGLI ATTRIBUTI CALCOLATI, FORNIRE
ANCHE UN ESEMPIO.
I trigger sono anche usati per specificare le regole di calcolo degli attributi calcolati. Supponiamo ad
esempio che il prezzo ridotto di uno spettacolo debba essere scontato del 20% rispetto a quello
intero. Avremo quindi che l'attributo prezzo ridotto è calcolato rispetto a quello intero. I trigger
per gestire questo vincolo sono:
create trigger CalcolaPrezzoRidottoInsert
after insert on messaInScena
for each row
update messaInScena
set New.prezzoRidotto = New.prezzoIntero * 0.8
where codice = New.codice
create trigger CalcolaPrezzoRidottoUpdate
after update of prezzoIntero on messaInScena
for each row
update messaInScena
set New.prezzoRidotto = New.prezzoIntero * 0.8
where codice = New.codice
25
QUESITO 07-DESCRIVERE I TRIGGER IN SQL.
Le regole attive sono definite trigger, permettono di gestire i vincoli di integrità. La differenza
rispetto agli strumenti fin ora introdotti per specificare vincoli di integrità (relazionali o generici) è
la seguente:
❖ Un trigger specifica una azione da intraprendere quando il vincolo non sia soddisfatto,
solitamente una azione riparatrice della integrità violata.
❖ Un trigger segue il paradigma evento-condizione-azione: se un certo evento si verifica, la
condizione viene controllata e, se soddisfatta, l'azione viene intrapresa.

QUESITO 08- COSA RAPPRESENTA IL CATALOGO DEI DATI?


Il catalogo dei dati è una base relazionale per archiviare lo schema fisico di una base di dati.
Contiene una descrizione dei dati e non i dati veri e propri. Ad esempio, il catalogo dei dati contiene
una tabella per gli attributi di uno schema fisico. Ogni riga della tabella specifica, il nome
dell'attributo, la tabella di appartenenza, il suo valore di default e l'obbligatorietà. Il catalogo dei
dati viene mantenuto dal DBMS e non deve essere creato o modificato dall'utente. Può essere
interrogato dall'utente: questo offre la possibilità interessante di costruire interrogazioni che
accedano sia ai dati che ai metadati

DOMANDE LEZIONE 043


QUESITO 05- DESCRIVERE GLI APPROCCI PER IMPLEMENTARE LE VISTE IN
SQL
Esistono due approcci complementari per implementare le viste: 1) Riscrivere le interrogazioni che
usano viste in termini di interrogazioni che usano tabelle di base; Questo approccio ha il vantaggio
di non dover salvare i dati delle tabelle virtuali associate alle viste. E lo svantaggio di essere
inefficiente quando vi sono molte query che si riferiscono alla stessa vista. 2) Materializzare le
viste, cioè nel calcolare le relative tabelle virtuali, e usare queste tabelle per risolvere le
interrogazioni che le usano. Questo approccio risolve i problemi di efficienza del primo ma ha lo
svantaggio di dover mantenere la materializzazione della vista e aggiornarla quando le tabelle
di base su cui la vista è definita vengono modificate

QUESITO 06- DESCRIVERE IL CONCETTO DI VISTA TEMPORANEA IN SQL


Una vista temporanea è una vista definita nel contesto di una interrogazione. È accessibile
dall'interrogazione nella quale appare ma non appartiene allo schema della base di dati e non può
essere usata da alter interrogazioni oltre a quella a cui appartiene e non può essere rimossa dallo
schema. Le viste temporanee si definiscono con la clausola with

26
DOMANDE LEZIONE 044
QUESITO 05-SPIEGARE IN CHE MODO L'ALGEBRA RELAZIONALE PUÒ ESSERE
INTESA COME UNA CONTROPARTE PROCEDURALE (O OPERAZIONALE) DEL
LINGUAGGIO SQL
L'algebra relazionale è un linguaggio procedurale: un programma (espressione) dell'algebra
specifica come calcolare il risultato, e non quale risultato si vuole raggiungere, come accade per i
linguaggi dichiarativi (ad esempio SQL). Quindi: L'algebra relazionale può essere intesa come una
controparte procedurale (o operazionale) del linguaggio SQL.

QUESITO 06- IN SQL NELLE INTERROGAZIONI PER IL RECUPERO DI


INFORMAZIONE QUALI OPERAZIONI FONDAMENTALI SONO NASCOSTE?
Nelle interrogazioni SQL per il recupero di informazione sono nascoste queste operazioni
fondamentali:
o Proiezione: è l'operazione di selezione di alcune colonne a partire da una tabella. Corrisponde
alla clausola select di SQL;
o Selezione: è l'operazione di selezione delle righe di una tabella che soddisfano un certo
predicato. Corrisponde alla clausola where di SQL;
o Join: è l'operazione di congiunzione di due tabelle rispetto ad un predicato di join che confronta
coppie formate da attributi delle due tabelle. L'operazione di join realizza un prodotto cartesiano
delle due tabelle e seleziona le righe che soddisfano il predicato di join. Corrisponde al costrutto
join da usare nella clausola from di SQL, esprimibile anche con la clausola where
o Unione: è l'operazione di unione di due tabelle. Corrisponde al costrutto union di SQL;
o Differenza: è l'operazione di differenza di due tabelle. Corrisponde al costrutto except di SQL;
o Rinomina: è l'operazione di rinomina di attributi di una tabella. Corrisponde al costrutto as di
SQL

27
QUESITO 07-PERCHÉ SQL OFFRE LE FUNZIONALITÀ DESCRITTE E NON ALTRE?
La scelta delle operazioni fondamentali dell'algebra relazionale trova giustificazione nelle tre
proprietà:
▪ Espressività: ha l'espressività del calcolo dei predicati al prim'ordine. Questo risultato, fissa
l'espressività dell'algebra relazionale: le operazioni fondamentali su cui l'algebra è definita e
che sono alla base di SQL permettono di specificare tutte le formule del calcolo dei predicati al
prim'ordine. Questo risultato fissa anche i limiti dell'algebra relazionale (e di SQL). Ad
esempio, l'operazione di chiusura transitiva di una relazione non è definibile al prim'ordine.
Questa operazione non sarà definibile né in algebra relazionale né in SQL.

▪ Complessità: il problema della valutazione (del calcolo del risultato), di una espressione
dell'algebra relazionale rispetto ad una base di dati è completo nella classe di complessità
PSPACE, definita come classe dei problemi risolubili in spazio polinomiale. In realtà la
complessità della valutazione di una espressione è esponenziale nella dimensione della
espressione e polinomiale nella dimensione della base di dati.

▪ Ottimizzazione: la proprietà di ottimizzazione è connessa al risultato di espressività: ogni


espressione di SQL può essere trasformata, con complessità polinomiale rispetto alla sua
dimensione, in una equivalente espressione dell'algebra relazionale e viceversa. Questa
proprietà caratterizza l'algebra relazionale come la controparte procedurale di SQL. La
trasformazione da SQL a algebra, è efficiente.

DOMANDE LEZIONE 045


QUESITO 05-DESCRIVERE I TRE METODI PRINCIPALI PER ORGANIZZARE I
RECORD NEI FILE
Esistono tre metodi principali per organizzare i record nei file:
• File non ordinato: i record sono inseriti nel file nell'ordine in cui sono inseriti nella base di
dati, quindi, senza un ordine preciso. Per cercare un record è necessaria una scansione
sequenziale del file con costo lineare;
• File ordinato: i record sono inseriti nel file secondo l'ordine dei valori di un determinato
campo, detto campo di ordinamento. Per cercare un record di cui è noto il valore del campo di
ordinamento è possibile usare una ricerca binaria con costo logaritmico;
• File ad accesso calcolato (hash): i record sono inseriti nel file nell'ordine determinato
applicando una funzione di hash ai valori di un campo, detto campo di hash. Per cercare un
record di cui è noto il valore del campo di hash basta calcolare la funzione di hash su quel
valore (ha un costo computazionale medio costante). Bisogna risolvere il problema delle
collisioni (due record con lo stesso valore di hash). Di solito la dimensione del file è fissa

28
QUESITO 06-DESCRIVERE LA STRUTTURA DATI DEFINITA COL TERMINE
INDICE DEFINENDONE LE TIPOLOGIE
Una struttura ausiliaria di accesso, detta indice, è una struttura di dati che velocizza l'accesso ai
record in risposta alle interrogazioni. Gli indici sono strutture ausiliarie e opzionali rispetto alle
strutture di memorizzazione dei file e non influiscono sull'organizzazione primaria dei record nei
file. Un indice è definito su uno o più attributi di una tabella e, le interrogazioni che coinvolgono
gli attributi indice beneficiano di una maggiore efficienza. Per trovare un record del valore del
campo indice, è possibile cercare nel file indice, l'indirizzo del blocco che contiene il record.

L'accesso tramite l'indice è più veloce per almeno due ragioni: l'indice contiene meno informazioni
del testo; i termini nell'indice sono ordinati, è possibile usando una ricerca dicotomica (binaria).
Perché il fattore critico dell'accesso alle basi di dati è il numero di accessi a blocchi del disco. Un
indice, essendo più ‘leggero’ del file, può essere memorizzato in meno blocchi di disco. L'accesso
ai record tramite indice riduce il numero letture su disco.

DOMANDE LEZIONE 046


QUESITO 05-DEFINIRE IN CONCETTO DI ENGINE IN MYSQL DESCRIVENDO LE
DIVERSE TIPOLOGIE
Le tabelle possono essere create con diversi tipi (engine). Il tipo della tabella viene specificato dal
parametro engine del comando create, oppure in fase di avvio del server usando l'opzione --
default-storage-engine=type, dove type va sostituito con il tipo che deve essere assegnato alle
tabelle create durante la sessione. Tabelle di tipo diverso possono coesistere nella stessa base di
dati. I principali engine offerti da MySQL sono:
❖ MyISAM: è il tipo di default. Non supporta le chiavi esterne e le transazioni, permette di
effettuare ricerche fulltext e di definire indici di questo tipo per agevolare queste ricerche.
Permette di creare indici di tipo btree;
❖ InnoDB: è ideale per ambienti multi-utente ad alte prestazioni. Gestisce l'integrità referenziale,
le transazioni e il locking delle righe. Permette di creare indici del solo tipo btree;
❖ MEMORY: è un engine non-transazionale che usa solo la memoria centrale per salvare i dati
delle tabelle. Quindi può essere usato per tabelle temporanee non persistenti (lo schema è
salvato in memoria secondaria). Permette di creare indici di tipo hash o btree.

QUESITO 06-COME SI DEFINISCONO I PRIVILEGI IN MYSQL? FORNIRE ANCHE


UN ESEMPIO
Bisogna prima creare un nuovo utente e assegnandogli i privilegi. Per entrambi, si utilizza il
comando grant. Ad esempio, per creare un utente alan con parola chiave nala e assegnargli tutti i
privilegi su tutti i database, inclusa la possibilità di usare il comando grant, si può usare il seguente
comando:
grant all privileges on *.*
to 'alan'@'localhost' identified by 'nala'
with grant option;
Si può essere più selettivi assegnando solo alcuni privilegi su tabelle (o colonne) di basi di dati.
Possiamo creare degli utenti senza privilegi usando il privilegio usage. Le informazioni su utenti e i
29
loro privilegi vengono archiviate nelle tabelle dei privilegi (grant tables) della base di dati mysql,
creata in fase di installazione del DBMS. Altri comandi utili per amministrare gli utenti sono:
o revoke: revoca i privilegi;
o drop user: per eliminare un utente;
o set password: per associare una parola chiave ad un utente;
o show grants: per mostrare i comandi grant eseguiti per un utente. Utile per duplicare i privilegi
di un utente per un altro utente;
o show privileges: per mostrare tutti i privilegi che possono essere assegnati in generale.

DOMANDE LEZIONE 047


QUESITO 05-COME SI EFFETTUA UN'OPERAZIONE DI AGGIORNAMENTO DEI
DATI IN MYSQL? FORNRE ANCHE UN ESEMPIO.
Con il comando update:
update esame set voto = '18'
where studente = 'PRCCRS57' and corso = 'Data Mining' and
cdl = 'INTELLIGENZAARTIFICIALE';

QUESITO 06-COME SI EFFETTUA UN'OPERAZIONE D'INTERROGAZIONE IN


MYSQL? FORNIRE ANCHE UN ESEMPIO
Definiti i concetti precedenti vediamo qualche esempio per interrogare la base di dati creata e
popolata con il comando select:
where
select nome, cognome
from studente
where data < '1979-12-31' and data > '1970-01-01';
order by
select nome, cognome, data
from studente
order by data desc;
join
select studente.nome, studente.cognome, esame.corso, esame.voto
from studente join esame on (studente.matricola = esame.studente);
left join
select studente.nome, studente.cognome, esame.corso, esame.voto
from studente left join esame on (studente.matricola = esame.studente);
right join
select studente.nome, studente.cognome, esame.corso, esame.voto
from studente right join esame on (studente.matricola = esame.studente);
join di più tabelle
select studente.nome, studente.cognome, corso.nome, corso.cdl,
corso.docente, esame.voto
from (studente join esame on (studente.matricola = esame.studente)) join
corso on (esame.corso = corso.nome and esame.cdl = corso.cdl);
30
DOMANDE LEZIONE 048
QUESITO 05-COME SI DEFINISCONO LE VISTE IN MYSQL?
Le viste in MySQL si definiscono col comando create view

QUESITO 06-COME SI DEFINISCONO LE PROCEDURE E FUNZIONI DEFINITE


DALL’UTENTE IN MYSQL? FORNIRE ANCHE UN ESEMPIO.
MySQL permette la creazione di procedure e funzioni definite dall'utente (dette stored) perché
vengono salvate insieme allo schema del database. I comandi create procedure e create function
creano procedure e funzioni. Il loro corpo contiene comandi SQL e altri costrutti tipici dei
linguaggi di programmazioni. La comunicazione con l'ambiente chiamante avviene attraverso
parametri. create procedure conta (in matricola varchar(8), out num INT)
begin
select count(*) into num
from esame
where studente = matricola;
end;

Possiamo invocare una procedura o funzione con il comando call.


set @studente = 'ALSBRT66';
call conta(@studente, @num);
select @studente, @num;

31

Potrebbero piacerti anche