I database e linguaggio sql

Materie:Appunti
Categoria:Informatica

Voto:

1.5 (2)
Download:211
Data:08.01.2002
Numero di pagine:12
Formato di file:.doc (Microsoft Word)
Download   Anteprima
database-linguaggio-sql_1.zip (Dimensione: 14.05 Kb)
trucheck.it_i-database-e-linguaggio-sql.doc     79.5 Kb
readme.txt     59 Bytes


Testo

I DATABASE
Con il termine database si indicano gli archivi di dati, organizzati in modo integrato attraverso tecniche di modellazione dei dati e gestiti sulle memorie di massa dei computer attraverso appositi software, con l’obiettivo di raggiungere una grande efficienza nel trattamento e nel ritrovamento dei dati.
I PREGI dell’organizzazione dei dati tramite database rispetto all’organizzazione a file di dati sono:
- facile definizione
- facile creazione
- facile esecuzione di operazioni
La facilitazione a svolgere queste operazioni è dovuta alla presenza di un’interfaccia grafica nella quale è presente sia il DML (data manipolation language) che il DDL (data definition language) i quali ci permettono di svolgere diverse operazioni senza l’uso di procedure lunghe e complesse e ci evitano l’apertura e la chiusura di un file prima di svolgere una determinata procedura, come invece avviene per il linguaggio pascal.
- l’utilizzo e la lettura, anche parziale, del database da parte di più utenti
- eliminazione della ridondanza cioè i dati non compaiono più volte in archivi diversi
- eliminazione della inconsistenza cioè il database non può presentare campi uguali con valori diversi in archivi diversi
- facilità di accesso perché il ritrovamento dei dati è facilitato e svolto con grande velocità, anche nel caso di richieste contemporanee da parte di più utenti
- integrità dei dati perché sono previsti controlli per evitare anomalie ai dati causati dai programmi o dalle applicazioni degli utenti
- sicurezza dei dati perché sono previsti controlli per impedire accessi non autorizzati
MODELLI
MODELLO GERARCHICO è adatto a rappresentare situazioni nelle quali è possibile fornire all’insieme dei dati una struttura nella quale sono presenti entità dipendenti da altre, secondo uno schema ad albero.
In questo modello i nodi rappresentano le entità e gli archi le associazioni. Il database gerarchico è formato da un unico record radice e da un insieme ordinato di sottoalberi di livello inferiore. Un sottoalbero a sua volta è formato da record radice e da un insieme di sottoalberi.
Il limite di questo modello sta nella rigidità della struttura di dati che non riesce ad evitare la ridondanza dei dati.
AGENTE
CLIENTE
ORDINE
ORDINE
RIGA
RIGA
In un MODELLO RETICOLARE le entità rappresentano i nodi e le associazioni rappresentano gli archi di uno schema a grafo orientato.
In un database reticolato ci sono due insiemi di dati: un insieme di record e un insieme di legami. Nell’insieme di record ci sono tutti campi (anche il campo chiave) dell’entità presa in considerazione, mentre i legami sono realizzati memorizzando le coppie di chiavi delle entità associate.
Non esiste una gerarchia predefinita e un record figlio può avere un numero qualsiasi di padri: in questo modo si evita la ripetizione di dati uguali.
CC
CA
AGENTE
CA
CO
CO
CR
CLIENTE
ORDINE
CC
CO
RIGA
MODELLO RELAZIONALE rappresenta il database come un insieme di tabelle sulle quali si possono effettuare operazioni e tra le quali possono essere stabilite associazioni. . Esso viene considerato attualmente il modello più semplice ed efficace. Nasce nel 1970 come idea di Edward Cood, un ricercatore dell’IBM
Il modello relazionale è fondato sul concetto matematico di relazione tra insieme di oggetti. La relazione viene comunemente rappresentata con una tabella avente tante colonne quanti sono i domini della relazione e tante righe quante sono le tuple. Il numero delle colonne va a determinare il grado della relazione, mentre il numero delle righe va a determinare la cardinalità della relazione.
La relazione rappresenta l’entità, le colonne contengono gli attributi dell’entità e il dominio è l’insieme dei valori che possono essere assunti da un attributo.
I requisiti fondamentali sono:
- tutte le righe della tabella contengono lo stesso numero di colonne
- tutti gli attributi devono essere ATOMICI cioè ogni attributo non può essere scomposto. Es. no attributo datianagrafici
- i valori di un campo sono valori omogenei cioè dello stesso tipo
- ogni riga deve vere una chiave primaria che la identifica. Il valore della chiave non può essere nullo (INTEGRITA’ )
- l’ordine con il quale le righe compaiono nella tabella è irrilevante
AGENTI
CLIENTE
ORDINI

Il modello relazionale comprende al suo interno 3 tipi di modelli:
- MODELLO CONCETTUALE: individuo le entità (oggetti da gestire, hanno una struttura a record), la subentità, i campi e le associazioni
- MODELLO LOGICO: ogni entità diventa una relazione. La ricavo secondo le regole di derivazione
- MODELLO FISICO: le relazione diventa un file
OPERAZIONI:
SELEZIONE
Genera solo le righe della relazione di partenza i cui valori degli attributi soddisfano ad una determinata condizione prefissata
Il grado della nuova relazione sarà uguale a quello della relazione di partenza
La cardinalità della nuova relazione sarà formata dal n° di righe. Sarà dunque minore a quella di partenza
PROIEZIONE
Genera una nuova relazione estraendo dalla tabella iniziale due o + colonne corrispondenti agli attributi prefissati.
In questo caso il grado della nuova relazione diventerà minore a quello della relazione primaria, mentre la cardinalità rimarrà invariata.
CONGIUNZIONE
Serve a combinare più relazioni aventi uno o + attributi in comune, generando una nuova relazione avendo le righe della prima e della seconda tabella, che possono essere combinate secondo valori uguali dell’attributo comune.
Il grado sarà dato dal grado della prima tabella + il grado della seconda tabella –1
LA NORMALIZZAZIONE: rendere una relazione il + semplice possibile
1° FORMA NORMALE: (è obbligatoria)
- tutti gli attributi devono essere ATOMICI cioè ogni attributo non può essere scomposto. Es. no attributo datianagrafici.
- Tutte le righe della tabella contengono lo stesso numero di colonne
- i valori di un campo sono valori omogenei cioè dello stesso tipo
- ogni riga deve vere una chiave primaria che la identifica. Il valore della chiave non può essere nullo (INTEGRITA’ )
- l’ordine con il quale le righe compaiono nella tabella è irrilevante
2° FORMA NORMALE:
si basa sul principio della DIPENDENZA FUNZIONALE il quale afferma che un attributo non chiave è dipendente funzionalmente all’attributo chiave quando c’è un nesso logico tra i due attributi.
In chiave semplice una relazione è sempre in 2° forma normale
In chiave composta una relazione è in 2° forma normale quando tutti gli attributi non chiavi dipendono dall’intera chiave.
La 2° forma normale elimina, così, la dipendenza parziale degli attributi dalla chiave.
3° FORMA NORMALE:
tutti gli attributi non chiave devono dipendere direttamente dalla chiave, cioè non ci possono essere attributi non chiave che dipendono da altri attributi non chiave.
La 3° forma normale elimina così le DIPENDENZE TRANSITIVE degli attributi dalla chiave
INTEGRITA’
INTEGRITA’: ogni relazione deve avere obbligatoriamente un campo chiave che non deve essere nullo
INTEGRITA’ REFERENZIALE: è un insieme di regole del modello relazionale che riguardano le associazioni tra più tabelle. Esse infatti sostengono che la chiave importata nel modello 1 a n non può avere valori diversi da quelli della chiave originaria.
LINGUAGGI
DDL (data definition language): linguaggio che permette
- la descrizione dei dati, delle tabelle e delle viste
- di generare maschere che facilitano all’utente l’inserimento la consultazione di dati
- di generare report per la rappresentazione ordinata e facilmente leggibile dei dati estratti dai data base
DMCL (device media control language): linguaggio di controllo dei supporti di memorizzazione dei dati, attraverso il quale la struttura fisica del database viene riferita alle specifiche unità di memoria di massa utilizzati dal sistema di elaborazione
DML (data manipolation language): linguaggio che consente le usuali operazioni di accesso per inserimento, modifiche o cancellazioni di dati
DCL (data control language): linguaggio che consente di fissare dei vincoli di integrità, di stabilire le autorizzazioni di accessi e i tipi di permessi consentiti agli utenti (lettura, inserimento di dati…)
QUERY LANGUAGE: linguaggio per le interrogazioni dei database. Consente la visualizzazione dei solo dati che interessano in base a criteri di ricerca richiesti dall’utente.
UTENTI
AMMINISTRATORE
È affidata la responsabilità della gestione del database e ha i seguenti compiti:
- implementare il modello logico del database nel sistema di elaborazione sui supporti fisici delle memorie di massa
- gestione e trattamento dei dati (inserimento, modifiche, cancellazioni)
- autorizzazione agli accessi (viste)
- manutenzione del database nel tempo
- controllo della disponibilità di spazi sulla memoria di massa
PROGRAMMATORI
Utilizza per le proprie applicazioni i dati organizzati nel database utilizzando un linguaggio DML o un linguaggio specifico per il database.
I programmatori agiscono sotto il controllo del gruppo di progetto e di produzione del software applicativo a cui partecipa anche l’amministratore
UTENTI FINALI
Accedono al database attraverso un linguaggio di interrogazione o attraverso interfacce software che presentano sul video il menu o le icone.
IL LINGUAGGIO SQL
È un linguaggio non procedurale per la gestione di database relazionali
Secondo la terminologia del linguaggio SQL un database è costituito da tabelle che rappresentano le relazioni: gli attributi sono le colonne delle tabelle, i record le righe.
Il linguaggio SQL consente all’utente:
- definire la struttura delle relazioni del database (funzione DDL)
- modificare i dati contenuti nel database con operazioni di inserimento, modifica e cancellazione (funzione DML)
- gestire i controlli degli accessi e i permessi per gli utenti (funzione DCL)
- fare interrogazioni al database (funzioni di Query Language)
IDENTIFICATORI
Sono i nomi di tabelle e di attributi. Sono costituiti da sequenze di caratteri con lunghezza massima uguale a 18 caratteri di cui il primo carattere deve essere una lettera. Il nome può contenere il carattere _
TIPI DI DATI
Nella dichiarazione della struttura di una tabella occorre specificare il tipo dei dati scelto per ogni attributo.
I tipi standard sono:
- date
- time
- integer
- real
- char (stringa)
DDL
CREAZIONE DI TABELLE
CREATE TABLE istituto
( codi CHAR (3)
nome CHAR (15)
citta CHAR (15) )
AGGIUNGERE UN CAMPO
ALTER TABLE istituto
ADD cap CHAR (10)
ELIMINARE UN CAMPO
ALTER TABLE istituto
DROP citta
FAR DIVENTARE UN CAMPO UNA CHIAVE SENZA DUPLICATI
CREATE UNIQUE INDEX codi
ON istituto
ELIMINARE LA TABELLA
DROP TABLE istituto
DML
INSERIRE I DATI IN UN RECORD
INSERT INTO istituto
( codi, nome, citta, cap)
VALUES (‘xyz’, ‘Belotti’, ‘Bergamo’, ‘24048’)
MODIFICARE I DATI IN UN RECORD
UPDATE istituto
SET nome= ’ITCPA B. Belotti’
WHERE codi= ‘xyz’
ELIMINARE UN RECORD
UPDATE FROM istituto
WHERE codi= ‘xyz’
CALCOLARE LA MEDIA DEGLI ALUNNI PER CLASSE
UPDATE istituto
SET nalunni = nalunni/50
WHERE citta= ‘Bergamo’
OPERAZIONI RELAZIONALI:
SELEZIONE
Genera solo le righe della relazione di partenza i cui valori degli attributi soddisfano ad una determinata condizione prefissata
Il grado della nuova relazione sarà uguale a quello della relazione di partenza
La cardinalità della nuova relazione sarà formata dal n° di righe. Sarà dunque minore a quella di partenza
Viene realizzata dal comando SELECT e dalla clausola WHERE..
La struttura generale è:
SELECT… (nomi degli attributi da elencare. Con * intendo tutti gli attributi di una determinata tabella)
FROM… (nomi delle tabelle su cui devo operare la selezione)
WHERE… (si specifica la condizione che deve essere soddisfatta dai campi delle righe. Possono comparire + condizioni, ma devono essere legate dagli operatori AND, OR, NOT)
Possiamo avere:
SELECT ALL… oppure SELECT….
FROM…
WHERE…
(ottengo tutte le righe che soddisfano la condizione)
SELECT DISTINCT…
FROM…
WHERE…
(viene visualizzata una sola riga quando le righe sono duplicate nella tabella)
SELECT… AS…
FROM…
(viene intestata la colonna che riporta il nome di un determinato attributo con un nuovo nome definito dopo la clausola as)
SELECT… INTO…(nome da assegnare alla nuova tabella ottenuta)
FROM…
WHERE…
(se si vuole conservare la tabella risultante dell’operazione. )
PROIEZIONE
Genera una nuova relazione estraendo dalla tabella iniziale due o + colonne corrispondenti agli attributi prefissati.
In questo caso il grado della nuova relazione diventerà minore a quello della relazione primaria, mentre la cardinalità rimarrà invariata.
Viene realizzata dal comando SELECT.
La struttura generale è:
SELECT… (nomi degli attributi da proiettare. Con * intendo tutti gli attributi di una determinata tabella)
FROM… (nomi delle tabelle su cui devo operare la selezione)
CONGIUNZIONE
Serve a combinare più relazioni aventi uno o + attributi in comune, generando una nuova relazione avendo le righe della prima e della seconda tabella, che possono essere combinate secondo valori uguali dell’attributo comune.
Il grado sarà dato dal grado della prima tabella + il grado della seconda tabella –1
Viene realizzata dal comando SELECT e dalla clausola WHERE.
La struttura generale è:
SELECT… (nomi degli attributi da elencare. Con * intendo tutti gli attributi di una determinata tabella)
FROM… (nomi delle tabelle su cui devo operare la selezione)
WHERE … =… (si scrivono i nomi degli attributi che hanno in comune le due tabelle da congiungere uniti dal segno = )
AND … =… (se si devono congiungere + di 2 tabelle)
FUNZIONI DI AGGREGAZIONE:
FUNZIONE COUNT
Conta il numero di righe presenti in una tabella
La struttura è:
SELECT COUNT ….
FROM…
Non vengono conteggiate le righe che contengono il valore Null nella colonna dell’attributo specificato
SELECT COUNT (*)
FROM…
Vengono conteggiate tutte le righe, anche quelle che contengono il valore Null nella colonna dell’attributo specificato
In questa funzione possono essere applicate le clausole DISTINCT e AS
FUNZIONE SUM
Calcola la somma di tutti i valori contenuti in una colonna specificata come argomento della funzione. Naturalmente l’attributo utilizzato nel calcolo deve essere di tipo numerico.
La struttura è:
SELECT SUM (stipbase) …
FROM…
WHERE…
Può essere utilizzata la clausola AS
FUNZIONE AVG
Calcola la media dei valori (numerici) contenuti in una determinata colonna di una tabella.
La funzione AVG non include nel calcolo i valori di tipo Null presenti nella colonna.
La struttura è:
SELECT AVG (stipbase) …
FROM…
WHERE…
Può essere utilizzata la clausola DISTINCT
FUNZIONE MIN e MAX
Restituisce rispettivamente il valore minimo e massimo tra i valori della colonna di una tabella specificata come argomento della funzione.
Possono agire anche sulle stringhe prendendo come valore max la lettera A e come valore min la lettera Z
Nel caso sia specificata la clausola WHERE, tali funzioni calcolano il minimo e il massimo solo dei valori di una colonna considerando solo le righe che soddisfano alla condizione.
SELECT MIN (stipbase) …
FROM…
ORDINAMENTI
La clausola ORDER BY permette di ordinare i risultati di un’interrogazione in ordine crescente o decrescente
La struttura è:
SELECT …
FROM…
ORDER BY …
(Ordinamento in ordine crescente)
SELECT…
FROM…
ORDER BY … DESC
(Ordinamento in ordine decrescente)
Un ordinamento crescente si dice strettamente crescente quando non ci sono ripetizioni. Se ci sono delle ripetizioni l’ordinamento crescente viene definito ordinamento non decrescente.
RAGGRUPPAMENTI
La clausola GROUP BY permette di raggruppare un insieme di righe aventi lo stesso valore nelle colonne indicate. Si produce, così, una riga di risultati per ogni raggruppamento.
La struttura è:
SELECT …
FROM…
GROUP BY …
SELECT …
FROM…
GROUP BY …
HAVING COUNT (o altra funzione di aggregazione) >6
Si sottopone a controllo i gruppi creati dalla clausola group by. Vengono visualizzate solo le righe di raggruppamento che soddisfano alle condizioni scritte accanto a having
CONDIZIONI DI RICERCA
Sono utilizzate insieme alle clausole WHERE e HAVING per determinare i criteri di selezione rispettivamente delle righe e dei raggruppamenti.
Nella scrittura delle condizioni si usano i segni del confronto =, , , =
Una condizione di ricerca è costruita anche mettendo insieme + condizioni di ricerca legate tra loro dagli operatori AND, OR, NOT. L’operatore NOT deve essere utilizzato prima dell’operatore AND
L’operatore AND deve essere utilizzato prima dell’operatore OR.
Le condizioni di ricerca possono utilizzare altre parole del linguaggio SQL che sono:
BETWEEN: controlla se il valore è compreso all’interno di un intervallo di valori, inclusi gli estremi.
IN: controlla se un valore appartiene ad un insieme specificato di valori
LIKE: confronta il valore di un attributo ti tipo carattere con un modello di stringa che può contenere il carattere jolly.
I caratteri jolly sono: _ indica un singolo carattere qualsiasi nella posizione della stringa in cui è messo
% indica una sequenza qualsiasi di caratteri nella posizione della stringa in cui è messo
es. LIKE ‘xyz%’ ricerca tutte le stringhe che iniziano per xyz
LIKE ‘_xyz’ ricerca le stringhe di 4 caratteri i cui ultimi tre sono xyz
IS NULL: confronta il valore in una colonna con il valore Null. L’espressione IS NOT NULL controlla se un attributo non ha valore Null
LE VISTE
È una finestra creata su alcuni o tutti i dati contenuti in una o + tabelle grazie alla quale vengono decise
- le modalità con le quali gli utenti possono vedere le tabelle dei database
- se un utente deve vedere tutti i dati del database o solo alcuni.
In questo modo si elimina il rischio di modifiche indesiderate su dati da parte di utenti non addetti.
L’utente opera sulla vista come se fosse una tabella di database. Alle viste vengono applicate cioè gli stessi comandi che vengono applicati nelle tabelle di database.
Le viste sono finestre dinamiche sulle tabelle primarie in quanto ogni modifica apportata ai dati della tabella primaria è disponibile all’utente attraverso la vista. Ogni modifica apportata sui dati della vista si riflette sui dati della tabella primaria
CREAZIONE
CREATE VIEW impiegati
AS SELECT *
FROM personale
WHERE funzione = ‘impiegato’
ELIMINAZIONE
DROP VIEW impiegati
VIENE CONCESSO ALL’UTENTE x L’ACCESSO DI LETTURA ALLA VISTA impiegati
GRANT SELECT
ON impiegati
TO x
INTERROGAZIONI NIDIFICATE
Sono interrogazioni formate da due interrogazioni in cui una si trova all’interno (subquery) dell’altra.
La struttura è:
SELECT…
FROM…
WHERE… = ( SELECT…
FROM…
WHERE… )
La condizione scritta dopo WHERE confronta il valore di un attributo con il risultato di un altro comando SELECT.
Una subquery può restituire un valore singolo, nessun valore oppure un insieme di valori, ma in ogni caso deve avere una singola colonna o espressione accanto alla sua select.
Nella costruzione delle subquery si possono usare alcune clausole:
ANY: indica che la subquery può restituire zero, oppure uno oppure un insieme di valori e che la condizione è vera se il confronto è vero per almeno uno dei valori restituiti. La condizione risulta falsa se la subquery restituisce un insieme vuoto di valori o se la condizione non è verificata per nessuno dei valori restituiti dalla subquery.
SELECT…
FROM…
WHERE…> ANY ( SELECT…
FROM…
WHERE… )
ALL: indica che la subquery può restituire zero, oppure uno oppure un insieme di valori e che la condizione è vera se il confronto è vero per ciascuno dei valori restituiti.
SELECT…
FROM…
WHERE…> ALL ( SELECT…
FROM…
WHERE… )
IN: controlla se il valore di un attributo è compreso tra quelli restituiti dalla subquery.
SELECT…
FROM…
WHERE… IN ( SELECT…
FROM…
WHERE… )
EXISTS: controlla se vengono restituite righe dall’esecuzione della subquery.
La condizione di ricerca è vera se la subquery produce una o + righe come risultato, è falsa se la subquery restituisce un insieme vuoto.
Il predicato EXISTS è il solo che non confronta un valore con uno o + valori.
Il predicato EXISTS può essere negato se preceduto dalla parola NOT.
SELECT…
FROM…
WHERE…EXISTS ( SELECT…
FROM…
WHERE… )

Esempio