Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Appunti di Database: Modelli UML, Operazioni sui Database, Vincoli di Chiave Esterna, Appunti di Basi di Dati

Riassunto completo di basi di dati

Tipologia: Appunti

2019/2020

Caricato il 15/10/2020

asd-ate
asd-ate 🇮🇹

1 documento

1 / 98

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
INTRODUZIONE ALLE BASI DI DATI
Nello svolgimento di ogni attività, sia a livello individuale sia in organizzazioni di ogni dimensione, sono
essenziali la disponibilità delle informazioni e la capacità di gestirle in modo efficiente; ogni organizzazione
è quindi dotata di un Sistema Informativo che svolge i seguenti compiti:
- Raccogliere dati
- Conservare i dati raccolti archiviandoli
- Elaborare i dati trasformandoli in informazioni
Il Sistema Informatico è la parte del Sistema Informativo che si avvale delle tecnologie informatiche per
svolgere questi 3 compiti.
Nei Sistemi Informatici le informazioni vengono rappresentate tramite i dati:
- Essi sono degli elementi di informazione costituiti da simboli che devono essere elaborati (si parla
di codifica dell’informazione).
- Le informazioni vengono elaborate mediante i dati.
Una Base di Dati (o database) è una collezione di dati, utilizzati per rappresentare le informazioni di
interesse per un Sistema Informativo. Essa deve essere:
- Persistente: deve essere duratura nel tempo.
- Condivisa: deve permettere la multiutenza, applicazioni e utenti diversi devono poter accedere a
dati comuni.
- Affidabile: deve essere resistente a malfunzionamenti hardware o software.
DBMS (DataBase Management System)
Un DBMS è un insieme di programmi che permettono agli utenti di creare e mantenere una base di dati. Il
DBMS è un sistema software con scopi generali che facilita il processo di definire, costruire, manipolare e
condividere basi di dati per varie applicazioni.
Si parlerà di basi di dati quando c’è una collezione di dati gestita da un DBMS.
Base di Dati = dati + DBMS
Un DBMS garantisce a un database:
- Affidabilità: la capacità di conservare intatto il contenuto del database.
- Privatezza dei dati: ciascun utente viene abilitato a svolgere solo determinate azioni sui dati,
attraverso meccanismi di autorizzazione.
- Efficienza: la capacità di svolgere le operazioni in un tempo accettabile.
Appunti di Giannone Flora – Riadattamento a cura di Liccardo Giuseppe Pagina 1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62

Anteprima parziale del testo

Scarica Appunti di Database: Modelli UML, Operazioni sui Database, Vincoli di Chiave Esterna e più Appunti in PDF di Basi di Dati solo su Docsity!

INTRODUZIONE ALLE BASI DI DATI

Nello svolgimento di ogni attività, sia a livello individuale sia in organizzazioni di ogni dimensione, sono

essenziali la disponibilità delle informazioni e la capacità di gestirle in modo efficiente; ogni organizzazione

è quindi dotata di un Sistema Informativo che svolge i seguenti compiti:

  • Raccogliere dati
  • Conservare i dati raccolti archiviandoli
  • Elaborare i dati trasformandoli in informazioni

Il Sistema Informatico è la parte del Sistema Informativo che si avvale delle tecnologie informatiche per

svolgere questi 3 compiti.

Nei Sistemi Informatici le informazioni vengono rappresentate tramite i dati:

  • Essi sono degli elementi di informazione costituiti da simboli che devono essere elaborati (si parla

di codifica dell’informazione).

  • Le informazioni vengono elaborate mediante i dati.

Una Base di Dati (o database) è una collezione di dati, utilizzati per rappresentare le informazioni di

interesse per un Sistema Informativo. Essa deve essere:

  • Persistente: deve essere duratura nel tempo.
  • Condivisa: deve permettere la multiutenza, applicazioni e utenti diversi devono poter accedere a

dati comuni.

  • Affidabile: deve essere resistente a malfunzionamenti hardware o software.

DBMS (DataBase Management System)

Un DBMS è un insieme di programmi che permettono agli utenti di creare e mantenere una base di dati. Il

DBMS è un sistema software con scopi generali che facilita il processo di definire, costruire, manipolare e

condividere basi di dati per varie applicazioni.

Si parlerà di basi di dati quando c’è una collezione di dati gestita da un DBMS.

Base di Dati = dati + DBMS

Un DBMS garantisce a un database:

  • Affidabilità: la capacità di conservare intatto il contenuto del database.
  • Privatezza dei dati: ciascun utente viene abilitato a svolgere solo determinate azioni sui dati,

attraverso meccanismi di autorizzazione.

  • Efficienza: la capacità di svolgere le operazioni in un tempo accettabile.

Esempio di Database condiviso

In un Database non condiviso sono presenti delle ridondanze, quindi per rendere più efficiente il Database

stesso evitando le ripetizioni, si possono unire gli archivi. In questo modo si realizza un Database condiviso.

Database non condiviso Database condiviso

Nel Database non condiviso, gran parte dei dati viene memorizzata 2 volte, si ha quindi uno spreco di

memoria che si risente maggiormente quando il Database è di notevoli dimensioni.

Nel Database condiviso, invece, gli archivi vengono uniti, di conseguenza si avrà una ridondanza controllata

evitando inutili sprechi.

Quando però (come nell’esempio del database condiviso) più utenti condividono una base di dati, ad alcuni

non sarà permesso di accedere a tutte le informazioni.

Sarà compito del DBMS garantire un sottosistema per la sicurezza e l’autorizzazione (chiamato regolazione

dei privilegi).

DATI e METADATI

Una caratteristica importante è che il sistema di basi di dati contiene non solo la base di dati (l’insieme di

tutti i dati), ma anche una definizione o una descrizione completa della sua struttura e dei suoi vincoli.

Questa definizione è memorizzata nel catalogo del sistema che contiene informazioni sulla struttura di

ciascun file, il tipo, il formato, ecc.

Le informazioni memorizzate nel catalogo sono dette metadati e descrivono la struttura del database

principale.

I dati gestiti dai DBMS hanno le seguenti caratteristiche:

  • Sono organizzati in insiemi omogenei, fra i quali sono definite delle relazioni.
  • Sono molti rispetto ai metadati.
  • Sono protetti sia da parte di utenti non autorizzati, sia da malfunzionamenti hardware o software. -

Sono utilizzabili contemporaneamente da utenti diversi.

Il DBMS offre inoltre opportuni linguaggi per:

  • Definire lo schema di un database ( DDL )
  • Scegliere le strutture dati per la memorizzazione ( SDL )
  • Gestire i privilegi ( VDL )

Elaborazione

Stipendi

Elaborazione

Rimborso

Archivio

1

Archivio

2

Elaborazione

Stipendi

Elaborazione

Rimborso

Archivio

Unico

MODELLAZIONE CONCETTUALE

I problemi che si affrontano per progettare un database è sapere quali informazioni inserire in un database

e quali legami esistono tra di essi. E’ quindi necessario creare uno schema concettuale di un database, dal

quale è possibile derivare la struttura dei dati secondo il modello logico del DBMS. Uno strumento per

esprimere schemi concettuali sono i diagrammi Entità-Relazione (modello ER).

Nei diagrammi Entità-Relazione ci sono 3 elementi:

  • Entità macchine con un solo colore, persone con persone con una

laurea, ecc.

  • Multivalore: ad esempio quando una persona ha più lauree, ha più

numeri di telefono, ha più residenze, quando una macchina ha più

colori, ecc. Si può dedurre facilmente che un attributo strutturato

può essere multivalore. Un attributo multivalore si indica

graficamente in questo modo:

B

attributo

Relazion

e

Attributi

attributo

L’entitàè l’oggetto base del modello ER, questa può essere un oggetto con una consistenza fisica o un

oggetto che esiste a livello concettuale (ad esempio: corsi, aziende, ecc).

Gliattributisono le proprietà particolari che descrivono le entità. Essi possono essere:

Atomici: contengono un solo valore e non sono scomponibili (es. nome).

Strutturati: contengono più valori, quindi sono scomponibili (es. indirizzo).

Esempio di una gerarchia di attributi strutturati

Inoltre gli attributi possono essere :

Semplici(a valore singolo): la maggior parte degli attributi ha un valore singolo: ad esempio età,

B

attributo

RELAZIONE

Indirizzo

Via Città CAP

Via Numero civico Interno

ENTITA’

Infine, un attributo derivato è un attributo il cui valore viene calcolato (derivato) da un altro attributo. Ad

esempio, in un’entità persona il valore di età può essere determinato a partire dalla data di nascita. Un

attributo derivato si indica graficamente in questo modo:

B

attributo

Le relazioni (o associazioni) rappresentano i legami che ci sono tra le varie entità. Praticamente collegano

due o più entità. Una relazione è dotata di due versi, dove ogni verso dell’associazione ha un’entità di arrivo

e un’entità di partenza.

Un’associazione non è altro che una relazione matematica tra due insiemi. Supponiamo di avere due

insiemi X e Y:

terziarie (o di grado 3) e di grado maggiore. Si possono trovare anche più associazioni che collegano 2

entità.

Esempio:

L’intenzione dell’entità è lo schema astratto che accomuna tutto ciò che fa parte di quell’entità (cioè è lo

schema astratto delle proprietà o degli attributi che costituiscono l’entità).

Estensione dell’entità

L’estensione dell’entità è una collezione di unità che appartengono ad una determinata entità (esempio: se

l’entità è studenti, la sua estensione sarà l’insieme degli N studenti che appartengono all’entità stessa).

Dominio dell’entità

Il dominio è un insieme di valori atomici. E’ dato dall’unione di tutti i domini degli attributi che

appartengono all’entità. Un metodo comune per indicare un dominio consiste nello specificare un tipo di

dati, da cui sono tratti i valori dei dati che formano il dominio.

Esempio:

Numeri_Telefono 10 cifre

Nomi L’insieme delle stringhe

N.B. Quando le relazioni sono composte da più associazioni non è possibile esprimere in un’unica tabella, quindi

è preferibile un’unica associazione

Anche i tipi associazione possono avere attributi, analoghi a quelli dei tipi di entità.

Esempio:

Intenzione

dell’entità

N 1

M N

Bevitori Birre

Piacciono

Favoriscono

Studente Corsi Segue

N° Ore

Età [0,100]

Tutti questi valori (limiti) vengono introdotti nel database mediante vincoli. Ogni attributo ha un suo

dominio e ad ogni dominio viene assegnato un nome, un tipo di dati e un formato. L’unione di tutti i domini

rappresenta il dominio dell’entità.

Intenzione dell’associazione

E’ lo schema astratto dell’associazione, ovvero le proprietà in astratto che verranno descritte.

Estensione dell’associazione

E’ una collezione di istanze di associazioni di un entità.

Dominio dell’associazione

E’ dato dall’unione dei domini delle entità più l’unione delle sue proprietà.

PRODOTTO CARTESIANO

Dati due insiemi X e Y, il prodotto cartesiano tra questi è un insieme di tutte le coppie ordinate possibili

dove il primo valore appartiene a X e il secondo appartiene a Y. Cioè è l’insieme di tutte le coppie possibili

(x,y) con x Є X e y Є Y (in definitiva, il prodotto cartesiano è l’insieme di tutte le n-uple. In BD, l’insieme di

tutte le coppie viene chiamato insieme di istanze.

Si scrive X * Y

Esempio:

Prendendo in considerazione le due entità Studente e Corso, il prodotto cartesiano (Studente, Corso) è

l’insieme delle coppie possibili non reali. Un sottoinsieme di questo prodotto definisce una relazione data

dalle coppie reali (e non dalle coppie possibili).

CHIAVI e SUPERCHIAVI

L’attributo chiave è un identificatore univoco dell’entità. Tutte le entità hanno un attributo chiave. Una

chiave è un insieme di uno o più attributi con due caratteristiche principali:

Univocità. I valori degli attributi identificano univocamente le istanze dell’entità. Ovvero in

un’entità non possono esistere doppioni, non possono quindi esistere 2 o più istanze uguali,

altrimenti la chiave primaria non permetterebbe di distinguerle.

Minimalità. Rimuovendo un qualsiasi attributo dall’insieme perdiamo il requisito di univocità. Ogni

insieme di attributi che verifica la prima proprietà è detta superchiave. Una chiave è quindi una

superchiave minimale.

Una superchiave è, quindi, una chiave caratterizzata da un insieme di attributi che identificano in modo

univoco l’entità (esempio: prendendo come entità studente, possiamo dire che una superchiave potrebbe

essere cognome-matricola).

E’ possibile inoltre che esistano più chiavi per una entità, tali chiavi sono dette chiavi candidate. Tra queste

occorre scegliere la chiave primaria, basandosi su dei criteri di decisione:

Ci sono anche casi in cui non si riesce a trovare una chiave che soddisfa tutti questi requisiti; sarà quindi

possibile introdurre un ulteriore attributo sintetico che serve solo ad identificare le istanze dell’unità,

questo prende il nome di codice.

Ci sarà, inoltre, un’associazione totale.

Mentre la chiave parziale, graficamente, viene rappresentata in questo modo:

Non riuscendo ad identificare una chiave, in questo diagramma ER, creiamo una chiave artificiale (ID

Utente) che non è altro che un contatore a cui viene assegnato un numero progressivo per ogni utente

inserito nel database.

Molte volte può capitare che un’entità non ha una chiave, ma è identificata componendo una propria

chiave parziale con la chiave di un’altra entitàalla quale è associata mediante una relazione. L’entità priva

di chiave viene chiamataentità debole, l’entità associata a questa è dettaentità proprietarioe la relazione

che le lega è dettaidentificante.

L’entità debole, graficamente, viene rappresentata in questo modo:

La relazione identificante viene rappresentata graficamente in questo modo:

Utenti Biblioteca

Nome Cognome Data prestito Data restituz.

ID Utente

Entità debole

Assoc.

Chiave parziale

Esempio 1:

associazione identificante relazione totalizzante entità debole

esiste corso senza corsi integrativi

non esiste corso integrativo senza corso

Esempio 2:

non esiste famiglia a carico senza impiegato

esiste impiegato senza famiglia a carico

1 N

Integra Corsi interattivi

Corsi

Codice

Codice N° Stud. Anno

N° Ore

Relazione totalizzante

1 N

Ha Famiglia a carico Impiegato

Nome

CF Nome Cognome

Cognome

Relazione totalizzante

MODELLO EER ( Extended Entity Relationship )

I diagrammi EER nascono dalla necessità di ampliare gli schemi di basi di dati e renderli più articolati, per far

fronte all’innovazione della tecnologia delle basi di dati.

Il modello EER comprende tutti i concetti di modellazione propri del modello ER, cui si aggiungono i concetti

di sottoclasse, superclasse, specializzazione e generalizzazione.

Inoltre un altro concetto molto importante dei diagrammi EER è l’ereditarietà di attributi e associazioni

(OOP).

Esempio:

Superclasse: Impiegato.

Sottoclassi: Segretario, Tecnico, Ingegnere, Part Time e Full Time.

Una relazione Classe/Sottoclasse è una relazione fra una superclasse e le sue sottoclassi.

L’associazione di una sottoclasse con la sua superclasse è una relazione IS A, a indicare che un’istanza della

sottoclasse è un’istanza della superclasse.

Le sottoclassi ereditano tutti gli attributi delle proprie superclassi (nel nostro esempio, se Impiegato avrà 2

attributi Nome e Cognome, allora anche la sottoclasse Ingegnere avrà gli stessi attributi, così come tutte le

altre sottoclassi) e tutte le associazioni a cui partecipa la superclasse (nel nostro esempio possiamo, quindi,

trovare Ingegneri Full Time e Ingegneri Part Time).

Specializzazione (di tipo top-down, ovvero si parte dall’entità madre e si individuano le sottoclassi): è il

processo di definizione di un insieme di sottoclassi di un tipo di entità; questo tipo di entità viene detta

superclasse. Riprendendo l’esempio:

(Segretario, Tecnico, Ingegnere) -> specializzazioni della superclasse Impiegato. (Part

Time, Full Time) -> specializzazioni della superclasse Impiegato.

Si possono avere 2 casi:

ci possono essere più sottoclassi riferite alla stessa entità (come nell’esempio dell’impiegato).

Impiegato

Segretario Tecnico Ingegnere Part Time Full Time

Attributi

Esempio:

Superclasse: studente

Sottoclassi: lavoratore, non lavoratore

Essi sono disgiunti in quanto uno Studente può essere o Lavoratore o Non Lavoratore.

Copertura: è la proprietà che indica se le sottoclassi coprono tutta la classe

c’è copertura quando le sottoclassi coprono tutta la classe

Esempio:

Superclasse: studente

Sottoclassi: lavoratore, non lavoratore

Essi sono sottoclassi di copertura in quanto coprono tutta la classe.

non c’è copertura quando le sottoclassi non coprono tutta la classe

Esempio:

Superclasse: studente

Sottoclassi: matricola, laureando

Essi non sono sottoclassi di copertura in quanto non coprono tutta la classe perché non prendono in

considerazione, ad esempio, gli studenti del 2° anno.

Graficamente, la copertura e la disgiunzione si rappresentano in questo modo:

V F

Disgiunzione d o

Copertura || |

Esempio disgiunzione e copertura:

Esempio disgiunzione e copertura:

Generalizzazione (di tipo bottom-up, ovvero si parte dal riconoscimento di attributi o relazioni comuni di

entità, li definisce a un livello superiore attribuendoli ad una nuova entità superclasse e le entità di partenza

Lavoratore

d

Non lavoratore

Studente

Matricola

O

Guidatore

Studente

diventeranno sottoclassi): si usa il termine generalizzazione di un tipo di entità generalizzato, a partire dai

tipi di entità dati (ad esempio: dai tipi di entità Automobile e Camion possiamo generalizzarli nel tipo di

entità Veicolo [Superclasse generalizzata]).

Vincoli di specializzazione

  1. Vincolo di specificazione

Si chiama vincolo di specificazione quello che sussiste nel caso in cui le sottoclassi sono definite

sulla base di dati di un attributo (oppure da un insieme di attributi) a valore singolo della

superclasse.

Esempio:

Ogni istanza della superclasse Corrispondenza appartiene o meno ad una delle sottoclassi in base al

valore dell’attributo Tipo Corrispondenza: se per un’istanza della superclasse, il valore di tale

attributo è “Raccomandata”, “Assicurata”, “Fax”, “E-Mail” tale istanza appartiene alla sottoclasse

corrispondente; se è diverso da questi valori o è NULL o non appartiene alle sottoclassi. Cioè la

superclasse ha un discriminatore (nel nostro esempio è “Tipo Corrispondenza”), ogni sua istanza, in

base al valore di esso (nel nostro esempio i possibili valori possono essere

“Raccomandata”, ”Assicurata”, ”Fax”, ”E-Mail”), apparterrà alla sottoclasse corrispondente.

  1. Vincolo di disgiunzione

Specializzazione disgiunta: si ha quando gli insiemi delle istanze delle sottoclassi sono disgiunti,

cioè quando non hanno elementi in comune -> Lettera d nel cerchietto

Specializzazione Sovrapposta: si ha quando gli insiemi delle istanze delle sottoclassi non sono

disgiunti, cioè hanno degli elementi in comune -> Lettera o nel cerchietto

Quando però una specializzazione è composta da un’univa sottoclasse non ha senso considerare il

vincolo di disgiunzione. Inoltre possiamo notare che le specializzazioni basate su un discriminatore

sono tutte disgiunte, in quanto il discriminatore è un attributo di valore unico.

  1. Vincolo di completezza

“Assicurata” “Fax” “E-Mail” “Raccomandata”

“Tipo Corrispondenza”

Raccomandata

d

Fax

Corrispondenza

Assicurata E-mail

Discriminatore

Valore del discriminatore

Una sottoclasse S è una classe le cui entità devono essere un sottoinsieme delle entità presenti in un’altra

classe -> superclasse C. (cioè S è sottoinsieme di C)

Una specializzazione Z = {S 1

, S

2

, …, S

n } è un insieme di sottoclassi che hanno la stessa superclasse G -> G/S i

con i = 1,n

Una sottoclasse S di C si dice definita tramite un predicato se si usa un predicato p sugli attributi di C per

specificare quali entità di C sono anche membri di S. Scriveremo quindi S = C[p]dove C[p] è l’insieme di

entità di C che soddisfano p.

UML ( Universal Modeling Language )

La metodologia UML è una metodologia per la progettazione concettuale a oggetti (modello a oggetti) che

consiste nel rappresentare nel modello sia i requisiti dei dati sia i requisiti funzionali (le operazioni che

possono essere eseguite sui dati).

Esistono 13 tipi di diagrammi racchiusi in 3 tipologie principali:

Diagrammi di stato (esempio: diagramma delle classi); molto simile agli EER, viene usato per la

modellazione concettuale e non per la sua evoluzione (sono dunque statici)

Diagrammi di comportamento (esempio: diagramma dei casi d’uso - Use Case)

Diagrammi di sequenza (esempio: diagramma di sequenza)

I costrutti del modello EER corrispondono ad analoghi costrutti di UML (Diagramma delle Classi, che fa parte

della categoria dei diagrammi di stato). Oltre ai propri costrutti specifici, il modello UML si differenzia da

quello EER nella diversa terminologia e nelle diverse convenzioni usate per rappresentare i diagrammi.

Nei diagrammi UML, una classe è rappresentata con un riquadro che comprende 3 sezioni:

Superiore, che fornisce il nome della classe;

Centrale, che contiene gli attributi;

Inferiore, che descrive le operazioni che possono essere eseguite su questi oggetti.

Esempio:

Nome della classe

Stato della classe

Comportamento della classe

Come si può notare, il modello UML consente di specificare i domini degli attributi, facendo seguire al nome

dell’attributo il carattere “:” seguito dal nome della descrizione del dominio. I tipi di associazione sono detti

legami (che, inoltre, possono avere anche dei nomi - opzionale) e le istanze di associazione sono dette

collegamenti. Un attributo di associazione, detto attributo di collegamento, è posto in un riquadro che è

collegato alla linea del legame tramite una linea tratteggiata.

Esempio:

Studente

Nome: string

Cognome: string

Matricola: string

Iscrizione corso

Superamento esame

Le specializzazioni EER classe/sottoclasse sono rappresentate da triangolino con l’aggiunta di un pallino

nero se sono disgiunte.

N.B. Nel contesto dei database non si immettono mai i metodi, lo facciamo solo se ci sono dei vincoli.

Esempio:

Ricordiamo che anche nei diagrammi UML, come in quelli EER esiste il concetto di ereditarietà, quindi

nell’ultimo esempio Studente eredita Nome e Cognome ed aggiorna Matricola, lo stesso vale per Docente.

Nei diagrammi UML è ammessa anche l’ereditarietà multipla.

Esempio:

Libro

Titolo

Genere

Lingua

Operazioni

E’ pubblicato da

Numero copie

pubblicate

Libro

Titolo

Genere

Lingua

Operazioni

Generalizzazione Specializzazione

Utente

Nome

Cognome

Studente

Matricola

Docente

Insegnamento