1. Analisi dei requisiti
|
|
|
- Raimonda Gentili
- 10 anni fa
- Visualizzazioni
Transcript
1 1. Analisi dei requisiti 1a. Requisiti espressi in linguaggio naturale Si vuole realizzare una base di dati per la gestione di una biblioteca di medie dimensioni. La base di dati sarà rivolta al personale delle biblioteca, in modo da facilitare e velocizzare le comuni operazioni di gestione dei prestiti e rendere più immediata la loro visualizzazione. La base di dati quindi conterrà tutte le informazioni riguardanti i volumi gestiti dalla biblioteca, gli utenti e i prestiti. I volumi sono divisi in due categorie: libri e manuali. Questi a sua volta si possono dividere in due sottocategorie: i libri, in quelli di narrativa e quelli di saggistica; mentre i manuali, in dizionari e tutti gli altri tipi che non rientrano nei dizionari. La biblioteca gestisce solo libri e manuali (niente riviste, giornali o altro), di ognuno dei quali vogliamo poter conoscere il codice (che deve essere univoco), il titolo, l edizione, la lingua in cui è scritto (o le due lingue nel caso del dizionario), gli autori, l editore e l anno di pubblicazione. Inoltre deve essere possibile risalire ad altri eventuali volumi che sono citati da quest ultimo. Di ogni volume possono esistere più copie identiche, queste avranno lo stesso codice del volume, ma dovranno essere dotate di un codice della copia che le differenzia dalle altre riproduzioni. I codici della copia potranno essere simili per volumi diversi. Di ciascuna casa editrice registrata nel nostro archivio, vogliamo conoscere la denominazione e la città di appartenenza. Di ciascun scrittore, invece, desideriamo conoscere i dati anagrafici: nome, cognome, data di nascita e, se è deceduto, la data della morte (che potrebbe essere anche sconosciuta). I volumi della biblioteca sono catalogati in modo da poterli ricercare facilmente: ad ogni libro di narrativa dovrà essere associato un genere (es. giallo, horror, avventura,...), mentre ad ogni libro di saggistica, o manuale che non sia un dizionario, dovrà essere associata una materia (es. informatica, elettronica, chimica,...). Un volume potrà far parte di una particolare collana ed in tal caso vogliamo poter risalire al numero che il volume occupa al suo interno. L indicazione della collocazione di ogni testo è suddivisa in tre parti: numero della sezione, numero dello scaffale e numero di registrazione. Se di un volume esistono più copie, queste saranno poste fisicamente una di fianco all altra. Gli utenti della biblioteca sono registrati in base ai dati anagrafici (nome, cognome, indirizzo, numero di telefono). A ciascuno di loro, inoltre, è associato un numero di tessera. A seguito di una richiesta, viene dapprima verificata la presenza di almeno una copia del volume, e se questo è disponibile si procede con il prestito. Quando un cliente ottiene un volume in prestito, la base di dati registra la data di inizio del prestito, il volume prelevato e i dati dell utente che lo ha preso. Quando il libro viene riconsegnato, la base di dati completa le informazioni sul prestito inserendo anche la data di riconsegna. Ad ogni volume è associata una durata massima del prestito. Se un utente riconsegna un volume in ritardo, riceve un avviso, se arriva a dieci avvisi la sua scheda viene bloccata e riceve una multa. Gli avvisi dovranno essere cumulativi. Le operazioni più importanti previste sulla base di dati sono: 1- Ricerca di tutti i volumi attualmente in possesso di un utente, restituendo il codice del volume, il codice della copia e il titolo; Frequenza stimata: 5 volte al giorno 2- Verifica del numero di volumi riconsegnati in ritardo da un utente; Frequenza stimata: 2 volte al giorno 3- Inserimento di un nuovo libro di narrativa con autori ed editore che non sono presenti nella base di dati, associato ad un genere ed a una collana già presenti nell archivio; Frequenza stimata: 2 volte alla settimana 4- Trova la collocazione di un volume catalogato come libro, partendo dal codice del volume e visualizzando, oltre alla posizione, il titolo, la lingua, l edizione, l editore e il nome e cognome dell autore; Frequenza stimata: 120 volte al giorno 5- Ricerca tutti i volumi citati da un altro volume restituendone il titolo, l edizione e il nome e cognome dell autore; Frequenza stimata: 20 volte al giorno 6- Ricerca tutti i volumi scritti da un autore visualizzando il codice del volume, il titolo, l edizione, l editore e l anno di pubblicazione;
2 Frequenza stimata: 80 volte al giorno 7- Cancellazione di un autore che non si riferisce a nessun volume; Frequenza stimata: 1 volta al mese 8- Ricerca di tutti i volumi appartenenti a un genere (solo per libri di narrativa); Frequenza stimata: 40 volte al giorno 9- Registrazione di un nuovo prestito (si dovrà prima vedere se c è almeno una copia disponibile del volume e se la tessera non è bloccata); Frequenza stimata: 100 volte al giorno 10- Registrazione dell avvenuta riconsegna di un volume (fine del prestito); Frequenza stimata: 100 volte al giorno 11- Ricerca di tutte le copie di tutti i volumi in prestito visualizzando oltre ai codici anche il titolo e l edizione (considerando che in media ce ne sono 500 alla settimana); Frequenza stimata: 1 volta alla settimana 12- Invio multa e blocco della tessera per tutti gli utenti che hanno raggiunto dieci o più avvisi (considerando che mediamente ce ne sono due alla settimana). Frequenza stimata: 3 volte alla settimana 1b. Glossario dei termini Termine Descrizione Sinonimi Collegamenti Volume Materiale cartaceo gestito dalla Testo Editore, autore, collana biblioteca. Può essere un libro o un manuale Libro Particolare categoria di volume. Può - Volume, libro di essere di narrativa o saggistica saggistica e libro di Manuale Libro di narrativa Libro di saggistica Dizionario Altro manuale Particolare categoria di volume. Può essere un dizionario o un qualunque altro tipo di manuale Particolare categoria di libro e sottocategoria di volume Particolare categoria di libro e sottocategoria di volume Particolare categoria di manuale e sotto-categoria di volume Particolare categoria di manuale e sotto-categoria di volume narrativa - Volume, dizionario e altro manuale - Libro e genere - Libro e materia - Manuale - Manuale e materia Editore Colui che ha pubblicato il volume Casa Volume editrice Autore Colui che ha scritto un volume Scrittore Volume Genere Es. giallo, horror, avventura,ecc. - Libro di narrativa E associato ad ogni libro di narrativa Materia Es. informatica, chimica, meccanica, - Libro di saggistica e altro ecc. E associata ad ogni libro di saggistica e ad ogni manuale che non sia un dizionario manuale Collana Utente Raccolta di volumi aventi tra loro una certa analogia Colui che prende in prestito dei volumi dalla biblioteca - Volume Cliente Volume 1c. Rilevamento delle ambiguità e correzioni proposte 2
3 Nel testo sono presenti diversi casi di ambiguità, procurati la maggior parte da sinonimi, che devono essere chiariti. Linea Termine Nuovo termine Ragione della correzione 9 Codice Codice del volume Codice volume è più specifico 13 Riproduzioni Copie Sinonimo per riproduzione in linea Casa editrice Editore Sinonimo per casa editrice in linea Scrittore Autore Sinonimo per scrittore in linea Numero Numero d ordine Numero d ordine è più specifico 24 Testo Volume Sinonimo per testo in linea 4 25 Numero di registrazione Codice del volume Codice del volume è più specifico 31 Cliente Utente Sinonimo per cliente in linea 4 32 Libro Volume Libro è troppo specifico 35 Scheda Tessera Sinonimo per scheda in linea 28 1d. Requisiti in linguaggio naturale con correzione ambiguità Si vuole realizzare una base di dati per la gestione di una biblioteca di medie dimensioni. La base di dati sarà rivolta al personale delle biblioteca, in modo da facilitare e velocizzare le comuni operazioni di gestione dei prestiti e rendere più immediata la loro visualizzazione. La base di dati quindi conterrà tutte le informazioni riguardanti i volumi gestiti dalla biblioteca, gli utenti e i prestiti. I volumi sono divisi in due categorie: libri e manuali. Questi a sua volta si possono dividere in due sottocategorie: i libri, in quelli di narrativa e quelli di saggistica; mentre i manuali, in dizionari e tutti gli altri tipi che non rientrano nei dizionari. La biblioteca gestisce solo libri e manuali (niente riviste, giornali o altro), di ognuno dei quali vogliamo poter conoscere il codice del volume (che deve essere univoco), il titolo, l edizione, la lingua in cui è scritto (o le due lingue nel caso del dizionario), gli autori, l editore e l anno di pubblicazione. Inoltre deve essere possibile risalire ad altri eventuali volumi che sono citati da quest ultimo. Di ogni volume possono esistere più copie identiche, queste avranno lo stesso codice del volume, ma dovranno essere dotate di un codice della copia che le differenzia dalle altre copie. I codici della copia potranno essere simili per volumi diversi. Di ciascun editore registrato nel nostro archivio, vogliamo conoscere la denominazione e la città di appartenenza. Di ciascun autore, invece, desideriamo conoscere i dati anagrafici: nome, cognome, data di nascita e, se è deceduto, la data della morte (che potrebbe essere anche sconosciuta). I volumi della biblioteca sono catalogati in modo da poterli ricercare facilmente: ad ogni libro di narrativa dovrà essere associato un genere (es. giallo, horror, avventura,...), mentre ad ogni libro di saggistica, o manuale che non sia un dizionario, dovrà essere associata una materia (es. informatica, elettronica, chimica,...). Un volume potrà far parte di una particolare collana ed in tal caso vogliamo poter risalire al numero d ordine che il volume occupa al suo interno. L indicazione della collocazione di ogni volume è suddivisa in tre parti: numero della sezione, numero dello scaffale e codice del volume. Se di un volume esistono più copie, queste saranno poste fisicamente una di fianco all altra. Gli utenti della biblioteca sono registrati in base ai dati anagrafici (nome, cognome, indirizzo, numero di telefono). A ciascuno di loro, inoltre, è associato un numero di tessera. A seguito di una richiesta, viene dapprima verificata la presenza di almeno una copia del volume, e se questo è disponibile si procede con il prestito. Quando un utente ottiene un volume in prestito, la base di dati registra la data di inizio del prestito, il volume prelevato e i dati dell utente che lo ha preso. Quando il volume viene riconsegnato, la base di dati completa le informazioni sul prestito inserendo anche la data di riconsegna. Ad ogni volume è associata una durata massima del prestito. Se un utente riconsegna un volume in ritardo, riceve un avviso, se arriva a dieci avvisi la sua tessera viene bloccata e riceve una multa. Gli avvisi dovranno essere cumulativi. 1e. Filtraggio dei concetti fondamentali 3
4 Frasi di carattere generale Si vuole realizzare una base di dati per la gestione di una biblioteca di medie dimensioni. La base di dati sarà rivolta al personale delle biblioteca, in modo da facilitare e velocizzare le comuni operazioni di gestione dei prestiti e rendere più immediata la loro visualizzazione. La base di dati quindi conterrà tutte le informazioni riguardanti i volumi gestiti dalla biblioteca, gli utenti e i prestiti. Frasi relative a volume I volumi sono divisi in due categorie: libri e manuali. Di ogni volume vogliamo poter conoscere il codice del volume (che deve essere univoco), il titolo, l edizione, la lingua in cui è scritto (o le due lingue nel caso del dizionario), gli autori, l editore e l anno di pubblicazione. Inoltre deve essere possibile risalire ad altri eventuali volumi che sono citati da quest ultimo. Frasi relative alle copie del volume Di ogni volume possono esistere più copie identiche, queste avranno lo stesso codice del volume, ma dovranno essere dotate di un codice della copia che le differenzia dalle altre copie. I codici della copia potranno essere simili per volumi diversi. Frasi relative a libri e manuali Si possono dividere in due sottocategorie: i libri, in quelli di narrativa e quelli di saggistica; mentre i manuali, in dizionari e tutti gli altri tipi che non rientrano nei dizionari. Ad ogni libro di narrativa dovrà essere associato un genere (es. giallo, horror, avventura,...), mentre ad ogni libro di saggistica, o manuale che non sia un dizionario, dovrà essere associata una materia (es. informatica, elettronica, chimica,...). Frasi relative all editore Di ciascun editore registrato nel nostro archivio, vogliamo conoscere la denominazione e la città di appartenenza. Frasi relative all autore Di ciascun autore desideriamo conoscere i dati anagrafici: nome, cognome, data di nascita e, se è deceduto, la data della morte (che potrebbe essere anche sconosciuta). Frasi relative alla collana Un volume potrà far parte di una particolare collana ed in tal caso vogliamo poter risalire al numero d ordine che il volume occupa al suo interno. Frasi relative alla posizione del volume L indicazione della collocazione di ogni volume è suddivisa in tre parti: numero della sezione, numero dello scaffale e codice del volume. Se di un volume esistono più copie, queste saranno poste fisicamente una di fianco all altra. Frasi relative agli utenti Gli utenti della biblioteca sono registrati in base ai dati anagrafici (nome, cognome, indirizzo, numero di telefono). A ciascuno di loro, inoltre, è associato un numero di tessera. Frasi relative al prestito A seguito di una richiesta, viene dapprima verificata la presenza di almeno una copia del volume, e se questo è disponibile si procede con il prestito. Quando un utente ottiene un volume in prestito, la base di dati registra la data di inizio del prestito, il volume prelevato e i dati dell utente che lo ha preso. Quando il volume viene riconsegnato, la base di dati completa le informazioni sul prestito inserendo anche la data di riconsegna. Ad ogni volume è associata una durata massima del prestito. Se un utente riconsegna un volume in ritardo, riceve un avviso, se arriva a dieci avvisi la sua tessera viene bloccata e riceve una multa. Gli avvisi dovranno essere cumulativi. 2. Progettazione concettuale 4
5 2a. Strategia di progetto Come strategia di progetto è stata scelta la strategia mista. Si può introdurre inizialmente uno schema scheletro composto dalle entità UTENTE, e PRESTITO che sono i concetti principali di questa applicazione, e poi approfondire tutti gli altri concetti procedendo in maniera inside-out. Infine ci sarà un passo d integrazione per ottenere lo schema concettuale finale. 2b. Schema scheletro Come già detto i concetti fondamentali che emergono in una prima analisi delle specifiche sono:, UTENTE e PRESTITO. Questi possono essere rappresentati considerando utente e volume come entità, e prestito come un associazione che li collega: PRESTITO UTENTE Un altra soluzione poteva essere quella di rappresentare i tre concetti tutti come entità, ma la prima scelta è da preferire perché rende più evidente la relazione che lega utente e volume quando avviene un prestito. 2c. Schemi concettuali parziali (procedendo in maniera inside-out) Con riferimento allo schema sopra possiamo a questo punto decidere di analizzare separatamente le due entità. Utente: Questa entità dovrà possedere i seguenti attributi:,,, Indirizzo e Numero_telefonico (supponiamo quest ultimo unico e quindi con una cardinalità 1,1). Questi saranno considerati come un attributo composto chiamato Dati anagrafici. Lo stesso attributo Indirizzo sarà un attributo composto, i cui attributi semplici saranno: Città, Via, Numero_civico e CAP. Occorrerà inoltre aggiungere un attributo #Tessera che identifica un certo cliente in modo univoco ed altri tre attributi che hanno a che fare con i prestiti scaduti: Tot_avvisi, il numero totale degli avvisi ricevuti, che saranno cumulativi e faranno scattare sanzioni non appena arrivano a dieci; Multa, indica se ad un utente è stata inviata oppure no una multa; Tessera_bloccata, è lo stato della tessera (attiva o bloccata), una volta bloccata la tessera, ad un utente viene impedito di prelevare ulteriori libri. #Tessera Tessera_bloccata Multa Tot_Avvisi UTENTE Dati anagrafici Indirizzo Città Via Numero_telefonico CAP Numero_civico Volume: 5
6 Innanzi tutto si dovranno inserire gli attributi nell entità, che sono:, identifica univocamente ogni volume,, e, specifica la durata massima (in giorni) del prestito per ogni volume. A questo punto possiamo notare dalle specifiche, che ogni volume può citare altri volumi, perciò inseriamo un associazione CITAZIONE che è di tipo ricorsivo (collega l entità volume a se stessa). Verranno inseriti due identificatori (CITA A e CITATO DA) che specificano il ruolo dell associazione nei due sensi di lettura. Le cardinalità saranno entrambe, perché ogni volume può citare o essere citato da 0 ad n volumi. CITA A CITAZIONI CITATO DA Tra i volumi si individuano due categorie: i libri e i manuali. Questi concetti sono rappresentabili come entità LIBRO e MANUALE, figlie dell entità : la generalizzazione che ne risulta è totale. A sua volte le entità figlie si dividono in due sotto-categorie: i libri, in NARRATIVA e SAGGISTICA, e i manuali, in DIZIONARIO e ALTRO (manuali che non sono dizionari). Queste verranno rappresentate come altre due generalizzazioni totali. Nelle specifiche viene richiesto di tenere conto anche della lingua con cui un volume è stato scritto; non è possibile però inserire un attributo lingua in volume, perché, a causa della gerarchia, diventerebbe un attributo anche dell entità DIZIONARIO. Questa infatti dovrà averne due di attributi: Prima_lingua e Seconda_lingua, in modo da riportare entrambe le lingue della traduzione. L attributo Seconda_lingua avrà cardinalità (0, 1), perchè può assumere il valore NULL nel caso in cui il volume è, ad esempio, un dizionario dei sinonimi. L attributo lingua sarà necessario a questo punto nelle entità LIBRO e ALTRO. Possiamo notare dalle specifiche che i libri di narrativa sono associati ad un genere, mentre quelli di saggistica e gli altri manuali sono associati ad una materia. Per questo motivo provvediamo ad inserire l entità GENERE e di conseguenza l associazione INCLUSO che andrà a collegare l entità creata con l entità NARRATIVA. La stessa cosa la facciamo per le entità SAGGISTICA ed ALTRO che colleghiamo ad un entità MATERIA tramite, rispettivamente, le relazioni ABBINATO e ASSOCIATO. Le cardinalità di relazione, che saranno le stesse per tutte e tre le associazioni, sono: dalla parte delle entità della generalizzazione, perché un certo volume sarà associato ad una, ed una sola materia/genere; dall altra parte, perché ad una materia/genere sono associati da 0 ad N volumi. CITA A CITAZIONI CITATO DA Lingua LIBRO MANUALE Lingua NARRATIVA SAGGISTICA DIZIONARIO ALTRO GENERE Prima_lingua Seconda_lingua (0, 1) INCLUSO ABBINATO MATERIA ASSOCIATO Di ogni volume devono essere considerate anche le copie. Questo è un concetto importante, infatti un utente non prende in prestito un volume, ma una copia di un certo volume, perciò, più che introdurre un attributo, inseriamo 6
7 una nuova entità COPIA che ha come attributo Codice_copia. Decidiamo quindi di creare una relazione chiamata RELATIVA, con l attributo Disponibilità, che lega le entità COPIA e. L attributo ci dice se una copia di un volume è disponibile, oppure è attualmente in mano ad un utente. Ci possono essere da una a più copie di un volume (cardinalità 1, N). Una copia, invece, sarà relativa a zero, uno, o più volumi (cardinalità 0, N). Procedendo sempre a macchia d olio, possiamo introdurre un entità AUTORE con attributi,, e Data_morte, dove i primi tre individuano univocamente un autore. L attributo Data_morte avrà una cardinalità (0, 1), questo perché può essere NULL nel caso in cui un autore è ancora in vita oppure è sconosciuta la data della sua morte. L entità creata sarà collegata all entità tramite l associazione SCRITTO. Le cardinalità della relazione sono: (1, N), perché un volume può essere scritto da uno o più autori (deve essere sempre conosciuto almeno un autore di un volume), e, perché nella base di dati possono comparire anche autori che non hanno scritto nessun testo. Procediamo ora con la creazione di un entità EDITORE, provvista degli attributi, che ne identifica univocamente le tuple, e Città_di_appartenenza, che avrà una cardinalità (0, 1) in quanto potrebbe essere anche sconosciuta. L entità EDITORE sarà collegata a dalla relazione PUBBLICAZIONE, che a sua volta è provvista dell attributo Anno_pubblicazione; la cardinalità di quest ultimo sarà (0, 1) per tenere conto anche di quei volumi più antichi per i quali è probabile che l anno di pubblicazione non si conosca. Un editore registrato nell archivio non necessariamente deve aver pubblicato almeno un volume, al contrario, per ogni volume deve essere presente nella base di dati la casa editrice che lo ha pubblicato. Le cardinalità saranno, quindi, quelle riportate nello schema seguente. AUTORE Data_morte (0, 1) COPIA Codice_copia SCRITTO Anno_pubblicazione (0, 1) (1, N) (1, N) RELATIVA Disponibilità EDITORE PUBBLICAZIONE CITA A CITAZIONI Città_di_appartenenza (0, 1) CITATO DA Lingua LIBRO MANUALE Lingua NARRATIVA SAGGISTICA DIZIONARIO ALTRO GENERE Prima_lingua Seconda_lingua (0, 1) INCLUSO ABBINATO MATERIA ASSOCIATO Analizzando le specifiche si può notare che mancano ancora due concetti da rappresentare: la collana, a cui può appartenere un volume, e la collocazione dei volumi nella biblioteca. 7
8 Per quanto riguarda il primo, possiamo introdurre un entità COLLANA, provvista di un attributo che sarà anche la chiave dell entità, ed una relazione APPARTENENZA tra l entità appena creata e l entità. L associazione dovrà inoltre possedere l attributo #Ordine_nella_collana, che occorre per specificare il numero che il volume possiede all interno della collana. Le cardinalità della relazione saranno: (1, N), perché ad ogni collana presente nel database apparterrà almeno un libro, e (0, 1), in quanto un volume potrebbe anche non appartenere a nessuna collana. L ultimo concetto lo rappresentiamo tramite l entità POSIZIONE, che sarà collegata all entità sfruttando la relazione COLLOCAZIONE. Ogni volume sarà collocato in una posizione univoca e, inversamente, in una posizione ci potrà stare un solo tipo di volume (con tutte le sue copie), perciò le cardinalità saranno entrambe. Ogni posizione è individuata dal numero della sezione, dal numero dello scaffale e dal codice del volume, perciò introduciamo nella relazione gli attributi #Sezione, #Scaffale e. L ultimo di questi è l attributo chiave dell entità, e quindi attributo esterno per l entità POSIZIONE. E possibile usare un attributo esterno perché la cardinalità è (1,1). L entità POSIZIONE è stata legata all entità e non a COPIA, perché nei requisiti è stato specificato che le copie sono poste una di fianco all altra, quindi basta solo il codice del volume per identificare una posizione al cui interno sono contenute tutte le sue copie. Lo schema parziale che si ottiene è il seguente: AUTORE Data_morte (0, 1) COPIA Codice_copia Disponibilità (0, 1) Città_di_appartenenza (1, N) (1, N) SCRITTO RELATIVA Anno_pubblicazione (0, 1) #Sezione #Scaffale EDITORE PUBBLICAZIONE COLLOCAZIONE POSIZIONE #Ordine_nella_collana APPARTENENZA (0, 1) CITA A (1, N) COLLANA CITAZIONI CITATO DA Lingua LIBRO MANUALE Lingua NARRATIVA SAGGISTICA DIZIONARIO ALTRO GENERE Prima_lingua Seconda_lingua (0, 1) INCLUSO ABBINATO MATERIA ASSOCIATO 2d. Integrazione di schemi 8
9 Integrando i due schemi parziali ci si accorge che l associazione PRESTITO, che era stata specificata come binaria nello schema scheletro, in realtà è una relazione ternaria tra COPIA, UTENTE e. Questo perché in un prestito un utente preleverà una certa copia di un determinato volume. La relazione dovrà inoltre possedere i seguenti attributi: Data_inizio, Data_riconsegna e #Avvisi (specifica, per ogni prestito, quanti avvisi vengono inviati all utente, avendo costui superato la durata massima del prestito). L attributo Data_riconsegna avrà cardinalità (0, 1) perché può essere NULL nel caso in cui il libro non sia stato ancora riconsegnato. Per quanto riguarda le cardinalità della relazione queste sono tutte : un utente può aver preso in prestito da 0 ad N copie di 0 o N volumi, di un volume possono essere prese in prestito da 0 ad N copie da 0 ad N utenti, ed infine, una copia può essere relativa a 0 o N volumi e prelevata da 0 ad N utenti. Lo schema concettuale finale è il seguente. 2e. Schema concettuale finale Data_morte (0, 1) #Tessera AUTORE Tessera_bloccata Multa Tot_Avvisi UTENTE Dati anagrafici Indirizzo Città Via SCRITTO (1, N) Data_riconsegna PRESTITO Data_inizio #Avvisi Numero_telefonico RELATIVA Disponibilità (1, N) Numero_civico CAP Codice_copia COPIA (0, 1) Città_di_appartenenza #Sezione #Scaffale Anno_pubblicazione (0, 1) EDITORE PUBBLICAZIONE COLLOCAZIONE POSIZIONE APPARTENENZA (1, N) #Ordine_nella_collana (0, 1) CITA A CITAZIONI CITATO DA COLLANA Lingua LIBRO MANUALE Lingua NARRATIVA SAGGISTICA DIZIONARIO ALTRO Prima_lingua Seconda_lingua (0, 1) ASSOCIATO GENERE INCLUSO ABBINATO MATERIA Possiamo notare nello schema che ci sono due attributi Lingua relativi alle entità ALTRO e LIBRO, che oltre ad avere lo stesso nome, indicano anche la stessa cosa. Per questo motivo si potrebbe pensare di aggiungere un entità LINGUA legata poi ad ALTRO e LIBRO tramite due associazioni. In realtà questo non è stato fatto, perché in un 9
10 secondo momento, nella fase di semplificazione, verranno prese in considerazione le generalizzazioni e, nel caso del collassamento dei figli nel padre (come è probabile che avvenga), i due attributi diventeranno un unico attributo risolvendo il problema. 2f. Dizionario dei dati Entità: entità Descrizione Attributi Identificatore Testo che si trova nella tabella (numerico a 6 cifre) (stringa a 80 caratteri) (numerico a 2 cifre) (numerico a 3 cifre) LIBRO Particolare categoria di volume Lingua (stringa a 15 caratteri) Nessuno, perché è un entità figlia MANUALE Particolare categoria di volume - Nessuno, perché è un entità figlia NARRATIVA Particolare categoria di libro - Nessuno, perché è un entità figlia SAGGISTICA Particolare categoria di libro - Nessuno, perché è un entità figlia DIZIONARIO Particolare categoria di manuale Prima_lingua (stringa a 15 caratteri) Nessuno, perché Seconda_lingua (stringa a 15 caratteri; è un entità figlia cardinalità 0, 1) ALTRO Particolare categoria di manuale Lingua (stringa a 15 caratteri) Nessuno, perché EDITORE AUTORE GENERE Soggetto che ha pubblicato un volume Soggetto che ha scritto un volume Es. giallo, horror, avventura, ecc. E associato ad ogni libro di narrativa MATERIA Es. informatica, chimica, meccanica, ecc. E associata ad ogni libro di saggistica e ad ogni manuale che non sia un dizionario COLLANA UTENTE Raccolta di volumi aventi tra loro una certa analogia Colui che prende in prestito dei volumi dalla biblioteca (stringa a 40 caratteri) Città_di_appartenenza (stringa a 30 caratteri; cardinalità 0, 1) (stringa a 15 caratteri) (stringa a 15 caratteri) (stringa a 10 caratteri) Data_morte (stringa a 10 caratteri; cardinalità 0, 1) (stringa a 15 caratteri) (stringa a 25 caratteri) (stringa a 30 caratteri) #Tessera (numerico a 6 cifre) Dati anagrafici: - (stringa a 15 caratteri) - (stringa a 15 caratteri) - (stringa a 10 caratteri) è un entità figlia, e #Tessera - Indirizzo: o Città (stringa a 30 caratteri) o Via (stringa a 30 caratteri) o Numero_civico (numerico a 4 cifre) 10
11 o CAP (numerico a 5 cifre) - Numero_telefonico (numerico a 10 cifre) Tessera_bloccata (booleano) Tot_avvisi (numerico a 2 cifre) Multa (booleano) POSIZIONE Locazione della biblioteca dove #Sezione (numerico a 3 cifre) si trova un certo volume #Scaffale (numerico a 5 cifre) COPIA Indica le copie di ogni volume Codice_copia (numerico a 2 cifre) Codice_copia Relazioni: relazione Descrizione Entità coinvolte Attributi PRESTITO Associa un utente ad una certa copia di un volume presa in prestito, UTENTE e COPIA Data_inizio (stringa a10 caratteri) Data_riconsegna (stringa a 10 caratteri; cardinalità 0, 1) #Avvisi (numerico a 2 cifre) RELATIVA Associa, ad ogni volume, tutte le sue COPIA e Disponibilità (booleano) copie COLLOCAZIONE Associa, ad un volume, una certa posizione della biblioteca, che sarà la stessa per tutte le sue copie CITAZIONI Associa un volume ad altri volumi da lui citati SCRITTO Associa un volume agli autori che lo hanno scritto PUBBLICAZIONE Associa un volume all editore che lo ha pubblicato APPARTENENZA Associa un volume alla collana a cui questo appartiene (sempre se il volume appartiene ad una collana) INCLUSO ABBINATO ASSOCIATO Associa ad un libro di narrativa un certo genere Associa ad un libro di saggistica una materia Associa, ad un manuale che non sia un dizionario, una certa materia e POSIZIONE - e AUTORE e EDITORE e COLLANA NARRATIVA e GENERE SAGGISTICA e MATERIA ALTRO e MATERIA - - Anno_pubblicazione (numerico a 4 cifre; cardinalità 0, 1) #Ordine_nella_collana (numerico a 4 cifre) Ristrutturazione dello schema concettuale 3a. Tavola delle operazioni 11
12 Operazione Tipo operazione Frequenza 1 I 5 volte al giorno 150 volte al mese 2 I 2 volte al giorno 60 volte al mese 3 I 2 volte alla settimana 8 volte al mese 4 I 120 volte al giorno 3600 volte al mese 5 I 20 volte al giorno 600 volte al mese 6 I 80 volte al giorno 2400 volte al mese 7 I 1 volta al mese 8 I 40 volte al giorno 1200 volte al mese 9 I 100 volte al giorno 3000 volte al mese 10 I 100 volte al giorno 3000 volte al mese 11 B 1 volta alla settimana 4 volte al mese 12 B 3 volte alla settimana 12 volte al mese 3b. Tavola dei volumi Concetto Tipo Volume E LIBRO E MANUALE E NARRATIVA E SAGGISTICA E DIZIONARIO E 1000 ALTRO E EDITORE E 200 AUTORE E GENERE E 25 MATERIA E 50 COLLANA E 480 UTENTE E POSIZIONE E COPIA E 15 PRESTITO R RELATIVA R COLLOCAZIONE R CITAZIONI R SCRITTO R PUBBLICAZIONE R APPARTENENZA R INCLUSO R ABBINATO R ASSOCIATO R c. Costo delle operazioni e schemi di navigazione Operazione 1: 12
13 #Tessera Tessera_bloccata Multa Tot_Avvisi Data_riconsegna UTENTE PRESTITO AVG = 15 Data_inizio #Avvisi Dati anagrafici Numero_telefonico Indirizzo Città Via Numero_civico CAP Codice_copia AVG = 5 COPIA Tavola degli accessi Operazione 1 Concetto Costrutto Accessi Tipo operazione UTENTE Entità 1 R Entità 15 R COPIA Entità 15 R Costo operazione 31 R Totale costo 31 * 150 (frequenza operazione) = 4650 Operazione 2: #Tessera Tessera_bloccata Multa Tot_Avvisi Data_riconsegna UTENTE AVG = 15 Data_inizio PRESTITO #Avvisi Dati anagrafici Numero_telefonico Indirizzo Città Via Numero_civico CAP Codice_copia AVG = 5 COPIA Tavola degli accessi Operazione 2 Concetto Costrutto Accessi Tipo operazione UTENTE Entità 1 R PRESTITO Relazione 15 R 13
14 Costo operazione 16 R Totale costo 16 * 60 (frequenza operazione) = 960 Operazione 3: Data_morte (0, 1) AUTORE AVG = SCRITTO (1, N) (0, 1) Città_di_appartenenza Anno_pubblicazione (0, 1) AVG = 2 AVG = 2 AVG = 8000 RELATIVA (1, N) Codice_copia Disponibilità COPIA 15 #Sezione #Scaffale EDITORE 200 AVG = 300 AVG = 1 PUBBLICAZIONE COLLOCAZIONE AVG = AVG = POSIZIONE APPARTENENZA (1, N) AVG = 25 #Ordine_nella_collana (0, 1) AVG = 0, CITA A AVG = 3 CITAZIONI AVG = 3 CITATO DA COLLANA 480 Lingua LIBRO MANUALE GENERE 25 NARRATIVA AVG = 1 AVG = 1000 INCLUSO SAGGISTICA Tavola degli accessi 14
15 Operazione 3 Concetto Costrutto Accessi Tipo operazione Entità 1 W LIBRO Entità 1 W COPIA Entità 2 L RELATIVA Relazione 2 W AUTORE Entità 2 W EDITORE Entità 1 W PUBBLICAZIONE Relazione 1 W POSIZIONE Entità 1 W CITAZIONI Relazione 3 W COLLANA Entità 1 L APPARTENENZA Relazione 1 W GENERE Entità 1 L INCLUSO Relazione 1 W Costo operazione 14 W + 4 R = 18 Totale costo 18 * 8 (frequenza operazione) = 144 Operazione 4: Data_morte (0, 1) AUTORE AVG = 12 SCRITTO (1, N) AVG = 2 #Sezione #Scaffale (0, 1) Città_di_appartenenza Anno_pubblicazione (0, 1) AVG = 1 AVG = 1 COLLOCAZIONE POSIZIONE PUBBLICAZIONE AVG = EDITORE AVG = Lingua LIBRO MANUALE Tavola degli accessi Operazione 4 Concetto Costrutto Accessi Tipo operazione Entità 1 R LIBRO Entità 1 R AUTORE Entità 2 R 15
16 EDITORE Entità 1 R POSIZIONE Entità 1 R Costo operazione 6 R Totale costo 6 * 3600 (frequenza operazione) = Operazione 5: AUTORE Data_morte (0, 1) AVG = 12 SCRITTO (1, N) AVG = 2 AVG = 3 CITA A AVG = 3 CITAZIONI CITATO DA Tavola degli accessi Operazione 5 Concetto Costrutto Accessi Tipo operazione Entità 1 R CITAZIONI Relazione 3 R AUTORE Entità 2 * 3 = 6 R Costo operazione 10 R Totale costo 10 * 600 (frequenza operazione) = 6000 Operazione 6: Data_morte (0, 1) AUTORE AVG = 12 (0, 1) Città_di_appartenenza SCRITTO (1, N) AVG = 2 Anno_pubblicazione (0, 1) PUBBLICAZIONE AVG = EDITORE AVG = 1 Tavola degli accessi Operazione 6 16
17 Concetto Costrutto Accessi Tipo operazione AUTORE Entità 1 R Entità 12 R PUBBLICAZIONE Relazione 1 * 12 = 12 R EDITORE Entità 1 * 12 = 12 R Costo operazione 37 R Totale costo 37 * 2400 (frequenza operazione) = Operazione 7: Prima di procedere alla cancellazione, si dovrà verificare se nell associazione SCRITTO esiste almeno una tupla in cui compare quell autore. Data_morte (0, 1) AUTORE AVG = 12 SCRITTO (1, N) AVG = Tavola degli accessi Operazione 7 Concetto Costrutto Accessi Tipo operazione AUTORE Entità 1 R SCRITTO Relazione 12 R AUTORE Entità 1 W Costo operazione 13 R + 1W = 14 Totale costo 14 * 1 (frequenza operazione) = 14 Operazione 8: 17
18 60000 Lingua LIBRO MANUALE GENERE 25 NARRATIVA AVG = 1 AVG = 1000 INCLUSO SAGGISTICA Tavola degli accessi Operazione 8 Concetto Costrutto Accessi Tipo operazione GENERE Entità 1 R Entità 1000 R Costo operazione 1001 R 1000 Totale costo 1000 * 1200 (frequenza operazione) = Operazione 9: In realtà questa operazione è composta da due fasi (o sotto-operazioni). Nella prima fase si visualizzano tutte le copie di un volume, specificando per ognuna se è disponibile per il prestito e si verifica se la tessera dell utente è attiva o bloccata. Nella seconda fase, che verrà eseguita solo se la tessera è attiva ed è presente almeno una copia di quel volume, verrà registrato il prestito. #Tessera Tessera_bloccata Multa Tot_Avvisi Data_riconsegna UTENTE PRESTITO Dati anagrafici (1, N) RELATIVA Tavola degli accessi Indirizzo AVG = 15 Data_inizio Numero_telefonico #Avvisi AVG = Disponibilità AVG = AVG = AVG = 8000 Città Via Numero_civico CAP Codice_copia COPIA 15 Prima fase Seconda fase Operazione 9 Concetto Costrutto Accessi Tipo operazione 18
19 Prima fase Entità 1 R RELATIVA Relazione 2 R COPIA Entità 2 R UTENTE Entità 1 R Costo prima fase 6 R Seconda fase Entità 1 R COPIA Entità 1 R UTENTE Entità 1 R PRESTITO Relazione 1 W Costo seconda fase 3 R + 1 W Costo operazione (entrambe le due fasi) 9 R + 1 W = 10 Totale costo 10 * 3000 (frequenza operazione) = Operazione 10: #Tessera Tessera_bloccata Multa Tot_Avvisi Data_riconsegna UTENTE PRESTITO AVG = AVG = 15 Data_inizio #Avvisi Dati anagrafici AVG = RELATIVA Numero_telefonico Disponibilità (1, N) AVG = Indirizzo AVG = 8000 Città Via Numero_civico CAP Codice_copia COPIA 15 Tavola degli accessi Operazione 10 Concetto Costrutto Accessi Tipo operazione Entità 1 R UTENTE Entità 1 R COPIA Entità 1 R PRESTITO Relazione 1 W RELATIVA Relazione 1 W Costo operazione 3 R + 2 W = 5 Totale costo 5 * 3000 (frequenza operazione) = Operazione 11: #Tessera 19
20 Tessera_bloccata Multa Tot_Avvisi Data_riconsegna UTENTE Dati anagrafici Indirizzo Numero_telefonico Data_inizio PRESTITO AVG = #Avvisi AVG = Disponibilità (1, N) AVG = 2 RELATIVA AVG = 8000 Città Via Numero_civico CAP Codice_copia COPIA 15 Considerando, ogni settimana, di avere in media 500 volumi in prestito, si ottiene: Tavola degli accessi Operazione 11 Concetto Costrutto Accessi Tipo operazione PRESTITO Relazione R Entità 500 R UTENTE Entità 500 R Costo operazione R Totale costo * 4 (frequenza operazione) = Operazione 12: #Tessera Tessera_bloccata Multa Tot_Avvisi UTENTE Dati anagrafici Indirizzo Città Via Numero_telefonico Numero_civico CAP Considerando, ogni settimana, di avere in media 2 utenti che hanno accumulato dieci o più avvisi, si ottiene: Tavola degli accessi Operazione 12 Concetto Costrutto Accessi Tipo operazione UTENTE Entità R UTENTE Entità 2 W Costo operazione R + 2 W Totale costo * 12 (frequenza operazione) = d. Analisi delle ridondanze Analizzando lo schema concettuale finale, due sono gli attributi ridondanti: Tot_avvisi (nell entità UTENTE) e Disponibilità (nell associazione RELATIVA). Il primo è ridondante in quanto nell associazione PRESTITO è presente l attributo #Avvisi che, per ogni prestito, ci dice quanti avvisi ha ricevuto quell utente per avere riconsegnato in ritardo quel volume. Il totale degli avvisi è 20
21 quindi facilmente ottenibile analizzando tutti i prestiti di un utente e sommando via via il valore memorizzato nello attributo #Avvisi. Il secondo, invece, ci indica se una certa copia di un volume è, oppure no, disponibile. Senza l attributo sarebbe ugualmente possibile avere questa informazione, basterà infatti analizzare l associazione PRESTITO per vedere se la copia del volume cercata è attualmente in mano ad un utente (se esiste almeno una tupla di PRESTITO dove compare quella copia, quel volume e l attributo Data_riconsegna è uguale a NULL) oppure è presente in biblioteca (tutte le tuple di prestito relative a quella copia ed a quel volume hanno la Data_riconsegna diversa da NULL). Analisi dell attributo Tot_avvisi: L attributo viene usato nell operazione 12, quindi guardiamo in quale caso, con o senza attributo, questa ha il costo minore. con l attributo: Lo schema di navigazione e la tavola degli accessi sono gli stessi della pagina 21. La stessa cosa vale per il costo dell operazione che è senza l attributo: Tessera_bloccata Multa Data_riconsegna #Tessera UTENTE PRESTITO AVG = 15 Data_inizio #Avvisi Dati anagrafici Indirizzo Numero_telefonico Città Via Numero_civico CAP Codice_copia COPIA Tavola degli accessi Operazione 12 Concetto Costrutto Accessi Tipo operazione UTENTE Entità R PRESTITO Relazione * 15 = R UTENTE Entità 2 W Costo operazione R + 2 W Totale costo * 12 (frequenza operazione) = Guardando i costi in entrambi i casi, risulta che è conveniente tenere l attributo Tot_avvisi, perché ci risparmia quasi letture. Questa soluzione, però, comporterà un aumento dell occupazione di memoria. Tenendo conto che ci basta memorizzare fino a 10 avvisi, l attributo potrà essere codificato con 4 bit; lo spazio in più che viene richiesto è pari a: (numero di tuple di UTENTE) * 4 bit = bit = 10kB Prezzo che si paga volentieri per risparmiare tutte quelle letture. 21
22 Analisi dell attributo Disponibilità: L attributo viene usato nell operazione 9, o meglio nella prima fase di questa operazione. Procediamo, quindi, a verificare in quale caso, con o senza attributo, questa ha il costo minore. con l attributo: Lo schema di navigazione e la tavola degli accessi sono gli stessi della pagina 19. La stessa cosa vale per il costo della prima fase dell operazione che è 6. senza l attributo: Tessera_bloccata Multa Tot_Avvisi Data_riconsegna #Tessera UTENTE PRESTITO AVG = 15 Data_inizio #Avvisi Dati anagrafici AVG = Numero_telefonico Indirizzo Città Via Numero_civico CAP Codice_copia AVG = (1, N) RELATIVA AVG = AVG = 8000 COPIA 15 Prima fase Tavola degli accessi Operazione 9 Concetto Costrutto Accessi Tipo operazione Prima fase Entità 1 R COPIA Entità 2 R UTENTE Entità 1 R PRESTITO Relazione 2 R Costo prima fase 6 R Se guardiamo al numero degli accessi, avere oppure no l attributo è insignificante. Se guardiamo all occupazione di area che introduce: (tuple della relazione RELATIVA) * 1 bit (1 = disponibile e 0 = non disponibile) = bit = 15kB Lasciare l attributo non comporta vantaggi dal punto di vista degli accessi e inoltre occupa anche memoria, ma siccome l occupazione di memoria è minima e la presenza dell attributo ci semplificherà la traduzione in query mysql dell operazione 9, decidiamo di lasciarlo. 3e. Eliminazione delle gerarchie Ci sono più metodi per eliminare le generalizzazioni. Tenendo conto che, ossia l entità padre, ha quattro attributi, e che quasi tutte le operazioni si riferiscono ad essa piuttosto che ai suoi figli, è sconveniente sia l eliminazione del padre, che l introduzione di relazioni tra il padre e i figli. Una soluzione migliore è quella di collassare le entità figlie, LIBRO e MANUALE, nell entità padre, aggiungendo in quest ultimo un attributo selettore chiamato Categoria che non sarà mai NULL perché la generalizzazione è totale. 22
23 Per quanto riguarda le altre due generalizzazioni, che ora passano all entità, anche queste saranno collassate nell entità, alla quale si dovrà aggiungere un altro attributo chiamato Sottocategoria che sarà anch esso sempre diverso da NULL, perché le generalizzazioni sono totali. Si può notare che preleva dai figli attributi che hanno lo stesso significato, quindi tra gli attributi Lingua (di LIBRO), Lingua (di ALTRO), Prima_lingua e Seconda_lingua (di DIZIONARIO) lasciamo solo gli ultimi due (rinominando Prima_lingua in Lingua), perché inglobano anche i primi. La cardinalità di Lingua e di Seconda_lingua resteranno le stesse. Per quanto riguarda le associazioni che collegavano i figli alle entità GENERE e MATERIA, queste passeranno ora a, eliminando una relazione tra ABBINATO e ASSOCIATO, perché due sarebbero ridondanti. Lasciamo l associazione ASSOCIATO (che avrà un volume dei dati pari ad ASSOCIATO più ABBINATO), ma la cardinalità tra la relazione e l entità dovrà cambiare da a (0, 1), questo perché ad esempio un dizionario, o un libro di narrativa, non sono associati a nessuna materia. La stessa cosa vale per la relazione INCLUSO, la cui cardinalità passa ugualmente da a (0, 1). Dopo le ultime modifiche lo schema diventa: Data_morte (0, 1) #Tessera AUTORE Tessera_bloccata Multa Tot_Avvisi UTENTE Dati anagrafici Indirizzo Città Via SCRITTO (1, N) Data_riconsegna PRESTITO Data_inizio #Avvisi Numero_telefonico (1, N) RELATIVA Disponibilità Numero_civico CAP Codice_copia COPIA (0, 1) Città_di_appartenenza #Sezione #Scaffale Anno_pubblicazione (0, 1) EDITORE PUBBLICAZIONE COLLOCAZIONE POSIZIONE #Ordine_nella_collana CITA A APPARTENENZA (1, N) COLLANA (0, 1) Seconda_lingua (0, 1) Lingua CITATO DA Categoria Sottocategoria CITAZIONI GENERE INCLUSO 3f. Eliminazione degli attributi composti (0, 1) (0, 1) ASSOCIATO MATERIA Si presentano i seguenti attributi composti: #Tessera Tessera_bloccata Multa Tot_Avvisi UTENTE Dati anagrafici Indirizzo Città Via 23 Numero_telefonico Numero_civico
24 Per quanto riguarda l attributo composto Indirizzo, verrà privato di tutti i suoi attributi semplici e verrà trasformato esso stesso in un attributo semplice. Questo dovrà comunque inglobare tutte le altre informazioni eliminate. L attributo composto Dati anagrafici verrà invece collassato e tutti i suoi attributi passeranno direttamente all entità UTENTE. Si ottiene così: #Tessera Tessera_bloccata Multa Tot_Avvisi UTENTE Indirizzo Numero_telefonico 3g. Eliminazione degli identificatori esterni E presente il seguente identificatore esterno: #Sezione #Scaffale COLLOCAZIONE POSIZIONE Per eliminarlo basta aggiungere la chiave dell entità, ossia, nell entità posizione. Dopo questa modifica si ottiene: #Sezione #Scaffale COLLOCAZIONE POSIZIONE 3h. Scelta delle chiavi Le chiavi sono le stesse della tabella a pagina 11 e 12. Ma ci sono alcuni aspetti da chiarire per tre entità. UTENTE: Come chiavi candidate c erano il numero della tessera (#Tessera) e la chiave composta dai seguenti attributi:, e Data_Nascita. Si è scelta la prima perché è migliore una chiave semplice di una composta. : Come chiavi candidate c erano il codice del volume () e la chiave composta dai seguenti attributi:,, Autore ed Editore, dove gli ultimi due sono attributi esterni. Anche in questo caso, per lo stesso motivo precedente, la prima ipotesi è la migliore. AUTORE: Le specifiche non richiedevano in questo caso un particolare attributo codice, che identificasse univocamente gli elementi, quindi l unica chiave candidata è quella composta dagli attributi:, e. In realtà si può prendere in considerazione l inserimento di un attributo Codice_autore che identifichi univocamente un autore, in modo da ottenere una chiave semplice invece di una composta. Oltretutto questa soluzione, incrementerebbe si l occupazione 24
25 di area dell entità AUTORE, ma ridurrebbe quella dell associazione SCRITTO. Calcolando di aver bisogno di 40 byte per la chiave composta e 16 bit per il nuovo attributo (che ci bastano per memorizzare fino a circa autori): Occupazione di memoria senza Codice_autore SCRITTO (numero tuple) * 40 byte = 4,8MB Occupazione di memoria con Codice_autore SCRITTO (numero tuple) * 16 bit = 240kB AUTORE (numero tuple) * 16 bit = 20kB Guardando ai valori ottenuti si conclude che conviene inserire l attributo Codice_autore e verrà usato come chiave dell entità AUTORE. 4. Progettazione logica 4a. Traduzione di entità e associazioni in relazioni del modello relazionale Entità/Relazione Utente Volume Autore Scritto Copia Relativa Editore Prestito Posizione Collana Appartenenza Citazioni Genere Materia Incluso Associato Traduzione Utente (Tessera,,,, Indirizzo, Numero_telefonico, Tot_avvisi, Multa, Tessera_bloccata) Nota: E stato rinominato #Tessera in Tessera. Volume (,, Edizione, Editore, Anno_pubblicazione, Categoria, Sottocategoria, Lingua, Seconda_lingua, ) Nota: E stato rinominato in Edizione. Autore (Codice_autore,,,, Data_morte) Volume_Autore (Volume, Autore) Nota: Sono stati rinominati e Codice_autore in Volume e Autore. Inoltre la relazione non è stata chiamata Scritto ma Volume_Autore. Copia (Codice_copia) Volume_Copie (Volume, Copia, Disponibilità) Nota: Sono stati rinominati e Codice_copia in Volume e Copia. Inoltre la relazione non è stata chiamata Relativa ma Volume_Copie. Editore (, Città_di_appartenenza) Prestito (Volume, Copia, Utente, Data_inizio, Data_riconsegna, Avvisi) Nota: Sono stati rinominati, Codice_copia, #Tessera e #Avvisi in Volume, Copia, Utente e Avvisi. Per identificare un prestito non basterà solo Volume, Copia e Utente, ma anche Data_inizio, perché lo stesso utente potrebbe aver affittato la stessa copia dello stesso volume per più volte. Posizione (, Sezione, Scaffale) Nota: Sono stati rinominati #Sezione e #Scaffale in Sezione e Scaffale. Collana () Volume_Collana (Volume, Collana, Ordine_nella_collana) Nota: Sono stati rinominati (della relazione Collana), #Ordine_nella_collana e in Collana, Ordine_nella_collana e Volume. Inoltre la relazione non è stata chiamata Appartenenza ma Volume_Collana. Citazioni (Volume, Volume_citato) Nota: Sono stati rinominati i due in Volume e Volume_citato. Genere () Materia () Volume_Genere (Volume, Genere) Nota: Sono stati rinominati e (della relazione Genere) in Volume e Genere. Inoltre la relazione non è stata chiamata Incluso ma Volume_Genere. Volume_Materia (Volume, Materia) Nota: Sono stati rinominati e (della relazione Materia) in Volume e 25
26 Materia. Inoltre la relazione non è stata chiamata Associato ma Volume_Materia. 4b. Normalizzazione Le relazioni Volume, Autore, Volume_Copie, Editore, Prestito, Posizione, Volume_Collana, Volume_Genere, e Volume_Materia sono in forma normale di Boyce e Codd, perché le uniche dipendenze funzionali sono o quelle banali o dipendenze tra un qualunque attributo non primo e la chiave. Le relazioni Volume_Autore, Copia, Collana, Citazioni, Genere e Materia hanno solo attributi primi, quindi le uniche dipendenze funzionali sono quelle banali e pertanto anche queste relazioni sono in forma normale di Boyce e Codd. L unica relazione che non è in forma di Boyce e Codd è Utente, perché è presente una dipendenza funzionale tra Indirizzo e Numero_telefonico: Numero_telefonico -> Indirizzo, e il primo non fa parte di una chiave. La soluzione sarà di decomporre la relazione Utente in due relazioni, la prima identica ad Utente senza il numero di telefono e la seconda del tipo: Rubrica (Utente, Numero_telefonico) dove è stato rinominato l attributo Tessera in Utente. Tutte le relazioni ora sono in BCNF e non presenteranno anomalie in fase di inserimento, modifica e cancellazione. 4c. Vincoli di integrità referenziale Attributo Editore (relazione Volume) Volume (relazione Volume_Autore) Autore (relazione Volume_Autore) Volume (relazione Volume_Copie) Copia (relazione Volume_Copie) Volume (relazione Prestito) Copia (relazione Prestito) Utente (relazione Prestito) (relazione Posizione) Collana (relazione Volume_Collana) Volume (relazione Collana) Volume (relazione Citazioni) Volume_citato (relazione Citazioni) Volume (relazione Volume_Genere) Genere (relazione Volume_Genere) Volume (relazione Volume_Materia) Materia (relazione Volume_Genere) Vincolato a (relazione Editore) (relazione Volume) Codice_autore (relazione Autore) Codice_Volume (relazione Volume) Codice_copia (relazione Copia) (relazione Volume) Codice_copia (relazione Copia) Tessera (relazione Utente) (relazione Volume) (relazione Collana) (relazione Volume) (relazione Volume) (relazione Volume) (relazione Volume) (relazione Genere) (relazione Volume) (relazione Materia) 4d. MySQL: definizione dello schema Si dovranno definire le tabelle in modo da consentire la cancellazione dei volumi, ed in tal caso si dovrà cancellare ogni riferimento a quel volume. Non importerà se si perdono le informazioni sui prestiti che lo riguardano, perché, non facendo più parte della biblioteca, non interessa più la sua storia. create database Biblioteca; create table Utente ( Tessera numeric(6) primary key, char varying(15) not null, char varying(15) not null, date not null, Indirizzo char varying(70) not null, Tot_avvisi numeric(2) not null default 0, Multa enum ( 0, 1 ) not null default 0, 26
27 Tessera_bloccata enum ( 0, 1 ) not null default 0, unique (,, ) )type = InnoDB; create table Rubrica ( Utente numeric(6) primary key, Numero_telefonico numeric(12) not null, index Ut_index (Utente), foreign key (Utente) references Utente(Tessera) on delete cascade on update cascade )type = InnoDB; create table Autore ( Codice_autore numeric(6) primary key, char varying(15) not null, char varying(15) not null, date not null, Data_morte date not null )type = InnoDB; create table Editore ( char varying(40) primary key, Città_di_appartenenza char varying(30) default null )type = InnoDB; create table Volume ( numeric(6) primary key, char varying(80) not null, Edizione numeric(2) not null, Editore char varyng(40) not null, Anno_pubblicazione numeric(4), Categoria enum ( Libro, Manuale ) not null, Sottocategoria enum ( Narrativa, Saggistica, Dizionario, Altro ) not null, Lingua char varying(15) not null, Seconda_lingua char varying(15), numeric(3) not null default 40, index Ed_index (Editore), foreign key (Editore) references Editore() on delete no action on update cascade )type = InnoDB; create table Volume_Autore ( Volume numeric(6) not null, Autore numeric(6) not null, primary key (Volume, Autore), index Vol_index (Volume), index Aut_index (Autore), foreign key (Volume) references Volume () on delete cascade on update cascade, foreign key (Autore) references Autore (Codice_autore) on delete no action on update cascade )type = InnoDB; create table Copia ( 27
28 Codice_copia numeric(2) primary key )type = InnoDB; create table Volume_Copie ( Volume numeric(6) not null, Copia numeric(2) not null, Disponibilita enum ( 0, 1 ) not null default 1, primary key (Volume, Copia), index Vol_index (Volume), index Copia_index (Copia), foreign key (Volume) references Volume () on delete cascade on update cascade, foreign key (Copia) references Copia (Codice_copia) on delete cascade on update cascade )type = InnoDB; create table Prestito ( Volume numeric(6) not null, Copia numeric(2) not null, Utente numeric(6) not null, Data_inizio date not null, Data_riconsegna date default null, Avvisi numeric(2) not null default 0, primary key (Volume, Copia, Utente, Data_inizio), index Vol_index (Volume), index Copia_index (Copia), index Utente_index (Utente), foreign key (Volume) references Volume () on delete cascade on update cascade, foreign key (Copia) references Copia (Codice_copia) on delete cascade on update cascade, foreign key (Utente) references Utente (Tessera) on delete no action on update cascade )type = InnoDB; create table Posizione ( Volume numeric(6) primary key, Sezione numeric(3) not null, Scaffale numeric(5) not null, index Vol_index (Volume), foreign key (Volume) references Volume () on delete cascade on update cascade )type = InnoDB; create table Collana ( char varying(30) primary key, )type = InnoDB; create table Volume_Collana ( Collana char varying(30) not null, Volume numeric(6) not null, Ordine_nella_Collana numeric(4) not null, 28
29 primary key (Collana, Volume), index Vol_index (Volume), index Col_index (Collana), foreign key (Volume) references Volume () on delete cascade on update cascade, foreign key (Collana) references Collana () on delete no action on update cascade )type = InnoDB; create table Citazioni ( Volume numeric(6) not null, Volume_citato numeric(6) not null, primary key (Volume, Volume_citato), index Vol_index (Volume), index Citato_index (Volume_citato), foreign key (Volume) references Volume () on delete cascade on update cascade, foreign key (Volume_citato) references Volume () on delete cascade on update cascade )type = InnoDB; create table Genere ( char varying(15) primary key )type = InnoDB; create table Materia ( char varying(25) primary key )type = InnoDB; create table Volume_Genere ( Genere char varying(15) not null, Volume numeric(6) not null, primary key (Genere, Volume), index Vol_index (Volume), index Gen_index (Genere), foreign key (Volume) references Volume () on delete cascade on update cascade, foreign key (Genere) references Genere () on delete no action on update cascade )type = InnoDB; create table Volume_Materia ( Materia char varying(25) not null, Volume numeric(6) not null, primary key (Materia, Volume), index Vol_index (Volume), index Mat_index (Materia), foreign key (Volume) references Volume () on delete cascade on update cascade, foreign key (Materia) references Materia () 29
30 )type = InnoDB; on delete no action on update cascade Una volta create le tabelle potranno essere riempite una ad una con l istruzione: LOAD DATA LOCAL INFILE <nome_file> INTO TABLE <nome_tabella>; dove <nome_file> dovrà essere il nome del file che contiene le tuple da inserire in quella tabella, scritte una per riga e con gli attributi separati dal carattere TAB. Gli attributi dovranno rispettare il formato della tabella. Un valore null si esprime con \N. 4e. MySQL: query 1- Ricerca di tutti i volumi attualmente in possesso di un utente, restituendo il codice del volume, il codice della copia e il titolo. SELECT, FROM Volume, Prestito WHERE Utente = <numero_tessera> AND Codice_Volume = Volume AND Data_riconsegna IS NULL; 2- Verifica del numero di volumi riconsegnati in ritardo da un utente. Un volume in prestito è stato riconsegnato in ritardo se ha almeno un avviso: SELECT COUNT(*) AS Num_Volumi_in_Prestito FROM Prestito WHERE Utente = <numero_tessera> AND Avvisi > 0; 3- Inserimento di un nuovo libro di narrativa con autori ed editore che non sono presenti nella base di dati, associato ad un genere ed a una collana già presenti nell archivio); Supponiamo di inserire un solo autore e un solo libro citato. Siccome l operazione è composta da diverse sotto-operazioni quali l inserimento di un editore e di un autore, ricorriamo alle transazioni per renderle un'unica operazione atomica: BEGIN; INSERT INTO Autore VALUES ( <codice_autore>, <nome>, <cognome>, DATE <data_di_nascita>, DATE <data_della_morte> ); INSERT INTO Editore VALUES ( <nome>, <città_di_appartenenza> ); INSERT INTO Volume VALUES (<codice_volume>, <titolo>, <numero_edizione>, <nome_editore>, <anno_di_pubblicazione>, Libro, Narrativa, <lingua>, NULL, <durata_max_del_prestito>); INSERT INTO Posizione VALUES (<codice_volume>, <numero_sezione>, <numero_scaffale>); INSERT INTO Volume_Copie VALUES (<codice_volume>, <codice_copia>); INSERT INTO Volume_Autore VALUES (<codice_volume>, <codice_autore>); INSERT INTO Volume_Collana VALUES (<codice_volume>, <nome_della_collana>, <numero_d ordine_del_volume_nella_collana>); INSERT INTO Volume_Genere VALUES (<codice_volume>, <nome_del_genere> ); INSERT INTO Citazioni VALUES (<codice_volume>, <codice_del_volume_citato>); COMMIT; 4- Trova la collocazione di un volume catalogato come libro, partendo dal codice del volume e visualizzando, oltre alla posizione, il titolo, la lingua, l edizione, l editore e il nome e cognome dell autore. SELECT, Sezione, Scaffale,, Edizione, Lingua, Editore, Autore., Autore. FROM Volume, Posizione, Autore, Volume_Autore WHERE = <codice_volume> AND Volume_Autore.Volume = AND Codice_autore = Volume_Autore.Autore AND Posizione.Volume = ; 30
31 5- Ricerca tutti i volumi citati da un altro volume restituendone il titolo, l edizione e il nome e cognome dell autore. SELECT,, Edizione,, FROM Citazioni, Volume, Autore, Volume_Autore WHERE Citazioni.Volume = <codice_volume> AND = Volume_citato AND Volume_Autore.Volume = AND Autore.codice_autore = Volume_Autore.Autore; 6- Ricerca tutti i volumi scritti da un autore visualizzando il codice del volume, il titolo, l edizione, l editore e l anno di pubblicazione. SELECT,, Edizione, Editore, Anno_pubblicazione FROM Volume, Autore, Volume_Autore WHERE Codice_autore = <codice_dell autore> AND Autore = Codice_autore AND = Volume; 7- Cancellazione di un autore che non si riferisce a nessun volume. Possiamo andare a cancellare direttamente l autore senza verificare se questo sia associato ad un volume, perché nel caso in cui lo fosse, avendo settato on delete no action nella tabella Volume_Autore, l operazione non verrebbe eseguita. DELETE FROM Autore WHERE Codice_Autore = <codice_autore>; 8- Ricerca di tutti i volumi appartenenti a un genere (solo per libri di narrativa). SELECT Volume.* FROM Volume, Volume_Genere WHERE Genere = <nome_genere> AND = Volume; 9- Registrazione di un nuovo prestito (si dovrà prima vedere se c è almeno una copia disponibile del volume e se la tessera non è bloccata); Questa operazione dovrà essere effettuata in due passi. Per prima cosa si verificherà la presenza di copie del volume e se la tessera dell utente è bloccata, poi, se ci sono copie disponibili e la tessera è valida, si potrà eseguire il secondo passo. Quest ultimo prevede la registrazione del prestito e l aggiornamento dell indisponibilità della copia, operazioni rese atomiche tramite le transazioni. Passo1: BEGIN; SELECT Copia FROM Volume_Copie WHERE Volume = <codice_volume> AND Disponibilita = 1 ; SELECT Tessera, Tessera_bloccata FROM Utente WHERE Tessera = <numero_della_tessera>; COMMIT; Passo2: BEGIN; INSERT INTO Prestito VALUES (<codice_volume>, <codice_copia>, <numero_tessera>, Current_Date, NULL, 0); UPDATE Volume_Copie SET Disponibilita = 0 WHERE Volume = <codice_volume> AND Copia = <codice_copia>; COMMIT; 10- Registrazione dell avvenuta riconsegna di un volume (fine del prestito). UPDATE Prestito SET Data_riconsegna = Current_Date WHERE Volume = <codice_volume> AND Copia = <codice_copia> AND Data_riconsegna IS NULL; 11- Ricerca di tutte le copie di tutti i volumi in prestito visualizzando oltre ai codici anche il titolo e l edizione. SELECT Codice_Volume, Copia,, Edizione FROM Volume, Prestito WHERE Data_riconsegna IS NULL AND 31
32 = Volume; 12- Invio multa e blocco della tessera per tutti gli utenti che hanno raggiunto dieci o più avvisi. UPDATE Utente SET Multa = '1', Tessera_bloccata = '1' WHERE Tot_avvisi >= 10; 5. Progettazione fisica Analizziamo, ora, dal punto di vista fisico, qual è la scelta migliore dell accesso al file. Mettiamo a confronto un accesso fisico di tipo sequenziale, ed un accesso tramite indice, per vedere se conviene utilizzare quest ultimo per migliorare le prestazioni. La verifica verrà effettuata sull operazione 8 che, assieme all operazione 11, è quella con un costo maggiore (vedi pagina 19). La query in mysql è la seguente: SELECT Volume.* FROM Volume Volume_Genere WHERE Genere = <nome_genere> AND = Volume; Supponiamo di avere pagine di 1kB e: Volume: Numero tuple (NT) = Dimensione di una tupla 180 byte Numero di valori distinti di chiave (dell attributo ) (NK vol ) = Numero di pagine (NP) = (60000 * 180) / 1000 = (supponendo un utilizzo del 100% delle pagine) Volume_Genere: Numero tuple (NT) = Dimensione di una tupla 21 byte Numero di valori distinti di chiave (dell attributo Genere) (NK Gen ) = 25 Numero di pagine (NP) = (25000 * 21) / 1000 = 525 (supponendo un utilizzo del 100% delle pagine) Accesso sequenziale: Il costo di un accesso sequenziale sulla tabella Volume sarà: costo medio: (NP + 1) / 2 = ( ) / costo pessimo: NP = Il costo di un accesso sequenziale sulla tabella Volume_Genere sarà: costo medio: (NP + 1) / 2 = ( ) / 2 = 263 costo pessimo: NP = 525 Il costo della query (valutato nel caso pessimo) sarà: costo_query = costo accesso tabella Volume_Genere*accessi alla tabella Volume_Genere + + costo accesso tabella Volume*accessi alla tabella Volume = 525* * * 10 6 Accesso con indice: Supponiamo di costruire un indice primario e unclustered, organizzato come un B + -tree e costruito sull attributo (perché il costo più grande con l accesso sequenziale si ha in questo caso). Supponiamo inoltre che: 1 nodo = 1 blocco = 1 foglia = 1kB, lunghezza fisica del puntatore (len(p)) = 4 byte, lunghezza fisica di una chiave (len(k)) = 6 byte, utilizzazione media delle foglie (u) = 0,69. Si può calcolare il numero di chiavi in un nodo (l), che è pari a: 32
33 l = [DP len(p)] / (len(k) + len(p) = [1000 4] / (6 + 4) 100 dove: DP = dimensione di una pagina. Dovendo essere g l 2g, dove g è l ordine del B + -tree, si può supporre g = 50. Si può calcolare ora il numero di foglie (NL), che sarà uguale a: NL = [(len(p) + len(k)) * NR] / D * u = [(6 + 4) *60000] / 1000 * dove: NR = numero di record del file; D = dimensione di una foglia. Trovati g e NL si può calcolare l altezza h del B + -tree. Prendiamo quella minima perché abbiamo supposto che i nodi intermedi sono pieni (supponendo g = 50): h = h min = log 2g + 1 NL + 1 = log 2 * = 3 Il costo di ricerca con indice (C Ind ) sarà dato da: C Ind = costo di accesso all indice (C I ) + costo di accesso ai dati (C D ). Sappiamo che l operazione 8, in media, dovrebbe reperire 1000 valori distinti di chiave (EK = 1000) su un totale di NC = valori distinti. Quindi il costo di accesso all indice varrà: C I = h 1 + [(EK / NC) * NL] = [(1000 / 60000) * 870] = 14.5 Siccome l indice è unclustered, mi occorrerà la formula di Cardenas per calcolarmi il valore della componente C D : C D = EK * Φ(NR / NC, NP) = EK * NP * (1 (1 1 / NP) NR / NC ) = = 1000 * * (1 (1 1 / 10800) / ) = 1000 Quindi si ottiene: C Ind = C I + C D = = Il costo della query sarà: Costo_query = costo accesso tabella Volume_Genere*accessi alla tabella Volume_Genere + + costo accesso tabella Volume*accessi alla tabella Volume = 525* * * 10 6 Si conclude che, guardando al numero di accessi, è molto vantaggioso creare ed usare un indice sull attributo. Chiaramente la costruzione di un B + -tree comporterà un occupazione di memoria che sarà pari a: Mem_ind = (numero massimo di nodi + numero di foglie) * loro dimensione + dimensione radice questo perché la dimensione dei nodi e delle foglie è la stessa. Sapendo che il numero massimo di nodi è: N max = [(2g + 1) h 1] / 2g = [(2 * ) 3 1] / 2 * 50 = e trascurando la dimensione della radice si ottiene: Mem_ind = ( ) * ,2MB 6. Interfaccia con C Per quanto riguarda l interfaccia tramite un programma in C per il database Mysql, l abbiamo realizzata solo per alcune operazioni, ossia la: 1, 2, 7, 8, 9, 11. Il file sorgente del programma in C è il seguente: 33
Esercizio data base "Biblioteca"
Rocco Sergi Esercizio data base "Biblioteca" Database 2: Biblioteca Testo dell esercizio Si vuole realizzare una base dati per la gestione di una biblioteca. La base dati conterrà tutte le informazioni
Progettazione concettuale
Progettazione concettuale Strategie top-down A partire da uno schema che descrive le specifiche mediante pochi concetti molto astratti, si produce uno schema concettuale mediante raffinamenti successivi
SISTEMI INFORMATIVI AVANZATI -2010/2011 1. Introduzione
SISTEMI INFORMATIVI AVANZATI -2010/2011 1 Introduzione In queste dispense, dopo aver riportato una sintesi del concetto di Dipendenza Funzionale e di Normalizzazione estratti dal libro Progetto di Basi
Introduzione alla teoria dei database relazionali. Come progettare un database
Introduzione alla teoria dei database relazionali Come progettare un database La struttura delle relazioni Dopo la prima fase di individuazione concettuale delle entità e degli attributi è necessario passare
CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)
Ambiente Access La Guida di Access Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?) Guida in linea Guida rapida Assistente di Office indicazioni
Database 1 biblioteca universitaria. Testo del quesito
Database 1 biblioteca universitaria Testo del quesito Una biblioteca universitaria acquista testi didattici su indicazione dei professori e cura il prestito dei testi agli studenti. La biblioteca vuole
Progettazione di una base di dati Ufficio della Motorizzazione
Corso di Gestione dell Informazione Studenti NON frequentanti A.A. 2008/2009 1 Scopo del progetto Progettazione di una base di dati Ufficio della Motorizzazione Si vuole realizzare un applicazione base
Soluzione dell esercizio del 2 Febbraio 2004
Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo
INSERIMENTO DATI BASILARI
PASSO PASSO. Questo applicativo software nasce con l idea di essere molto semplice da usare. Di fatto lo è ed infatti non dispone di un help in linea all interno dello stesso. Tuttavia ci sentiamo in dovere
Organizzazione degli archivi
COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i
Informatica Industriale Modello funzionale: Informazione Progettazione concettuale
DIIGA - Università Politecnica delle Marche A.A. 2006/2007 Informatica Industriale Modello funzionale: Informazione Progettazione concettuale Luca Spalazzi [email protected] www.diiga.univpm.it/~spalazzi/
ARCHIVI E DATABASE (prof. Ivaldi Giuliano)
ARCHIVI E DATABASE (prof. Ivaldi Giuliano) Archivio: è un insieme di registrazioni (o records) ciascuna delle quali è costituita da un insieme prefissato di informazioni elementari dette attributi (o campi).
Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.
DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti
Basi di Dati corso C Esercitazione 18/12/2002 Autonoleggio tempo: 3 ore
Basi di Dati corso C Esercitazione 18/12/2002 Autonoleggio tempo: 3 ore Si vuole progettare una base di dati per conto di una società convenzionata con un aeroporto, che gestisce il noleggio di automobili
Laboratorio di Basi di Dati Esercizio 8.1
Laboratorio di Basi di Dati Esercizio 8.1 Pierluigi Pierini Technolabs S.p.a. [email protected] Università degli Studi di L Aquila Dipartimento di Informatica Technolabs S.p.A. R&D Department
Esercizio sui data base "Gestione conti correnti"
Database "Gestione conto correnti" Testo del quesito La banca XYZ vuole informatizzare le procedure di gestione dei conti correnti creando un archivio dei correntisti (Cognome, Nome, indirizzo, telefono,
I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:
Il modello relazionale I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due: 1. forniscono sistemi semplici ed efficienti per rappresentare
Basi di dati. (Sistemi Informativi) teoria e pratica con Microsoft Access. Basi di dati. Basi di dati. Basi di dati e DBMS DBMS DBMS
Basi di Basi di (Sistemi Informativi) Sono una delle applicazioni informatiche che hanno avuto il maggiore utilizzo in uffici, aziende, servizi (e oggi anche sul web) Avete già interagito (magari inconsapevolmente)
Gli attributi di STUDENTE saranno: Matricola (chiave primaria), Cognome, Nome.
Prof. Francesco Accarino Raccolta di esercizi modello ER Esercizio 1 Un università vuole raccogliere ed organizzare in un database le informazioni sui propri studenti in relazione ai corsi che essi frequentano
2.0 Gli archivi. 2.1 Inserire gli archivi. 2.2 Archivio Clienti, Fornitori, Materiali, Noleggi ed Altri Costi. Impresa Edile Guida all uso
2.0 Gli archivi All interno della sezione archivi sono inserite le anagrafiche. In pratica si stratta di tutti quei dati che ricorreranno costantemente all interno dei documenti. 2.1 Inserire gli archivi
MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE
1/6 MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE Per prima cosa si ringrazia per aver scelto ImmobiPhone e per aver dato fiducia al suo autore. Il presente documento istruisce l'utilizzatore sull'uso del programma
APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI
APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................
Il database management system Access
Il database management system Access Corso di autoistruzione http://www.manualipc.it/manuali/ corso/manuali.php? idcap=00&idman=17&size=12&sid= INTRODUZIONE Il concetto di base di dati, database o archivio
Basi di Dati. Progettazione del Modello ER. K. Donno - Progettazione del Modello ER
Basi di Dati Progettazione del Modello ER Dai requisiti allo schema ER Entità, relazioni e attributi non sono fatti assoluti dipendono dal contesto applicativo Nella pratica si fa spesso uso di una strategia
Capitolo 8. Esercizio 8.1
Capitolo 8 Esercizio 8.1 Si consideri lo schema Entità-Relazione ottenuto come soluzione dell esercizio 7.4. Fare delle ipotesi sul volume dei dati e sulle operazioni possibili su questi dati e, sulla
MANUALE UTENTE Fiscali Free
MANUALE UTENTE Fiscali Free Le informazioni contenute in questa pubblicazione sono soggette a modifiche da parte della ComputerNetRimini. Il software descritto in questa pubblicazione viene rilasciato
Università degli Studi di L Aquila. Facoltà di Ingegneria. Corso di Laurea in Ingegneria Elettronica Corso di Sistemi Informativi
Università degli Studi di L Aquila Facoltà di Ingegneria Corso di Laurea in Ingegneria Elettronica Corso di Sistemi Informativi Prof. Gaetanino Paolone Dott. Ottavio Pascale a.a.2003-2004 Progetto Campo
TEORIA sulle BASI DI DATI
TEORIA sulle BASI DI DATI A cura del Prof. Enea Ferri Cos è un DATA BASE E un insieme di archivi legati tra loro da relazioni. Vengono memorizzati su memorie di massa come un unico insieme, e possono essere
BASI DI DATI I. Progettazione di un DBMS per un negozio di materiale elettrico. Progetto realizzato da: Iero Demetrio Matricola: 106857
BASI DI DATI I Progettazione di un DBMS per un negozio di materiale elettrico Progetto realizzato da: Iero Demetrio Matricola: 106857 DESCRIZIONE DELLA REALTA' Si vuole realizzare un DBMS per la gestione
Volumi di riferimento
Simulazione seconda prova Esame di Stato Gestione di un centro agroalimentare all ingrosso Parte prima) Un nuovo centro agroalimentare all'ingrosso intende realizzare una base di dati per l'attività di
Progettazione di Database. Un Esempio
Progettazione di Database Un Esempio Data Base Management System Applicazione 1 Applicazione 2 Applicazione 3 DBMS A B C D E Il Modello Relazionale Una relazione è costituita su un insieme di domini, non
La Progettazione Concettuale
La Progettazione Concettuale Università degli Studi del Sannio Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica CorsodiBasidiDati Anno Accademico 2006/2007 docente: ing. Corrado Aaron Visaggio
Progetto di basi di dati Laboratorio di diagnosi mediche
Progetto di basi di dati aboratorio di diagnosi mediche Descrizione e specifiche Si vuole realizzare il progetto della base di dati di laboratorio di diagnosi medica, partendo da un insieme di requisiti.
4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0
Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice
Compito DA e BD. Tempo concesso: 90 minuti 12 giugno 03 Nome: Cognome: Matricola: Esercizio 1
Compito DA e BD. Tempo concesso: 90 minuti 12 giugno 03 Nome: Cognome: Matricola: Esercizio 1 Si considerino le seguenti specifiche relative alla realizzazione della base di dati di una facoltà e si definisca
Impresa di raccolta e riciclaggio di materiali metallici e di rifiuti.
Impresa di raccolta e riciclaggio di materiali metallici e di rifiuti. Indice Cognome Nome Matr.xxxxxx email Cognome Nome Mat. Yyyyyy email Argomento Pagina 1. Analisi dei requisiti 1 a. Requisiti espressi
Basi di Dati Relazionali
Corso di Laurea in Informatica Basi di Dati Relazionali a.a. 2009-2010 PROGETTAZIONE DI UNA BASE DI DATI Raccolta e Analisi dei requisiti Progettazione concettuale Schema concettuale Progettazione logica
I Sistemi Informativi
I Sistemi Informativi Definizione Un Sistema Informativo è un mezzo per acquisire, organizzare, correlare, elaborare e distribuire le informazioni che riguardano una realtà che si desidera descrivere e
Progettazione Logica. Progettazione Logica
Consorzio per la formazione e la ricerca in Ingegneria dell'informazione Tabelle per ogni concetto Docente: Cesare Colombo CEFRIEL [email protected] http://www.cefriel.it Passaggio al modello logico (1)
ING SW. Progetto di Ingegneria del Software. e-travel. Requisiti Utente. Specifiche Funzionali del Sistema
Pagina: 1 e-travel ING SW Progetto di Ingegneria del Software e-travel Requisiti Utente Specifiche Funzionali del Sistema e Pagina: 2 di 9 Indice dei contenuti 1 INTRODUZIONE... 3 1.1 SCOPO DEL DOCUMENTO...
Fasi di creazione di un programma
Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma
LINEE GUIDA PER L EROGAZIONE DELLA FORMAZIONE INTERNA
LINEE GUIDA PER L EROGAZIONE DELLA FORMAZIONE INTERNA Versione 01 25/10/2012 Indice PREMESSA... 2 1 ACCETTAZIONE CONDIZIONI GENERALI PER L EROGAZIONE DELLA FORMAZIONE INTERNA... 2 2 DEFINIZIONE MODULI
C A T A L O G O. Catalogo del Sistema Bibliotecario Padovano. Gruppo Lavoro per il Coordinamento dei Corsi all Utenza
C A T A L O G O Catalogo del Sistema Bibliotecario Padovano Gruppo Lavoro per il Coordinamento dei Corsi all Utenza Quando si usa un catalogo? Un catalogo permette di verificare se un documento, monografia
CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS
CONTENUTI: CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS Creazione database vuoto Creazione tabella Inserimento dati A) Creazione di un database vuoto Avviamo il programma Microsoft Access. Dal menu
5.2.1 RELAZIONI TRA TABELLE 1. 5.2.4.1 Creare una relazione uno-a-uno, uno-a-molti tra tabelle 9
5.2.1 RELAZIONI TRA TABELLE 1 5.2.4.1 Creare una relazione uno-a-uno, uno-a-molti tra tabelle 9 Il grado di un verso di un associazione indica quanti record della tabella di partenza si associano ad un
Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise
Manuale Amministratore Legalmail Enterprise Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Pagina 2 di 16 Manuale Amministratore Legalmail Enterprise Introduzione a Legalmail Enterprise...3
Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo
Logica Numerica Approfondimento E. Barbuto Minimo Comune Multiplo e Massimo Comun Divisore Il concetto di multiplo e di divisore Considerato un numero intero n, se esso viene moltiplicato per un numero
Lo schema concettuale risultante dalla progettazione concettuale è l input alla fase di progettazione logica.
Progettazione logica Lo schema concettuale risultante dalla progettazione concettuale è l input alla fase di progettazione logica. La progettazione logica è basata su un particolare modello logico dei
Basi di dati 9 febbraio 2010 Compito A
Basi di dati 9 febbraio 2010 Compito A Domanda 0 (5%) Leggere e rispettare le seguenti regole: Scrivere nome, cognome, matricola (se nota), corso di studio e lettera del compito (ad esempio, A) sui fogli
MANUALE PARCELLA FACILE PLUS INDICE
MANUALE PARCELLA FACILE PLUS INDICE Gestione Archivi 2 Configurazioni iniziali 3 Anagrafiche 4 Creazione prestazioni e distinta base 7 Documenti 9 Agenda lavori 12 Statistiche 13 GESTIONE ARCHIVI Nella
Fasi del progetto ( 1 )
Progetto 2004-2005 2005 Esercitazione delle lezioni 2, 3 e 4. 1 Fasi del progetto ( 1 ) Analisi dettagliata delle specifiche fornite dal committente. Questa fase è fondamentale per capire a fondo quali
Basi di Dati e Microsoft Access
Basi di Dati e Microsoft Access Lun: 16-18 e Mer: 14-17 Alessandro Padovani [email protected] Database: definizione Un database (DB) è una collezione di informazioni organizzata in gruppi, che consentono
Corso di Sistemi di Elaborazione delle Informazioni I Anno 2005/2006. Esercizi entità relazione risolti. a cura di Angela Campagnaro 802749
Corso di Sistemi di Elaborazione delle Informazioni I Anno 2005/2006 Esercizi entità relazione risolti a cura di Angela Campagnaro 802749 Indice: Esercizio 1: Un insieme di officine 1.1 Testo esercizio.3
Archivi e database. Prof. Michele Batocchi A.S. 2013/2014
Archivi e database Prof. Michele Batocchi A.S. 2013/2014 Introduzione L esigenza di archiviare (conservare documenti, immagini, ricordi, ecc.) è un attività senza tempo che è insita nell animo umano Primi
Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti
Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta
Airone Gestione Rifiuti Funzioni di Esportazione e Importazione
Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Funzioni di Esportazione Importazione 1 Indice AIRONE GESTIONE RIFIUTI... 1 FUNZIONI DI ESPORTAZIONE E IMPORTAZIONE... 1 INDICE...
Manuale d'uso. Manuale d'uso... 1. Primo utilizzo... 2. Generale... 2. Gestione conti... 3. Indici di fatturazione... 3. Aliquote...
Manuale d'uso Sommario Manuale d'uso... 1 Primo utilizzo... 2 Generale... 2 Gestione conti... 3 Indici di fatturazione... 3 Aliquote... 4 Categorie di prodotti... 5 Prodotti... 5 Clienti... 6 Fornitori...
Prova scritta del corso di Basi di dati attive 17 Dicembre 1999. Agenzia
Prova scritta del corso di Basi di dati attive 17 Dicembre 1999 Si desidera automatizzare la gestione dei banchetti organizzati da un agenzia di pubbliche relazioni. Le specifiche del sistema informativo,
Manuale Utente Albo Pretorio GA
Manuale Utente Albo Pretorio GA IDENTIFICATIVO DOCUMENTO MU_ALBOPRETORIO-GA_1.4 Versione 1.4 Data edizione 04.04.2013 1 TABELLA DELLE VERSIONI Versione Data Paragrafo Descrizione delle modifiche apportate
Sistema Informativo Ufficio Centrale Stupefacenti: manuale di gestione delle utenze di accesso (Provisioning)
Sistema Informativo : manuale di gestione delle utenze di accesso (Provisioning) Progettazione e Sviluppo del Nuovo Sistema Informativo Sanitario (NSIS) e del Sistema di Sicurezza Pag. 1 di 16 Indice Introduzione...3
Database. Si ringrazia Marco Bertini per le slides
Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida
5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record
5.3 TABELLE In un sistema di database relazionali le tabelle rappresentano la struttura di partenza, che resta poi fondamentale per tutte le fasi del lavoro di creazione e di gestione del database. 5.3.1
Guida all uso di Java Diagrammi ER
Guida all uso di Java Diagrammi ER Ver. 1.1 Alessandro Ballini 16/5/2004 Questa guida ha lo scopo di mostrare gli aspetti fondamentali dell utilizzo dell applicazione Java Diagrammi ER. Inizieremo con
Stefania Marrara - Esercitazioni di Tecnologie dei Sistemi Informativi. Integrazione di dati di sorgenti diverse
Politecnico di Milano View integration 1 Integrazione di dati di sorgenti diverse Al giorno d oggi d la mole di informazioni che viene gestita in molti contesti applicativi è enorme. In alcuni casi le
RECUPERO DATI LIFO DA ARCHIVI ESTERNI
RECUPERO DATI LIFO DA ARCHIVI ESTERNI È possibile importare i dati relativi ai LIFO di esercizi non gestiti con Arca2000? La risposta è Sì. Esistono tre strade per recuperare i dati LIFO per gli articoli
Mon Ami 3000 Conto Lavoro Gestione del C/Lavoro attivo e passivo
Prerequisiti Mon Ami 3000 Conto Lavoro Gestione del C/Lavoro attivo e passivo L opzione Conto lavoro è disponibile per le versioni Azienda Light e Azienda Pro. Introduzione L opzione Conto lavoro permette
Università degli studi di Urbino C.d.L : Informatica Applicata Anno Accademico : 2007/2008. .: FastResearch :. Gestionale per Negozio Informatico
Università degli studi di Urbino C.d.L : Informatica Applicata Anno Accademico : 2007/2008.: FastResearch :. Gestionale per Negozio Informatico..: Realizzato da Giorgio Rosolia Mat. 205993 :.. Corso: Basi
B+Trees. Introduzione
B+Trees Introduzione B+Trees Il B+Trees e la variante maggiormente utilizzata dei BTrees BTrees e B+trees fanno parte della famiglia degli alberi di ricerca. Nel B+Trees i dati sono memorizzati solo nelle
PROGRAMMA GESTIONE TURNI MANUALE UTENTE. Programma Gestione Turni Manuale Utente versione 1.1
PROGRAMMA GESTIONE TURNI MANUALE UTENTE INDICE 1 PREMESSA 3 2 COMANDI COMUNI 3 3 SEDI 3 4 FESTIVITÀ 4 5 PERIODI TURNI 4 6 COD. TURNI 6 7 TURNI SPORTIVI 9 8 COD. EQUIPAGGI 9 9 DISPONIBILITÀ 10 10 INDISPONIBILITÀ
2003.06.16 Il sistema C.R.M. / E.R.M.
2003.06.16 Il sistema C.R.M. / E.R.M. Customer / Enterprise : Resource Management of Informations I-SKIPPER è un sistema di CONOSCENZE che raccoglie ed integra INFORMAZIONI COMMERCIALI, dati su Clienti,
Breed 0.77. Novità della release. Sommario
Novità della release Sommario CLASSI VIRTUALI E PLURICLASSI... 1 COMPITI ED ARGOMENTI PER SINGOLO ALUNNO... 4 CAMBIO PASSWORD PER DOCENTE... 6 REGISTRO DEL SOSTEGNO... 11 UTENTE MASTER... 19 MENSA 2.0...
SITO DI PUBBLICAZIONE ANNUNCI
IL DOCUMENTO 1. Sito di pubblicazione annunci... 3 1.1 Home page... 3 1.2 Consultazione annuncio... 4 1.3 Inserisci annuncio... 6 1.4 Avvisami... 7 1.5 Ricarica... 8 1.6 Edicola... 8 1.7 Help... 9 1.8
Basi di dati. Esercizi sul modello E.R.
Basi di dati Esercizi sul modello E.R. Esercizio 1, testo (1) Si vuole modellare un sistema per la gestione di visite mediche da svolgersi in diversi ambulatori medici Ogni visita è svolta in uno ed un
Dipartimento per le Libertà Civili e l Immigrazione
Dipartimento per le Libertà Civili e l Immigrazione Sistema inoltro telematico Manuale utente Versione 10 Data aggiornamento: 14/09/2012 Pagina 1 (25) Sommario 1. Il sistema di inoltro telematico delle
Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati
Corso di Access Modulo L2A (Access) 1.1 Concetti di base 1 Prerequisiti Utilizzo elementare del computer Concetti fondamentali di basi di dati 2 1 Introduzione Un ambiente DBMS è un applicazione che consente
1- OBIETTIVI DEL DOCUMENTO 2- INTRODUZIONE
1- OBIETTIVI DEL DOCUMENTO... 1 2- INTRODUZIONE... 1 3- ACCESSO ALLA PROCEDURA... 2 4- COMPILAZIONE ON-LINE... 4 5- SCELTA DELLA REGIONE O PROVINCIA AUTONOMA... 5 6- DATI ANAGRAFICI... 6 7- DATI ANAGRAFICI
GUIDA ALLA COMPILAZIONE DEL PIANO DI STUDI ON-LINE
GUIDA ALLA COMPILAZIONE DEL PIANO DI STUDI ON-LINE Aggiornata al 25/11/2011 A cura del Servizio Help On-line Direzione Pianificazione, Valutazione e Formazione Sistema integrato per la gestione della didattica
Manuale. Gestione biblioteca scolastica by Rosset Pier Angelo is licensed under a Creative Commons
Manuale Gestione biblioteca scolastica by Rosset Pier Angelo is licensed under a Creative Commons Premessa Gestione Biblioteca scolastica è un software che permette di gestire in maniera sufficientemente
Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati
Basi di dati Il Modello Relazionale dei Dati Proposto da E. Codd nel 1970 per favorire l indipendenza dei dati Disponibile come modello logico in DBMS reali nel 1981 (non è facile realizzare l indipendenza
1) GESTIONE DELLE POSTAZIONI REMOTE
IMPORTAZIONE ESPORTAZIONE DATI VIA FTP Per FTP ( FILE TRANSFER PROTOCOL) si intende il protocollo di internet che permette di trasferire documenti di qualsiasi tipo tra siti differenti. Per l utilizzo
Composizione. Tipo. Pubblicità. Numero ripetizioni. (1,N) (1,1) Composizione. Tipo. Messaggio promozionale. Codice. Azienda. Prodotto.
Diagramma ER Giorno Ora fine Composizione Palinsesto Informazione Fiction Spettacolo Giornalista Restrizione Messaggio promozionale spazio Interruzione allocazione Azienda Posizione Pubblicità Prodotto
I TUTORI. I tutori vanno creati la prima volta seguendo esclusivamente le procedure sotto descritte.
I TUTORI Indice Del Manuale 1 - Introduzione al Manuale Operativo 2 - Area Tutore o Area Studente? 3 - Come creare tutti insieme i Tutori per ogni alunno? 3.1 - Come creare il secondo tutore per ogni alunno?
Interesse, sconto, ratei e risconti
TXT HTM PDF pdf P1 P2 P3 P4 293 Interesse, sconto, ratei e risconti Capitolo 129 129.1 Interesse semplice....................................................... 293 129.1.1 Esercizio per il calcolo dell
Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste
Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste versione 2.1 24/09/2015 aggiornamenti: 23-set-2015; 24-set-2015 Autore: Francesco Brunetta (http://www.francescobrunetta.it/)
CREAZIONE DI UN AZIENDA
CREAZIONE DI UN AZIENDA La creazione di un azienda in Businesspass avviene tramite la funzione Aziende Apertura azienda ; dalla medesima sarà possibile richiamare le aziende precedentemente create per
Gestione Voti Scolastici
Gestione Voti Scolastici Progettare un modello di dati per la gestione delle informazioni riguardanti le prove, nelle diverse materie, sostenute dagli studenti di una scuola media superiore. Il sistema
Gestore Comunicazioni Obbligatorie - VARDATORI - Progetto SINTESI Dominio Provinciale Modulo Applicativo:COB Procedura VARDATORI
Progetto SINTESI Dominio Provinciale Modulo Applicativo:COB Procedura VARDATORI 1 INDICE 1 INTRODUZIONE... 3 2 COMUNICAZIONI VARDATORI... 4 2.1 VARIAZIONE DELLA RAGIONE SOCIALE DEL DATORE DI LAVORO...
Gestione Risorse Umane Web
La gestione delle risorse umane Gestione Risorse Umane Web Generazione attestati di partecipazione ai corsi di formazione (Versione V03) Premessa... 2 Configurazione del sistema... 3 Estrattore dati...
Dipartimento per le Libertà Civili e l Immigrazione
Dipartimento per le Libertà Civili e l Immigrazione SUI Sportello Unico Immigrazione Sistema inoltro telematico Manuale utente Versione 9 Data aggiornamento 19/11/2010 17.19.00 Pagina 1 (1) Sommario 1.
Strutturazione logica dei dati: i file
Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer
Traccia di soluzione dell esercizio del 25/1/2005
Traccia di soluzione dell esercizio del 25/1/2005 1 Casi d uso I casi d uso sono in Figura 1. Ci sono solo due attori: il Capo officina e il generico Meccanico. Figura 1: Diagramma dei casi d uso. 2 Modello
ESEMPIO 1: eseguire il complemento a 10 di 765
COMPLEMENTO A 10 DI UN NUMERO DECIMALE Sia dato un numero N 10 in base 10 di n cifre. Il complemento a 10 di tale numero (N ) si ottiene sottraendo il numero stesso a 10 n. ESEMPIO 1: eseguire il complemento
SIDIP Sistema Informativo Dibattimentale Penale Modulo 415 bis
SIDIP Sistema Informativo Dibattimentale Penale Modulo 415 bis Presentazione introduttiva per avvocati Torino, 30 novembre 2012 Introduzione L applicativo SIDIP è un sistema informativo che supporta il
Il Modello Relazionale
Il Modello Relazionale Il modello relazionale 1 Il modello relazionale Proposto da E. F. Codd nel 1970 per favorire l indipendenza dei dati e reso disponibile come modello logico in DBMS reali nel 1981
Promemoria delle principali funzioni di Gestione utenti e prestiti in SOL
Promemoria delle principali funzioni di Gestione utenti e prestiti in SOL Come cambiare la propria password di lavoro Spazio personale> Dati personali> Cambio password Come cambiare la biblioteca di lavoro
Esercitazione di Basi di Dati
Esercitazione di Basi di Dati Corso di Fondamenti di Informatica 6 Maggio 2004 Come costruire una ontologia Marco Pennacchiotti [email protected] Tel. 0672597334 Ing.dell Informazione, stanza
Gestione Turni. Introduzione
Gestione Turni Introduzione La gestione dei turni di lavoro si rende necessaria quando, per garantire la continuità del servizio di una determinata struttura, è necessario che tutto il personale afferente
Regolamento di attribuzione del codice ISBN e di erogazione dei servizi dell Agenzia ISBN
Regolamento di attribuzione del codice ISBN e di erogazione dei servizi dell Agenzia ISBN Compilando l apposito form web di adesione il richiedente formula all Agenzia ISBN una proposta per l attribuzione
