03 Progettazione Concettuale

43
Progettazione Concettuale 1 Preliminari La progettazione di una base di dati è uno dei compiti maggiormente strategici e delicati del progetto di un sistema informativo Progettare una base di dati: definirne il contenuto e la struttura Le basi di dati sono sempre più complesse e di dimensioni elevate è necessario un approccio sistematico alla progettazione Metodologia di progettazione basata sulla suddivisione dell’attività in una serie di sotto-fasi

Transcript of 03 Progettazione Concettuale

Page 1: 03  Progettazione Concettuale

Progettazione Concettuale

1

PreliminariLa progettazione di una base di dati è uno dei compiti maggiormente strategici e delicati del progetto di un sistema informativoProgettare una base di dati: definirne il contenuto e la strutturaLe basi di dati sono sempre più complesse e di dimensioni elevate ⇒ è necessario un approccio sistematico alla progettazioneMetodologia di progettazione basata sulla suddivisione dell’attività in una serie di sotto-fasi

Page 2: 03  Progettazione Concettuale

2

Fasi della progettazioneRaccolta ed analisidei requisiti

Progettazione concettuale

Progettazionelogica

Normalizzazione

Progettazionefisica

Specifica dei requisiti

Schema concettuale

Documentazione

Schema logico

Documentazione

Schema logico normalizzato

Documentazione

Schema fisico

3

Fasi della progettazioneOgni fase si basa su un modello, che permette di generare una rappresentazione formale della base di dati ad un dato livello di astrazione L’utilizzo del modello appropriato permette di:

Verificare le caratteristiche della base di datiComunicare con i futuri utenti della base di dati

Ogni fase prevede opportune verifiche di qualità

Page 3: 03  Progettazione Concettuale

4

Raccolta ed analisi dei requisiti

Vengono definite informalmente le caratteristiche della base di datiTale fase è principalmente condotta in maniera informale (interviste con gli utenti, analisi basi di dati esistenti, normativa, ambiente operativo)L’output è un documento in linguaggio naturale di specifica dei requisiti

5

Raccolta ed analisi dei requisitiTipologie di requisiti:

Requisiti informativi: caratteristiche e tipologie dei datiRequisiti sulle operazioni: esplicitati nel carico di lavoroRequisiti sui vincoli di integrità ed autorizzazione: proprietà da assicurare ai dati, in termini di correttezza e protezioneRequisiti sulla popolosità della base di dati: volume dei dati

Page 4: 03  Progettazione Concettuale

6

Progettazione concettualeA partire dal documento di specifica viene creato uno schema concettuale della base di dati, cioè una descrizione formale ed ad alto livello del suo contenutoLo schema concettuale è del tutto indipendente dall'implementazione della base di dati (indipendente anche dal tipo di DBMS che sarà utilizzato - relazionale, object-relational, ecc.)Lo schema concettuale è definito tramite un opportuno modello concettualeDurante la progettazione concettuale vengono effettuate verifiche di qualità che possono portare ad un ridisegno dello schema generato

7

Progettazione concettuale

L’output di questa fase è:Lo schema concettuale della base di dati sviluppato utilizzando il modello concettuale presceltoUna documentazione a corredo dello schema, contenente:

Vincoli d’integrità non rappresentabili nello schemaScelte progettualiAltre informazioni che vedremo in seguito

Page 5: 03  Progettazione Concettuale

8

Progettazione logicaTraduzione dello schema concettuale nel modello dei dati del DBMS targetL’output è lo schema logico nel DDL del DBMS targetAspetti considerati durante la progettazione logica:

Integrità e consistenzaSicurezzaEfficienza

9

Normalizzazione

Verifica di qualità dello schema logico prodotto, effettuata tramite opportuni strumenti formaliPrende il nome di normalizzazione nel caso di basi di dati relazionaliTale attività può portare ad una ristrutturazione dello schema logico prodotto

Page 6: 03  Progettazione Concettuale

10

Progettazione fisicaIn questa fase vengono effettuate alcune scelte circa la memorizzazione fisica dei dati (ad esempio, indici)L’output è lo schema fisico che descrive le strutture di memorizzazione ed accesso ai dati

11

…. Nel seguito, ci concentreremo sulla progettazione concettuale….

Page 7: 03  Progettazione Concettuale

12

Modello Entità-RelazioneUno dei modelli più utilizzati nell'ambito della progettazione concettuale Dotato di rappresentazione grafica: diagramma (o schema) ERCostrutti di base:

EntitàAssociazioniAttributi

13

Costrutti di baseEntità: collezione di oggetti della realtà che vogliamo modellare, che possiedono caratteristiche comuni (es. clienti, film, …)Istanze di entità: specifici oggetti appartenenti ad una certa entità (es. il cliente Marco Verdi, il film La fabbrica di cioccolato, …)Graficamente:

Cliente Film

Page 8: 03  Progettazione Concettuale

14

Costrutti di baseAssociazione (o relazione): legame logico tra entitàIstanze di associazione: combinazioni di istanze delle entità che prendono parte ad una associazione Graficamente:

c istanza di Cliente, f istanza di Film (c,f) istanza di Consiglia

Cliente Consiglia Film

15

Associazioni

L'insieme delle istanze di un'associazione èun sottoinsieme del prodotto Cartesiano degli insiemi delle istanze delle entità che partecipano all'associazioneQuindi, l’insieme delle istanze di un’associazione non può contenere duplicatiCiò ha conseguenza sulle scelte progettuali (si veda il seguito)

Page 9: 03  Progettazione Concettuale

16

Numero di entità che partecipano ad un'associazioneAssociazione unaria: grado 1

Associazione binaria: grado 2

Grado di un’associazione

Film

SeguitoDi

Cliente Consiglia Film

17

Grado di un’associazioneAssociazione n-aria: grado n > 2

Film Prodotto CasaProd

Studio

Page 10: 03  Progettazione Concettuale

18

AssociazioniRuolo: funzione che un'istanza di entità esercita nell'ambito di un'associazione

Nel caso di associazione unaria il ruolo è sempre necessario

Film

SeguitoDi

prequel sequel

19

AttributiProprietà posseduta da un'entità o da un'associazio-neGraficamente:

nome, cognome, codCli, residenza, telefono, dataNsono attributi di Cliente

Clientenome

cognome

codCli

residenza

telefonodataN

Page 11: 03  Progettazione Concettuale

20

Attributi

Anche le associazioni possono avere attributiEsempio:

Il giudizio non è specifico né di un cliente né di un film, ma del legame Cliente-Film che si crea quando un cliente consiglia un certo film

Cliente Consiglia Film

giudizio

21

AttributiMono-valore: possono assumere un solo valoreMulti-valore: possono assumere più di un valoreEsempio:

dataN: mono-valore in quanto un cliente ha una sola data di nascitatelefono: multi-valore in quanto un cliente può avere più recapiti telefonici

Clientenome

cognome

codCli

residenza

telefonodataN

Page 12: 03  Progettazione Concettuale

22

Attributo composto

Possiede dei sotto-attributiEs. residenza con sotto-attributi città, via, no e capGraficamente:

residenza

cittàvianocap

23

Dominio di un attributoInsieme dei valori che un attributo può assumereDomini semplici:

Domini standard: interi, reali, booleani, date, caratteri,stringhe di caratteri, ecc.Intervalli di valori: ad esempio di interi o di caratteriInsiemi di valori (per attributi multi-valore)Domini definiti per enumerazione dall'utente

Notazione:[vi,vj]: intervallo compreso fra vi e vjset_of(d): insiemi di valori nel dominio d{vi, ... vj}: rappresenta uno tra i valori: vi, ..., vj

Page 13: 03  Progettazione Concettuale

24

Domini composti

L’insieme dei valori è dato dal prodotto cartesiano degli insiemi di valori associati ai domini componenti.

se D = D1 × D2 × … × Dn allora < d1, ..., dn > t.c. di∈ Di, i = 1, ..., n, è un possibile valore

Servono per associare un dominio agli attributi composti

25

Dominio di un attributoEsempio: possibile dichiarazione per gli attributi dell’entità Cliente:codCli: intnome: stringcognome: stringdataN: dateresidenza: string × string × string × int

dichiarazione per l’attributo giudizio dell’associazione Consiglia:giudizio: dom_giudiziodom_giudizio: [0,5]

Page 14: 03  Progettazione Concettuale

26

Dominio di un attributo

Le informazioni sui domini di un attributo non sono direttamente rappresentabili in un diagramma ERSono però fondamentali per una corretta progettazione logicaDevono quindi essere inserite nella documentazione a corredo del diagramma ER

27

Vincoli di integrità

Il modello ER fornisce costrutti per definire:1. Vincoli di cardinalità, sia per associazioni

che per attributi2. Vincoli di identificazione, per entità

Anche i domini degli attributi sono dei vincoli di integrità

Page 15: 03  Progettazione Concettuale

28

Vincoli di cardinalità per associazioni

Cardinalità minima: Numero minimo di istanze di un’associazione a cui le istanze delle entità coinvolte nell’associazione possono partecipare

Cardinalità massima: Numero massimo di istanze di un’associazione a cui le istanze delle entità coinvolte nell’associazione possono partecipare

Graficamente, data un’entita E ed un’associazione A la cardinalità minima e massima di E rispetto ad A si indica tramite la coppia (c_min,c_max) sulla linea che congiunge E ad A

29

Esempio

Un cliente può:Non avere in noleggio video (c_min = 0)Averne contemporaneamente in noleggio non più di 3 (c_max = 3)

Un video può:Non essere correntemente in noleggio (c_min = 0)Essere noleggiato da non più di un cliente contemporaneamente (c_max = 1)

Cliente Noleggia Video(0,3) (0,1)

Page 16: 03  Progettazione Concettuale

30

Vincoli di cardinalità per associazioni

Valori più comuni:c_min: 0, 1c_max: n, ovvero qualunque intero > 1

Data un’entità E ed un'associazione A:c_min=0 ⇒ esistono istanze di E che non partecipano ad alcuna istanza di A, la partecipazione di E ad A è opzionalec_min=1 ⇒ ogni istanza di E partecipa almeno ad una istanza di A, la partecipazione di E ad A èobbligatoria

31

Vincoli di cardinalità per associazioni

Data un’entità E ed un'associazione A:c_max=1 ⇒ ogni istanza di E può partecipare a non più di una istanza di Ac_max=c_min=1 ⇒ ogni istanza di E partecipa ad una ed una sola istanza di Ac_max=n ⇒ non esiste limite al numero massimo di istanze di A a cui ogni istanza di E può parteciparec_min=0, c_max=n ⇒ ogni istanza di E può partecipare ad un numero qualsiasi di istanze di A, anche nessuna

Se in un diagramma ER si omettono i vincoli di cardinalità per le associazioni, si assume (0,n) come valore di default

Page 17: 03  Progettazione Concettuale

32

Vincoli di cardinalità per associazioni

Esempio:

c_min di Video rispetto a Contiene è 1: ogni video contiene almeno un filmc_min di Film rispetto a Contiene è 0: possono esistere film in catalogo per cui al momento non sono presenti videoc_max di Video rispetto a Contiene è 1: ogni video contiene al più un filmc_max di Film rispetto a Contiene è n: ogni film può essere contenuto in un numero arbitrario di video

Video Contiene Film(1,1) (0,n)

33

Vincoli di cardinalità per associazioni

Un'associazione binaria A tra due entità E1ed E2 (o unaria con E1 = E2) si dice:

uno a uno: se c_max di E1 ed E2 rispetto ad A è1uno a molti: se c_max di E1 rispetto ad A è n e c_max di E2 rispetto ad A è 1, oppure c_max di E1rispetto ad A è 1 e c_max di E2 rispetto ad A è nmolti a molti: se c_max di E1 ed E2 rispetto ad A è n

Page 18: 03  Progettazione Concettuale

34

Vincoli di cardinalità per attributi

Numero minimo (c_min) e massimo (c_max) di valori dell'attributo che possono essere associati ad un'istanza della corrispondente associazione od entitàNei diagrammi ER si indicano\ mediante la coppia (c_min,c_max) sulla linea che congiunge l'attributo all'associazione/entitàSe vengono omessi, il valore di default è (1,1)

35

Si parla di attributi:opzionali: se la cardinalità minima è 0 obbligatori: se la cardinalità minima è 1mono-valore: se la cardinalità massima è 1 multi-valore: se la cardinalità massima è n

Esempio:

Vincoli di cardinalità per attributi

Clientenome (1,2)

cognome (1,2)codCli

residenza

telefono (1,n)dataN (0,1)

Page 19: 03  Progettazione Concettuale

36

Vincoli di identificazioneIdentificatori per un’entità: insieme di attributi e/o entità che identificano univocamente le istanze dell'entitàUn identificatore è minimale se qualsiasi sottoinsieme proprio non è un identificatoreDurante la progettazione concettuale per ogni entitàè bene identificare tutti gli identificatori minimaliSi noti che gli identificatori hanno senso solo per le entità e non per le associazioniNell'insieme di istanze di un'associazione si hanno tutte tuple distinte ⇒ non c'è bisogno di identificatori

37

Vincoli di identificazioneA volte non è possibile identificare un'istanza di entità solo sulla base dei suoi attributi, cioè due istanze diverse possono coincidere su tutti gli attributiSi utilizza allora il fatto che tale istanza partecipi ad una particolare istanza di associazione con una data istanza di un'altra entitàL'entità identificata in questo modo viene detta entità debole

Page 20: 03  Progettazione Concettuale

38

Tipologie di identificatori

Interni: uno o più attributi dell'entitàEsterni: uno o più entità collegate da una associazione all'entità a cui si riferiscono (identificazione esterna da tale entità attraversotale associazione)Misti: combinazioni delle due tipologie precedentiSemplici: un solo elementoComposti: più di un elemento

39

Tipologie di indentificatoriIdentificatore interno semplice:

Identificatore interno composto:

cognomecodCli

Clientenome residenza

telefonodataN

titoloregista

valutaz

Filmanno

genere

Page 21: 03  Progettazione Concettuale

40

Tipologie di identificatori

Identificatore misto (composto):

Identificatore esterno (semplice):

Video Posseduto Videotecacolloc tipo

nomecittà

(1,1) (1,n)

Nazionale Gioca Nazionenomecapitale(1,1) (0,1)numAbitanti

41

Vincoli di identificazione

Le entità deboli hanno sempre cardinalità(1,1) rispetto all'associazione attraverso cui avviene l'identificazione:

Nel caso di identificazione esterna l'associazione sarà uno a unoNel caso di identificazione mista l'associazione sarà uno a molti

Page 22: 03  Progettazione Concettuale

42

Gerarchie di generalizzazioneUlteriore costrutto del modello ER, non presente nella formulazione originariaUna entità E è una generalizzazione delle entità E1, …, En se ogni istanza delle entità E1, …, En è anche un'istanza di E:

E: entità padre E1, …, En: entità figlie

Tutte le proprietà dell’entità padre (attributi, identificatori ed associazioni) vengono ereditate dalle entità figlie

43

Graficamente

bonus

cognomecodCli

Clientenome residenza

telefonodataN

Standard VIPptiMancanti

Page 23: 03  Progettazione Concettuale

44

Gerarchie di generalizzazioneVincoli impliciti:

Se una entità E1 è definita come generalizzazione di una entità E2:

L'insieme delle istanze di E2 deve essere contenuto in quello delle istanze di E1

Ogni attributo di E1 è anche un attributo di E2

Ad ogni associazione cui partecipa E1 partecipa anche E2

45

Gerarchie di generalizzazioneE generalizzazione di E1 … En:

Totale: ogni istanza di E è istanza di almeno un'entità Eies. Cliente - Standard, VIP, se standard e VIP sono le uniche tipologie di clienti previste dalla videoteca

Parziale: esiste almeno un'istanza di E che non èistanza di alcuna entità Eies. Cliente - Standard, VIP, se esistono clienti che possono effettuare un noleggio senza registrarsi al programma di fidelizzazione

Page 24: 03  Progettazione Concettuale

46

Gerarchie di generalizzazione

La generalizzazione può essere inoltre:Esclusiva: ogni istanza di E è istanza di al più un'entità Eies. Cliente - Standard, VIPCondivisa: esiste almeno un'istanza di E che è istanza di più di un'entità Eies. Film - FilmAnimazione, FilmEssay

47

Gerarchie di generalizzazioneLe due classificazioni precedenti sono ortogonaliLe generalizzazioni possono quindi essere di 4 tipi:

Totali esclusive, totali condiviseParziali esclusive, parziali condivise

Le informazioni sulle tipologie di gerarchie di generalizzazione presenti in uno schema ER vanno inserite nella documentazione a corredo dello schema

Page 25: 03  Progettazione Concettuale

48

Associazione di sottoinsiemeCaso particolare di generalizzazione (parziale ed esclusiva)Definire una relazione di sottoinsieme tra una entitàE1 ed una entità E2 significa specificare che ogni istanza di E1 è anche istanza di E2

Esempio:Film

FilmBn

49

Modello ER: Principali simboli grafici

Page 26: 03  Progettazione Concettuale

50

Metodologie di progettazioneIl modello ER è lo strumento tramite cui è possibile definire lo schema concettuale di una base di dati, ma…Come ottenere un “buon” schema concettuale partendo dal documento di specifica dei requisiti?Come si valuta la “bontà” di uno schema concettuale?Non esiste una metodologia totalmente standardizzabile … ma esistono alcune linee guida per condurre le varie fasi

51

Raccolta ed analisi dei requisiti

E’ una attività difficilmente standardizzabileDi solito condotta da personale esperto, in stretta collaborazione con gli utenti finaliUna volta ottenuto il documento di specifica, è però possibile effettuare alcune operazioni su di esso, che faciliteranno le successive fasi di progettazione

Page 27: 03  Progettazione Concettuale

52

Raccolta ed analisi dei requisitiOperazioni sul documento di specifica:

Leggerlo attentamente evidenziando tutte le possibili fonti di ambiguità ed imprecisione, cercando di chiarirle con i committenti del progettoEvidenziare i sinonimi, scegliere tra questi il termine che meglio modella il concetto da rappresentare, e sostituire gli altri con il termine sceltoSeparare le frasi che riguardano i dati (di maggiore rilevanza per la progettazione) da quelle che riguardano le operazioniRiorganizzare le frasi per concetti

53

Progettazione concettuale

Ristrutturato il documento di specifica, come è possibile ottenere da questo un buon schema ER?

Scelta dei costruttiMetodologie per la generazione di diagrammi ERDocumentazione dei diagrammiVerifiche di qualità

Page 28: 03  Progettazione Concettuale

54

Scelta dei costrutti

Leggere attentamente il documento di specifica e per ogni concetto individuato, scegliere il costrutto del modello ER più idoneo alla sua rappresentazioneEsistono alcune linee guida per effettuare questa scelta

55

Scelta dei costruttiSe un concetto descrive un insieme omogeneo di oggetti rilevanti per il dominio considerato e caraterizzati da un insieme di proprietà comuni:

EntitàEs. clienti della videoteca, filmSono buoni candidati a essere rappresentati come entità i nomi che compaiono frequentemente nel documento di specificaLeggendo il documento di specifica, si devono anche assegnare gli opportuni vincoli di identificazione alle entità

Page 29: 03  Progettazione Concettuale

56

Scelta dei costruttiSe un concetto è un caso particolare di un altro:

Gerarchia di generalizzazioneEs. clienti, clienti standard e clienti VIPQuesta soluzione è opportuna quando l’insieme delle proprietà delle entità figlie è diverso da quello delle entità padreAltrimenti, alternativa: inserire nell’entità che modella il concetto più generale un attributo che indentifica le varie tipologie di istanze (es. video con attributo tipo per indicare se DVD o VHS)

57

Scelta dei costruttiSe il concetto rappresenta una proprietà elementare, senza ulteriori sotto-proprietà:

AttributoEs. nome di un cliente, titolo di un film, codice di un videoNel caso invece di proprietà con sotto-proprietà, bisogna decidere se modellarle tramite attributi composti oppure entitàLeggendo il documento di specifica, si devono anche assegnare gli opportuni vincoli di cardinalità

Page 30: 03  Progettazione Concettuale

58

Esempio

Residenza dei clienti della videoteca:Via, numero civico, città, cap

Alternative:1. Attributo composto dell’entità Cliente2. Entità residenza collegata a Cliente da

un’associazione3. (1) è opportuna quando non esistono molti clienti

che condividono la stessa residenza

59

Scelta dei costruttiSe un concetto denota un legame logico tra concetti modellati come entità:

AssociazioneEs. video consigliato da un clienteUna associazione può anche avere delle proprietà, modellate come attributiSono buoni candidati a essere rappresentati come associazioni i verbi che mettono in relazione concetti modellati come entitàLeggendo il documento di specifica, si devono anche assegnare gli opportuni vincoli di cardinalità alle associazioni

Page 31: 03  Progettazione Concettuale

60

Scelta dei costruttiNon sempre è facile decidere se modellare un concetto tramite un’entità o una associazione:Es. Noleggio di un video da parte di un cliente:

1. Associazione Noleggia tra Cliente e Video2. Entità Noleggio legata a Cliente e Video tramite

opportune associazioni3. (1) non permette di rappresentare più noleggi dello stesso

video da parte dello stesso cliente. E’ appropriata se si vogliono mantenere informazioni solo sui noleggi in corso

4. (2) permette di modellare più noleggi dello stesso video da parte dello stesso cliente, mediante attributi dataNol e dataRest

61

Generazione diagrammi ER

Il diagramma ER finale viene di solito generato mediante raffinamento e/o integrazione di un certo numero di schemi intermedi (dipendente dalla complessità delle specifiche)Strategie:

Top-downBottom-upMista

Page 32: 03  Progettazione Concettuale

62

Strategia top-down

SpecificheSchema inizialeSchema intermedioSchema intermedioSchema finale

63

Strategia bottom-up

SpecificheSpecifiche 2Specifiche 1

Specifiche 1,1

Specifiche 1,2

Specifiche 2,1

Specifiche 2,2

Schema 1,1

Schema 1,2

Schema 2,1

Schema 2,2

Schema finale

Page 33: 03  Progettazione Concettuale

64

Strategia mista

Si individuano i concetti principali e si realizza uno schema scheletroSulla base di questo si può decomporrePoi si raffina, si espande, si integra per arrivare allo schema finale

65

Documentazione di supportoDeve contenere:

Domini degli attributiVincoli imposti dal dominio, non rappresentabili tramite vincoli di identificazione e cardinalità nel diagramma ERVincoli di autorizzazione, se necessari Tipologie di gerarchie di generalizzazioneInformazioni sulle principali scelte progettuali, soprattutto ove siano possibili più alternativePer basi di dati di dimensioni elevate:dizionario delle entità e delle associazioni

Page 34: 03  Progettazione Concettuale

66

Verifiche di qualità

Frequenti verifiche di completezza e correttezza sugli schemi intermediVerifiche sullo schema ER finale:

Correttezza sintattica e semanticaCompletezzaRidondanza

67

Un esempio di progettazione concettuale

Videoteca

Page 35: 03  Progettazione Concettuale

68

SpecificheVogliamo realizzare una base di dati per una videoteca. La videoteca consente il noleggio di circa 1000 film. Per ogni film, vogliamo memorizzare il titolo, il regista, l'anno di produzione, il genere e la valutazione della critica, se presente. Ogni film è disponibile per il noleggio in un certo numero di video.Ogni videocassetta o dvd disponibile nella videoteca (circa 3000) è identificato da un codice di collocazione e dal tipo di supporto (videocassetta o dvd).La base di dati dovrà inoltre memorizzare informazioni sui clienti della videoteca (circa 2000) e sui video che hanno noleggiato.Il numero di noleggi giornalieri alla videoteca è circa 200. Per ogni utente della videoteca vogliamo mantenere il suo nome, cognome, data di nascita, residenza e telefono. Ogni cliente è identificato da un codice che corrisponde al numero della tessera rilasciatagli per usufruire dei servizi della videoteca. Ogni cliente può avere contemporaneamente in noleggio un certo numero di video (non più di tre). Per ogni noleg-gio, vogliamo memorizzare la data in cui il noleggio è stato effettuato e, per i noleggi con-clusi, la data di restituzione. Ogni cliente può inoltre consigliare dei film ad altri clienti, espri-mendo per essi un giudizio.La videoteca prevede un programma di fidelizzazione dei clienti. Ogni noleggio consente l'accumulo di un certo numero di punti. Quando i punti accumulati superano una certa soglia, i clienti vengono qualificati come clienti VIP e hanno diritto ad un bonus. La base di dati dovrà memorizzare, per ogni cliente VIP, il valore corrente del suo bonus. Per i clienti standard, ovvero quelli che non hanno ancora accumulato punti sufficien-ti per accedere alla categoria VIP, vogliamo memorizzare il numero di punti mancanti ad accedere a tale categoria

69

SpecificheVogliamo realizzare una base di dati per una videoteca. La videoteca consente il noleggio di circa 1000 film. Per ogni film, vogliamo memorizzare il titolo, il regista, l'anno di produzione, il genere e la valutazione della critica, se presente. Ogni film è disponibile per il noleggio in un certo numero di video.Ogni videocassetta o dvd disponibile nella videoteca (circa 3000) è identificato da un codice di collocazione e dal tipo di supporto (videocassetta o dvd).La base di dati dovrà inoltre memorizzare informazioni sui clienti della videoteca (circa 2000) e sui video che hanno noleggiato.Il numero di noleggi giornalieri alla videoteca è circa 200. Per ogni utente della videoteca vogliamo mantenere il suo nome, cognome, data di nascita, residenza e telefono. Ogni cliente è identificato da un codice che corrisponde al numero della tessera rilasciatagli per usufruire dei servizi della videoteca. Ogni cliente può avere contemporaneamente in noleggio un certo numero di video (non più di tre). Per ogni noleg-gio, vogliamo memorizzare la data in cui il noleggio è stato effettuato e, per i noleggi con-clusi, la data di restituzione. Ogni cliente può inoltre consigliare dei film ad altri clienti, esprimendo per essi un giudizio.La videoteca prevede un programma di fidelizzazione dei clienti. Ogni noleggio consente l'accumulo di un certo numero di punti. Quando i punti accumulati superano una certa soglia, i clienti vengono qualificati come clienti VIP e hanno diritto ad un bonus. La base di dati dovrà memorizzare, per ogni cliente VIP, il valore corrente del suo bonus. Per i clienti standard, ovvero quelli che non hanno ancora accumulato punti sufficienti per accedere alla categoria VIP, vogliamo memorizzare il numero di punti mancanti ad accedere a tale categoria

Page 36: 03  Progettazione Concettuale

70

Specifiche ristrutturateVogliamo realizzare una base di dati per una videoteca. La videoteca consente il noleggio di circa 1000 film. Per ogni film, vogliamo memorizzareil titolo, il nome e cognome del regista, l'anno di produzione, il genere e la valutazione della critica (espressa in una scala di valori decimali da 0 a 5), se presente. Ogni film è disponibile per il noleggio in un certo numero di video (dove video sono sia videocassette che dvd). Ogni video disponibile nella videoteca (circa 3000) è identificato da un codice di collocazione e dal tipo di supporto(videocassetta o dvd).La base di dati dovrà inoltre memorizzare informazioni sui clienti della videoteca (circa 2000) e sui video che hanno correntemente in noleggio ed hanno noleggiato in passato.Il numero di noleggi giornalieri alla videoteca è circa 200. Per ogni cliente della videoteca vogliamo mantenere il suo nome, cognome, data di nascita, residenza (intesa come città, via, numero civico e cap) e un insieme di recapiti telefonici. Ogni cliente è identificato da un codice che corrisponde al numero della tessera rilasciatagli per usufruire dei servizi della videoteca. Ogni cliente può avere contemporaneamente in noleggio un certo numero di video (non più di tre).Per ogni noleggio vogliamo memorizzare il giorno, mese ed anno in cui il noleggio è stato effettuato e, per i noleggi conclusi, il giorno, mese ed anno della restituzione. Ogni cliente può inoltre consigliare dei film ad altri clienti, esprimendo per essi un giudizio in una scala di valori interi da 0 a 5. La videoteca prevede un programma di fidelizzazionedei clienti. Ogni noleggio consente l'accumulo di un certo numero di punti. Quando i punti accumulati superano una certa soglia, i clienti vengono qualificati come clienti VIP e hanno diritto ad un bonus di un certo importo espresso in euro. La base di dati dovrà memorizzare, per ogni cliente VIP, il valore corrente del suo bonus. Per i clienti standard, ovvero quelli che non hanno ancora accumulato punti sufficienti per accedere alla categoria VIP, vogliamo memorizzare il numero di punti mancanti ad accedere a tale categoria

71

Schema scheletro

Cliente Noleggia Video

Contiene

Film

Page 37: 03  Progettazione Concettuale

72

Sotto-schema cliente

bonus

cognomecodCli

Clientenome

telefono (1,n)dataN

Standard VIP

residenza

cittàvianocap

73

Schema scheletro

Cliente Noleggia Video

Contiene

Film

Page 38: 03  Progettazione Concettuale

74

Sotto-schema noleggio

Noleggio

RelativoA

Video

(1,1)

(0,n)

DVD VHS

colloc

dataRest (0,1) dataNol

75

Schema scheletro

Cliente Noleggia Video

Contiene

Film

Page 39: 03  Progettazione Concettuale

76

Sotto-schema film

titoloregista

valutaz (0,1)

Filmanno

genere

77

Integrazione

Cliente Noleggia Video

Contiene

Film

Page 40: 03  Progettazione Concettuale

78

Integrazione

Cliente Effettua Noleggio(1,1)(0,n)

RelativoA

Video

(1,1)

(0,n)

DVD VHS

colloc

dataRest (0,1) dataNol

VIPStandard

ptiMancanti bonus

codCli …..

79

Integrazione

Cliente Noleggia Video

Contiene

Film

Page 41: 03  Progettazione Concettuale

80

Integrazione

Cliente Effettua Noleggio(1,1)(0,n)

RelativoA

Video

(1,1)

(0,n)

DVD VHS

colloc

dataRest (0,1) dataNol

VIPStandard

ptiMancanti

bonus

codCli …..

Film

……

(1,1) Contiene (0,n)

81

Cliente

Video

(1,1)

Contiene

Fi lm

Standard VIP

bonusptiMancanti

(0,n)

(0,n)

valutaz (0,1)

anno

colloc

nomecognome

dataN

telefono(1,n)

codCli residenza

città via no cap

DVD

VHS

Noleggio

dataRest (0,1) dataNol

Effettua

RelativoA

(1,1)

(0,n) (1,1)

Consiglia

giudizio

(0,n)

(0,n)

ti tolo regista

genere

Page 42: 03  Progettazione Concettuale

82

DocumentazioneVincoli:

V1: Un cliente non può noleggiare più di tre video contemporaneamente

V2: Un video non può essere noleggiato prima dell’uscita del relativo film

V3: La data di noleggio di un video non può essere successiva a quella di restituzioneV4: Uno stesso video non può essere noleggiato da due o più clientidiversi contemporaneamente

83

DocumentazioneGerarchie di generalizzazione:

Totale/esclusivaDVD, VHSVideo

Totale/esclusivaStandard, VIPCliente

TipologiaEntità figlieEntità padre

Page 43: 03  Progettazione Concettuale

84

Dizionario delle entità

gli stessi di videoVideocassette offerte dalla videoteca

VHS

gli stessi di videoDVD offerti dalla videotecaDVD

gli stessi di videotitolo, regista, valutaz, anno, genere

Film offerti dalla videotecaFilm

{video,dataNol} {video,dataRest}

dataNol, dataRestNoleggi correnti e conclusi effettuati nella videoteca

Noleggio

colloccollocVideo offerti dalla videoteca

Video

gli stessi di ClientebonusCliente VIP della videoteca

VIP

gli stessi di ClienteptiMancantiCliente comune della videoteca

Standard

codCli,{nome, cognome, dataN}

codCli,dataN, nome, cognome,telefono, residenza

Utenti che usufruiscono dei servizi della videoteca

Cliente

IdentificatoriAttributiDescrizioneNome

85

Dizionario delle associazioni

Cliente, FilmgiudizioFilm consigliati dai clienti della videoteca

Consiglia

Video, FilmFilm a disposizione nella videoteca

Contiene

Noleggio, VideoVideo noleggiatiRelativoA

Cliente, NoleggioNoleggi effettuatiEffettuata

Entità collegateAttributiDescrizioneNome