Anteprima
Vedrai una selezione di 8 pagine su 34
Informatica per l'impresa Pag. 1 Informatica per l'impresa Pag. 2
Anteprima di 8 pagg. su 34.
Scarica il documento per vederlo tutto.
Informatica per l'impresa Pag. 6
Anteprima di 8 pagg. su 34.
Scarica il documento per vederlo tutto.
Informatica per l'impresa Pag. 11
Anteprima di 8 pagg. su 34.
Scarica il documento per vederlo tutto.
Informatica per l'impresa Pag. 16
Anteprima di 8 pagg. su 34.
Scarica il documento per vederlo tutto.
Informatica per l'impresa Pag. 21
Anteprima di 8 pagg. su 34.
Scarica il documento per vederlo tutto.
Informatica per l'impresa Pag. 26
Anteprima di 8 pagg. su 34.
Scarica il documento per vederlo tutto.
Informatica per l'impresa Pag. 31
1 su 34
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Query in QBE

Il termine query può essere tradotto con i termini interrogazione o richiesta. In questo contesto tale

termine si riferisce a una richiesta fatta al DBMS riguardante informazioni contenute in un

determinato DB. Possiamo distinguere quattro tipi di query:

Selezione (Select): per visualizzare determinati campi dei record selezionati tra tutti quelli di una

• o più tabelle in modo che soddisfino specifiche condizioni, le quali verrano inserite nella voce

“criteri”.

Inserimento (Insert): per inserire record in una tabella in modo automatico prelevando

• informazioni dalle altre tabelle sorgenti, da valori costanti o da espressioni matematiche,

utilizzando, anche in questo caso dei criteri.

Aggiornamento (Update): per cambiare i valori di determinati campi, tramite la selezione del

• campo da aggiornare e l’inserimento dell’aggiornamento.

Eliminazione (Delete): per eliminare alcuni record da una tabella, selezionando la tabella e

• impostando il criterio di selezione dei record da eliminare.

I DBMS relazionali, per permettere di fare le query sui propri DB, mettono a disposizione un

linguaggio apposito, denominato SQL. Sia Access che Base usano anche una soluzione grafica

equivalente alla funzione SQL, denominata Query By Example (QBE), ovvero “richiesta tramite

esempio”.

Progettazione Concettuale

Il progetto concettuale di un DB è una rappresentazione astratta e formale della realtà che un certo

database intende modellare al fine di fornire una rappresentazione “logica” dello schema di una

base di dati indipendentemente da come questa verrà realizzata. Esistono diversi modelli per le

rappresentazioni concettuali e, uno dei più noti, è il modello entità-relazioni (entity - relationship)

detto anche schema E-R.

Uno schema E-R si basa su due elementi fondamentali: le entità e le relazioni. Ogni entità

rappresenta un insieme di oggetti, denominati istanze, con le medesime caratteristiche.

L’E-R è un formalismo grafico, non scritto, quindi ogni elemento è caratterizzato da un simbolo

grafico. Le entità sono rappresentate da rettangoli mentre le relazioni (o associazioni) da rombi,

rombi e rettangoli sono uniti tra loro tramite delle linee. Gli attributi delle entità e delle relazioni

sono simboleggiati da piccoli cerchi e sono collegati alle loro entità tramite una linea. Facendo

un’analogia con il modello relazione le entità possono essere realizzate come tabelle mentre le

istanze saranno i record.

Quando si realizza uno schema concettuale di un database, come nel caso del modello relazionale, è

opportuno individuare un attributo o una combinazione di alcuni attributi che funga da caratteristica

univoca per ogni istanza, detta chiave primaria. Vi possono essere delle entità per cui più attributi

e/o più combinazioni di attributi hanno le caratteristiche della chiave primaria e vengono definite

chiavi candidate, ma solo una deve essere scelta per il ruolo di chiave primaria.

Le chiavi primarie costituite da un solo attributo ( ) vengono rappresentate annerendo i cerchietti

1

associati agli attributi che la rappresentano, mentre, quelle composte ( ), sono simboleggiate da un

2

cerchietto annerito da parte una lineetta intersecante le lineette degli attributi che la compongono.

Non tutti gli attributi sono rappresentati da un singolo valore. In questo caso si parla di attributo

composto. In uno schema E-R la rappresentazione di un attributo può essere arricchita da ulteriori

informazioni. Ad esempio si può indicare una coppia ordinata di numeri interi accanto al pallino per

indicare la cardinalità dell’attributo (0:N). Il numero a sinistra indica il numero minimo di valori

che l’attributo può assumere (0 sta per opzionale, 1 indica che l’attribuzione è obbligatoria), mentre

il numero a destra il numero massimo (N significa che non vi è un massimo).

Come già detto tra le entità vi sono delle relazioni (associazioni) che possono essere di tre tipi: uno

a uno (1:1), uno a molti (1:N) e molti a molti (N:N). Il tipo di associazione, la cardinalità, viene

posta sulle linee che legano le entità con le relazioni.

La cardinalità delle associazioni presenta come primo valore il numero minimo di istanze dell’entità

coinvolte in una associazione e come secondo il numero massimo di istanze coinvolte. Se viene

sottintesa la cardinalità è da intendersi sempre 1:1. Di norma si differenziano tre possibili valori 0,

1, N, dove N è un valore generico per indicare un numero intero maggiore di 1, ma a volte, tale

valore viene specificato, e 0 indica che l’associazione è opzionale.

Un’associazione può essere definita anche tra un’entità e se stessa. In questo caso si parla di

associazione ad anello. Negli anelli vengono specificati i ruoli dell’entità sulle linee di

collegamento con il rombo dell’associazione. Per esempio i ruoli dell’entità “dipendente”

potrebbero essere “capo di” e “subordinato a”. Per ogni ruolo vi è una diversa cardinalità.

Le associazioni possono essere chiamate in causa anche per definire una chiave primaria, ovvero vi

sono chiavi primarie composte, oltre che da attributi, anche da associazioni, o meglio dire da altre

entità a cui una certa entità è legata tramite delle associazioni. In questo caso si parla di

identificatore esterno.

Vi possono essere associazioni che legano un numero indefinito di entità, dette associazioni n-arie.

Tra le entità possono esistere delle relazioni gerarchiche, dette di generalizzazione. Tali relazioni si

hanno nel caso in cui un’istanza dell’entità di livello più basso sia anche istanza dell’entità di livello

più alto. L’entità di livello più alto è detta, entità padre, mentre quella di livello più basso, entità

figlio. I figli ereditano dal padre tutte le proprietà (attributi, associazioni, …).

Il linguaggio per le interrogazioni SQL

Per effettuare interrogazioni complesse su DB relazionali si utilizza il linguaggio SQL. Esso è un

linguaggio dichiarativo molto complesso, e la sua complessità è spesso accentuata dal fatto che le

diverse software-house che realizzano DBMS effettuano loro variazioni specifiche. SQL si

compone di quattro sotto-linguaggi: DDL, DML, DCL e TCI.

Il DDL è utilizzato per creare i database. Il linguaggio prevede istruzioni per la creazione e modifica

delle tabelle, la definizione e cancellazione di indici, schemi e domini.

Il DCL permette, invece, di controllare gli accessi di singoli utenti ai DB e alle loro tabelle.

Il TCL permette, infine, di gestire le transazioni su un database.

Il Data Manipulation Language, DML, è il sotto-linguaggio di SQL utilizzato per effettuare

interrogazioni e modifiche sulle informazioni contenute in un database.

Proiezioni e selezioni

In SQL l’istruzione select permette di effettuare interrogazioni sul contenuto di una o più tabelle.

Si inizia richiedendo di selezionare solo alcune colonne tra tutte quelle della tabella, ovvero si

richiede di effettuare quella che viene chiamata una proiezione:

SELECT “lista attributi”

FROM “nome tabella”;

La parola riservata SELECT è seguita dall’elenco dei nomi delle colonne delle tabelle di cui si è

interessati e la parola FROM dal nome della tabella di cui si vogliono leggere i dati. Il risultato di

una proiezione può comportare la presenza di righe identiche e, per evitare ciò, esiste la parola

riservata DISTINCT che va posta tra select e la lista degli attributi. Il suo effetto è dunque quello di

mostrare un elenco di righe prive di doppioni:

SELECT DISTINCT “Matricola”,”Cognome”

FROM “Studenti”;

Oltre a selezionare le colonne, possiamo anche selezionare delle righe, in questo caso si parla, non

più di proiezioni, ma di selezioni. La sintassi è la seguente:

SELECT *

FROM “nome tabella”

WHERE “condizione”;

Il simbolo * rappresenta l’elenco di tutti gli attributi della tabella (dunque tutte le colonne), mentre

la parola riservata WHERE è seguita da una condizione, un’espressione che, nella valutazione,

risulta un valore di verità, VERO o FALSO. La condizione viene verificata per ogni riga della

tabella e se è VERA, la riga viene messa nell’elenco dei risultati, in caso contrario viene scartata.

SELECT “Matricola”,”Nome”

FROM “Studenti”

WHERE “Cognome”=‘Rossi’;

Nulla vieta di mettere insieme proiezioni e condizioni come nel caso sopra.

Condizioni complesse

Le condizioni che seguono il where possono essere costituite da un operatore relazione

d’uguaglianza (“Cognome”=‘Rossi’) ma anche da operatori logici e relazioni.

Gli operatori logici si riferiscono all’algebra di Boole e in SQL sono tre: “AND”, ”OR” e “NOT”.

I primi due permettono di congiungere diverse condizioni mentre il terzo ne nega una.

Ad esempio se voglio una condizione che richieda che uno studente si chiama Gigi Rossi devo agire

su due differenti attributi, ovvero Cognome = Rossi e Nome = Gigi:

SELECT *

FROM “Studenti”

WHERE “Cognome”=‘Rossi’ AND “Nome”=‘Gigi’;

Se invece si vuole l’elenco degli studenti con cognome Rossi o Verdi vengono unite con OR:

SELECT “Matricola”,”Nome”

FROM “Studenti”

WHERE “Cognome”=‘Rossi’ OR “Cognome”=‘Verdi’;

Se invece si vuole l’elenco di tutti gli studenti che non si chiamano Gigi Rossi si usa NOT:

SELECT *

FROM “Studenti”

WHERE NOT (“Cognome”=‘Rossi’ AND “Nome”=‘Gigi’);

In SQL sono previsti molte relazioni come quelle d’ordine, quelle per il confronto con una stringa e

un’espressione regolare (LIKE), il contenimento di un valore in un insieme (IN) e il contenimento

di un valore in un intervallo (BETWEEN).

Le relazioni d’ordine sono l’uguaglianza (=), il minore (<), il minore uguale(<=), il maggiore (>),

il maggiore uguale (>=) e diverso(<>).

SELECT *

FROM “Prodotti”

WHERE “Peso”>=12;

Nulla vieta di costruire condizioni più complesse utilizzando insieme alle relazioni anche gli

operatori logici. Se richiediamo in alternanza due condizioni usiamo OR, mentre se richiediamo, per

esempio, l’elenco dei prodotti con peso compreso tra 5 e 15 possiamo utilizzare sia AND che

BETWEEN. Quest’ultimo caso risulta quel

Dettagli
Publisher
A.A. 2016-2017
34 pagine
1 download
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher cate5 di informazioni apprese con la frequenza delle lezioni di Idoneità di informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Bologna o del prof Gaspari Mauro.