Università degli Studi di Urbino

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Università degli Studi di Urbino"

Transcript

1 Università degli Studi di Urbino Facoltà Di Scienze Matematiche Fisiche e Naturali Informatica Applicata Corso di Basi Dati e Sistemi Informativi PROGETTO BIBLIOTECA UNIVERSITARIA Diego Alicata (Matricola ) Denny Bini (Matricola )

2 1. ANALISI DEI REQUISITI L università di Urbino ha deciso di realizzare un sistema informativo centralizzato per la consultazione di dati relativi ad i libri di tutte le biblioteche dell università. Ogni facoltà ha una biblioteca, in ogni biblioteca vi sono centinaia di libri. I libri sono riconosciuti tramite il codice ISBN, il titolo, l Editore, la lingua, l anno di pubblicazione e gli autori. Ogni biblioteca può avere più copie dello stesso libro. Della Casa Editrice registrata nel nostro archivio, vogliamo conoscere la denominazione e la città di appartenenza. Di ciascun autore vogliamo conservare i principali dati anagrafici (nome, cognome, data di nascita, luogo di nascita, Biografia). Per ogni libro è inoltre registrata la facoltà di appartenenza. Ogni studente, professore e bibliotecario può chiedere uno o più libri in prestito. Il sistema avverte a richiesta gli addetti alla biblioteca i quali sono gli studenti o professori che abbiamo ancora libri e che non li abbiano ancora restituiti. Gli studenti e i professori possono consultare i libri direttamente dal sito effettuando un login, avranno immediatamente accesso alla sezione di visione dei prestiti effettuati, mentre i biliotecari hanno accesso a tutte le altre sezioni: registrazioni, modifiche, effettuazione prestiti. Termini ambigui nei requisiti e correzioni possibili: Vediamo quali modifiche apportare al testo: v Alla riga 4 troviamo il termine Editore, per poi leggere alla riga cinque Casa Editrice. Questo sinonimo dato che fa riferimento allo stesso nome può essere sostituito con Editore. (omonimo in linea 5) v Alla riga 10 non si interpreta bene, la seguente frase: gli addetti alla biblioteca i quali sono gli studenti o professori che abbiamo ancora libri e che non li abbiano ancora restituiti.. Da questo breve testo non capiamo bene, chi effettua il prestito, certamente conoscendo il funzionamento di una biblioteca lo si potrebbe intuire, ma preferiamo trasformare questa frase, con Il sistema avverte (a richiesta) i bibliotecari su i prestiti scaduti (perché sono decorsi più di 60 giorni dal prestito) segnalando all utente che è decorso il termine di consegna di restituzione del libro. (più chiaro e preciso) v Alla riga 13 abbiamo che gli studenti e professori hanno un login, ma leggendo dal testo non abbiamo ben chiaro se i bibliotecari ne hanno anch essi uno. Il testo verrà ristrutturato come segue: gli utenti (professori, studenti, bibliotecari) hanno una password con la quale a seconda della tipologia d utente possono effettuare operazioni diverse. Gli studenti e i professori possono controllare i propri prestiti, mentre i bibliotecari hanno accesso a tutte le altre sezioni: registrazioni, modifiche, effettuazioni prestiti. (più chiaro e preciso).

3 Glossario con relativi collegamenti: TERMINE COLLEGAMENTI Autore Libro Editore Libro Facoltà Biblioteca Archivio Copia Libro - Archivio Prestito Archivio Utente Utente Prestito Password Utente Biblioteca - Ristrutturazione dopo il filtraggio delle ambiguità: Si vuole realizzare un sistema informativo centralizzato per la consultazione di dati relativi ad i libri di tutte le biblioteche dell università. Ogni facoltà ha una biblioteca, in ogni biblioteca vi sono centinaia di libri. Per i libri, identificati dal codisbn, rappresentiamo il titolo, l editore, la lingua, l anno di pubblicazione, gli autori, e le facoltà di appartenenza. Ogni biblioteca può avere più copie dello stesso libro. Per gli editori rappresentiamo la denominazione e la città di appartenenza. Per gli autori rappresentiamo il nome, cognome, data e luogo di nascita e una breve biografia. Per l archivio rappresentiamo il codice scaffale. Il sistema avverte (a richiesta) i bibliotecari su i prestiti scaduti (perché sono decorsi più di 60 giorni dal prestito) segnalando l utente che ha decorso il termine di consegna di restituzione del libro. Per gli utenti (professori, studenti, bibliotecari) vogliamo avere una password con la quale a seconda della tipologia d utente possono effettuare operazioni diverse. Gli studenti e i professori possono controllare i propri prestiti, mentre i bibliotecari hanno accesso a tutte le altre sezioni: registrazioni, modifiche, effettuazione prestiti.

4 2. PROGETTAZIONE CONCETTUALE Per la progettazione concettuale abbiamo scelto una strategia di tipo Top Down. Questa scelta ci ha permesso di descrivere inizialmente le specifiche dei dati trascurandone i dettagli per poi entrare nel merito un concetto alla volta. Il modello effettua una serie di trasformazioni che via via arricchiscono lo schema scheletro con associazioni e generalizzazioni fino al completamento finale che avviene tramite l inserimento di attributi semplici e composti. Di seguito l evoluzione a partire dallo schema scheletro: Schema scheletro: Lo schema scheletro è stato realizzato partendo dal glossario, ogni termine rilevante è rappresentato come entità, e ogni relazione esistente tra esse è stata opportunamente inserita. Lo schema è quindi il seguente:

5 Schema parziale 1: Abbiamo scomposto l entità Libro in associazioni, e poi abbiamo aggiunto ad essa attributi composti e semplici. Analizziamo il tipo di relazione che lega le varie associazioni. Ogni biblioteca è di una sola facoltà (1,1) e una facoltà ha una sola biblioteca (1,1) Una facoltà ha più archivi (1,n), ma ad un archivio corrisponde una sola facoltà (1,1). Un libro può avere più copie in diverse facoltà (1, n), ma un Archivio corrisponde un determinato numero di copie (1,1) Un autore può avere scritto più libri (1,n), e un libro può essere scritto da più autori (1,n) Nel soprastante schema avremmo potuto inserire l attributo NCopiePrestate (Archivio) per tenere traccia delle copie disponibili. Abbiamo però preferito non inserirlo in quanto la ricerca può essere effettuata anche senza il dato ridondante e come vedremo meglio nelle analisi delle ridondanze tale inserimento non sarebbe stato così vantaggioso. Il numero delle facoltà anche se piuttosto fisso non è stato espresso come generalizzazione in quanto all aumentare del tempo di utilizzo della Basi di Dati possono nascere nuove facoltà (così come possono diminuirne). Un buon sistema informativo deve essere in grado, per quanto possibile, di fronteggiare anche le esigenze future.

6 Schema parziale 2: Come mostrato in figura l utente è una generalizzazione di studente, bibliotecario e professore

7 Integrazioni di schemi: Integrando gli schemi otteniamo il seguente schema:

8 3. RISTRUTTURAZIONE DELLO SCHEMA CONCETTUALE ANALISI DEGLI INDICI PRESTAZIONALI Descrizione delle operazioni principali. OPERAZIONE Registrazione libro Ricerca disponibilità libro Registrazione di un prestito Registrazione restituzione libro Consultazione prestiti Visualizzazione a richiesta da parte di un bibliotecario dei prestiti scaduti RISERVATA A Bibliotecario Bibliotecario Studente Professore Bibliotecario Bibliotecario Bibliotecario Bibliotecario Volume dei dati previsto Analisi dei dati studenti 200 professori 11 facoltà titoli per ogni biblioteca (le copie presenti per ogni libro sono di un massimo di 5) = * 5 = * 11 (facoltà) = autori per ogni biblioteca 100 * 11 = editori per ogni biblioteca 50 * 11 = bibliotecari per ogni facoltà 5 * 11 = 55

9 Occupazione di memoria -1c sta per il carattere di terminazione = 1 Byte - c è un carattere = 1 Byte - I è un integer = 4 Bytes - D è la data = 10 Bytes CONCETTO TIPO VOLUME Occupazione Spazio occupato (massimo) Biblioteca E 11 20c + 1c (Località) 21*11= 231 Bytes Situata R 11 - Facoltà E 11 40c + 1c (Nome) Appartiene R Archivio E c + 1c (CodScaffale) + 1I (Ncopie) Copia R Libro E c (CodISBN) + 50c + 1c (Titolo) + 1I(Anno) + 20c + 1c (Lingua) Stampa R *11= 451 Bytes 15*55.000= 806 Kb 89*11000= 956 Kb Editore E c + 1c (Denominazione) + 20c + 1c (Città) Scritto R Autore E c + 1c (Nome) + 30c + 1c (Cognome) + 1D (DataNascita) + 20c + 1c (LuogoNascita) + 100c + 1c (Biografia) Riguarda R D (Restituito) Prestito E I (Codice) + 1D (Data) Effettua R Studente E c (Matricola) Professore E c (CF) Bibliotecario E 55 16c (CF) Utente G c + 1c (Nome) + 30c + 1c (Cognome) + 20c + 1c (Telefono) + 50c + 1c(Via) + 30c + 1c(Città) + 10c + 1c(Cap) + 30c + 1c(Stato) + 9c + 1c (Password) 62*550= 34 Kb 194*2200= 417 Kb 10*6000= 58 Bytes 11*6000= 65 Bytes 6*16000= 94 Kb 16*200= 3200 Bytes 16*55= 880 Bytes 217*16255= 3445 Kb

10 Tavola delle operazioni I = interattivo; B = Batch Operazioni Tipo Frequenza mensile Op. 1 Registrazione di un nuovo libro I 60 * 4 = 240 Op. 2 Ricerca disponibilità libro I 200 * 30 = 6000 Op. 3 Registrazione di un prestito I (1) 1089 * 30 = Op. 4 Restituzione di un libro I (1) 1089 * 30 = Op. 5 Consultazione prestiti I 100 * 30 = 3000 Op. 6 Visualizzazione dei prestiti scaduti. I 50 * 30 = 1500 (1) Analizzando un caso concreto di biblioteca abbiamo riscontrato che in 7 ore di attività (dalle 9.00 alle e dalle alle [fascia di accesso bassa]) il numero di utenti in 30 minuti non supera mediamente le 5 persone. Per un totale di 3 ore abbiamo un totale di 30 persone. Mentre per la fascia di accesso alta (dalle ore alle ore 15.00) abbiamo un totale di 168 persone, in quanto abbiamo 7 utenti ogni 10 minuti = 198 sono gli accessi giornalieri a una singola biblioteca. Moltiplicando il valore che ci siamo ricavati per il numero di biblioteche del nostro sistema abbiamo un totale di 2178 (198 * 11) accessi al giorno al sistema bibliotecario. Dato che in una biblioteca vengono effettuati prestiti e restituzioni, assumiamo che di 2178 accessi la metà siano prestiti e l altra metà restante Restituzioni (2178 / 2 = 1089) Calcolo accessi e costo operazioni S = scrittura [COSTO 2] L = lettura [COSTO 1] S/L = lettura e scrittura [COSTO 3] E = Entità R = Relazione Concetto Descrizione Costrutto Accessi Tipo Costo (mensile) OP.1 Registrazione di un nuovo libro Caso pessimo: L Autore e L Editore sono da catalogare Libro Registro nell entità libro i dati relativi a E 1 S Copia un nuovo libro. R 1 S Archivio Scrivo nella relazione Copia, scrivo E 1 S Appartiene nell entità Archivio, infine inserisco a R 1 S quale facoltà appartiene, registrando Scritti R Appartiene, senza passare per la lettura 1 S Autore di Facoltà ( in quanto la biblioteca che E 1 S/L Stampa da in prestito un libro gia conosce il R 1 S Editore codice, quindi non si rende necessario saperne il nome) E 1 S/L = * 240 = Nel Caso pessimo registro l Editore e l Autore. OP.2 Ricerca disponibilità Libro (Questo tipo di ricerca avviene al di fuori della registrazione di un prestito)

11 Archivio Vediamo se il libro è disponibile, ma in E 1 L Appartiene quale facoltà è registrato? R 1 L Facoltà E 1 L Per sapere quante copie ci sono Copia R 1 L disponibili leggo Libro, Copia, Libro Archivio, Riguarda, e prestiti. E 1 L Riguarda Ciò si rende necessario in quanto le R 1 L Prestito Copie disponibili sono ottenute E 1 L sottraendo alle copie registrate in Archivio le copie ancora in prestito = 7 7 * 6000 = OP. 3 Registrazione di un prestito Caso pessimo: L utente non è ancora stato catalogato Prestito Analizziamo il caso in cui l utente E 1 S Riguarda prende in prestito un libro gia R 1 S Effettua conoscendone il codscaffale, in quanto R 1 S Utente la ricerca del libro era avvenuta nella G 1 L/S precedente operazione (op. 2) Verranno coinvolte nella registrazione le relazioni Riguarda ed Effettua, e le entità Prestito e Utente (in quanto abbiamo considerato un caso pessimo) = 9 (9 + 7 [op.2]) * = OP. 4 Restituzione di un libro Archivio Per restituire un libro preso in prestito E 1 L Riguarda dobbiamo trovare il prestito effettuato R 1 S Prestito dall utente e con il relativo codscaffale. E 1 L Effettua Per poi memorizzare l attributo R 1 L Utente E 1 L OP. 5 Consultazione prestiti Utente Per consultare i prestiti relativi a un G 1 L Effettua utente, abbiano necessità di conoscere R 1 L Prestito tutti i prestiti che l utente ha effettuato. E 1 L Riguarda E visualizzare le copie prese in prestito. R 1 L Archivio E 1 L Copia R 1 L Libro E 1 L OP. 6 Visualizzazione dei prestiti scaduti Riguarda Se è decorso il tempo di restituzione del R 1 L Prestito libro il sistema effettua le seguenti E 1 L Effettua operazioni, legge i prestiti scaduti, cerca R 10 L Utente i relativi utenti ancora in possesso del G 1 L libro e ne visualizza i libri. Archivio E 1 L Copia R 1 L Libro E 1 L = 4 4 * = = 9 9 * 3000 = = 7 7 * 1500 =

12 RISTRUTTURAZIONE Analisi delle ridondanze Era nato il problema di mettere un attributo ridondante per snellire la Ricerca della disponibilità di un libro, in questa sede possiamo analizzare la convenienza nell inserirlo. Disponibilità libro Archivio L = 5 Appartiene L 5 * 6000 = Facoltà L Copia L Libro L Registrazione di un prestito (caso pessimo: effettuo la registrazione dell utente) Archivio S = 10 Riguarda S (10 + 7[op.2])* = Prestito S Effettua S Utente S Restituzione di un libro Archivio S = 7 Riguarda S 7 *42460 = Prestito L Effettua L Utente L Attributo Ridondante NcopiePrestate Operazione Costo con ridondanza Costo senza ridondanza op.2. Ricerca disponibilità Libro op.3. Registrazione di un prestito op.4. Restituzione di un libro Non inseriamo l attributo ridondante Volume della Ridondanza: 1I = 4 Byte * = Byte = 215 KB.

13 Eliminazione delle generalizzazioni Per eliminare la generalizzazione possiamo scegliere uno dei seguenti metodi: Accorpamento delle figlie della generalizzazione nel padre: ciò comporta dei valori nulli, ma in compenso abbiamo meno relazioni, e quindi un tempo di accesso minore. Accorpamento del padre della generalizzazione nelle figlie: non abbiamo valori nulli, ma aumenta il numero di accessi al sistema Sostituzione delle generalizzazione con associazioni: quando una delle figlie non ha molto in comune si creano associazioni per ogni figlia. L Accorpamento delle figlie è stata la scelta più idonea per il nostro sistema, in quanto ci assicura un numero minore di accessi. La seguente immagine mostra la nuova entità Utente, a cui abbiamo aggiunto un nuovo attributo: tipo che ci permette di distinguere i diversi utenti del nostro sistema. Tipo è stato espresso come attributo semplice in quanto il numero di utenti rimane fisso nel tempo. Partizionamento / Accorpamento La relazione Biblioteca e Facoltà hanno entrambe un solo attributo quindi possono essere accorpate in una sola entità.

14 Eliminazione attributi composti Analizziamo le varie operazioni del nostro sistema, domandandoci in quali operazioni il campo indirizzo viene visto e ricercato. Op 1. nessuna ricerca e visita dell attributo indirizzo Op 2. nessuna ricerca e visita dell attributo indirizzo Op 3. l attributo indirizzo viene solo memorizzato nel caso in cui l utente entra per la prima volta nel sistema, ma non ci sono visite e ricerche. Op 4. nessuna ricerca e visita dell attributo indirizzo. Op 5. nessuna ricerca e visita dell attributo indirizzo. Op 6. L attributo viene visitato, ma non ricercato. Scelta delle chiavi In conclusione alla nostra analisi l attributo composto Indirizzo verrà memorizzato in una stringa, in quanto nessuna operazione del nostro sistema, effettua ricerche per indirizzo. Facoltà Abbiamo deciso di assegnare un nuovo attributo a Facoltà in quanto un codice è molto più leggero di un nome, infatti attraverso due char possiamo identificare le facoltà della nostra Basi di dati. Utente L utente non può avere come identificativo un codice non univoco quindi si è ritenuto neccessario aggiungere all entità un attributo Codice, in quanto l attributo matricola e CF in alcuni casi hanno valore nullo. Prestito Prestito verrà identificato tramite un codice progressivo. Archivio Archivio verrà identificato tramite un attributo chiave Codice. Libro Ogni libro verrà identificato univocamente dal proprio Codice (ISBN) Editore

15 Abbiamo aggiunto un attributo codice come chiave identificativa per 2 motivi: in quanto potrebbero esservi editori con il medesimo nome ed in quanto con la chiave identificativa Codice si risparmia in termini di occupazione di memoria nel database. Autore Nome e cognome dell Autore non possono essere la chiave dell entità in quanto ci possono essere autori con il medesimo nome quindi anche in questo caso si rende necessario inserire un codice.

16 4. TRADUZIONE VERSO IL MODELLO LOGICO Traduzione di entità e associazioni in relazioni Tab 1 Archivio (Codice, CodLibro, CodFacoltà, CodScaffale, Ncopie) Tab 2 Autore (Codice, Nome, DataNascita, LuogoNascita, Biografia) Tab 3 Editore (Codice, Citta) Tab 4- Facolta (Codice, Nome, Località) Tab 5 Libro (Codice, CodEditore, Titolo, Anno, Lingua) Tab 6 Prestito (Codice, CodUtente, CodArchivio, Data, Restituito) Tab 7 Scritti (Codice, CodLibro, CodAutore) Tab 8 Utente (Codice, Nome, Cognome, Indirizzo, Matricola, CF, Tipo, Password) Rappresentazione grafica Il seguente schema ci permette di rappresentare sia le relazioni con i relativi attributi, sia i vincoli di integrità referenziale esistenti tra le varie relazioni. Le chiavi sono rappresentate in grassetto, le frecce indicano vincoli di integrità referenziale e gli asterisci sugli attributi, possibili valori nulli. Normalizzazione 1nf 2nf 3nf bcnf 1 Si Si Si Si 2 Si[1] Si Si Si 3 Si Si Si Si 4 Si Si Si Si 5 Si Si Si Si 6 Si Si Si Si 7 Si si Si Si 8 Si[2] Si Si Si [1] Consideriamo l attributo nome, il in forma normale, in quanto non avvengoo ricerche, come per l attributo indirizzo per nome o cognome. [2] Consideriamo l attributo indirizzo in forma normale, in quanto non effettuando ricerche per via, città o cap, non si rende neccessario scomporlo ulteriormente.

17 Query di inserimento delle tabelle in MySql Di seguito le query di inserimento di tutte le tabelle nel database MySql: SET AUTOCOMMIT=0; START TRANSACTION; CREATE TABLE Archivio ( Codice INTEGER NOT NULL AUTO_INCREMENT, CodFacolta INTEGER NOT NULL, CodLibro CHARACTER (13) NOT NULL, Scaffale CHARACTER VARYING (10), NCopie NUMERIC (5) NOT NULL, PRIMARY KEY(Codice), FOREIGN KEY(CodFacolta) REFERENCES Facolta(Codice) ON UPDATE CASCADE ON DELETE SET NULL, FOREIGN KEY(CodLibro) REFERENCES Libro(Codice) ON UPDATE CASCADE ON DELETE SET NULL ) TYPE = InnoDB; CREATE TABLE Autore ( Codice INTEGER NOT NULL AUTO_INCREMENT, Nome CHARACTER VARYING (30), DataNascita DATE, LuogoNascita CHARACTER VARYING (30), Biografia LONGTEXT, PRIMARY KEY(Codice) ) TYPE = InnoDB; CREATE TABLE Editore ( Codice INTEGER NOT NULL AUTO_INCREMENT, Nome CHARACTER VARYING (30), PRIMARY KEY(Codice) ) TYPE = InnoDB; CREATE TABLE Facolta ( Codice INTEGER NOT NULL AUTO_INCREMENT, Nome CHARACTER VARYING (40) NOT NULL, PRIMARY KEY(Codice) ) TYPE = InnoDB; CREATE TABLE Libro ( Codice CHARACTER (13) NOT NULL, Titolo CHARACTER VARYING (50) NOT NULL, CodEditore INTEGER NOT NULL, Lingua CHARACTER VARYING (20) NOT NULL, Anno NUMERIC (4) NOT NULL, PRIMARY KEY(Codice), FOREIGN KEY(CodEditore) REFERENCES Editore(Codice) ON UPDATE CASCADE

18 ON DELETE SET NULL ) TYPE = InnoDB; CREATE TABLE Prestito ( Codice INTEGER NOT NULL AUTO_INCREMENT, CodUtente CHARACTER VARYING (20) NOT NULL, CodArchivio INTEGER NOT NULL, Data DATE NOT NULL, Restituito DATE, PRIMARY KEY(Codice), FOREIGN KEY(CodUtente) REFERENCES Utente(Codice) ON UPDATE CASCADE ON DELETE SET NULL, FOREIGN KEY(CodArchivio) REFERENCES Archivio(Codice) ON UPDATE CASCADE ON DELETE SET NULL ) TYPE = InnoDB; CREATE TABLE Scritti ( Codice INTEGER NOT NULL AUTO_INCREMENT, CodLibro CHARACTER (13) NOT NULL, CodAutore INTEGER NOT NULL, PRIMARY KEY(Codice), FOREIGN KEY(CodLibro) REFERENCES Libro(Codice) ON UPDATE CASCADE ON DELETE SET NULL, FOREIGN KEY(CodAutore) REFERENCES Autore(Codice) ON UPDATE CASCADE ON DELETE SET NULL ) TYPE = InnoDB; CREATE TABLE Utente ( Codice CHARACTER VARYING (20) NOT NULL, Password CHARACTER VARYING (20) NOT NULL, Tipo CHARACTER (1) NOT NULL, Nome CHARACTER VARYING (20) NOT NULL, Cognome CHARACTER VARYING (20) NOT NULL, Domicilio CHARACTER VARYING (40) NOT NULL, Matricola CHARACTER VARYING (20) NOT NULL, CF CHARACTER VARYING (20) NOT NULL, PRIMARY KEY(Codice) ) TYPE = InnoDB; COMMIT;

19 Query relative alle operazioni principali OPERAZIONE Registrazione libro Registrazione autore Registrazione autori di un libro Registrazione del libro nell archivio Ricerca disponibilità di un libro Registrazione nuovo prestito Registrazione restituzione libro Consultazione di tutti i prestiti da parte del bibliotecario Consultazione dei propri prestiti da parte di uno studente o professore QUERY MYSQL INSERT INTO Libro (Codice, NomeEditore, Titolo, Lingua, Anno) VALUES ('<isbn>', '<titolo>', '<lingua>', '<anno>'); INSERT INTO Autore (Codice, Nome, DataNascita, LuogoNascita, Biografia) VALUES (<codice>, '<nome>', <data_nascita>, '<luogo_nascita>', '<biografi>') INSERT INTO Scritti(CodLibro, CodAutore) VALUES ('<isbn>', '<codice_autore>'); INSERT INTO Archivio (Codice, CodFacolta, CodLibro, Scaffale, ncopie) VALUES ('<codice>', '<facolta>', '<isbn>', '<scaffale>', '<copie>'; SELECT Titolo, Archivio.Codice AS CodArch, Libro.Codice AS CodISBN, Editore.Nome AS Editore, Anno, Lingua, Facolta.Nome AS Facolta, Archivio.nCopie - Count(Prestito.Data) + Count(Prestito.Restituito) AS Disponibilita FROM Libro, Archivio, Facolta, Editore LEFT JOIN Prestito ON Prestito.CodArchivio = Archivio.Codice WHERE Archivio.CodLibro = Libro.Codice AND Archivio.CodFacolta = Facolta.Codice AND Editore.Codice = Libro.CodEditore AND " & query &" GROUP BY CodArch; INSERT INTO Prestito (Codice, CodUtente, CodArchivio, Data, Restituito) VALUES ('', '<nome_utente>', '<codice_archivio>', CURRENT_DATE, NULL); UPDATE Prestito SET Restituito = CURRENT_DATE WHERE CodArchivio = '<codice_archivio>' AND Restituito IS NULL AND CodUtente = '<codice_utente>'; SELECT Archivio.Codice AS CodArchivio, Utente.Codice, Utente.Nome, Utente.Cognome, Titolo, Libro.Codice AS CodISBN, NomeEditore AS Editore, Anno, Data, Restituito FROM Utente, Prestito, Libro, Archivio WHERE Utente.Codice = Prestito.CodUtente AND Archivio.CodLibro = Libro.Codice AND Prestito.CodArchivio = Archivio.Codice AND <query_di_ricerca> ORDER BY Restituito; SELECT Titolo, CodISBN, NomeEditore AS Editore, Anno, Data, Restituito FROM Utente, Prestito, Libro, Archivio WHERE Utente.Codice = Prestito.CodUtente AND Archivio.CodLibro = Libro.CodISBN AND Prestito.CodArchivio = Archivio.Codice AND Utente.Codice = '<nome_utente>'; Queste sono solo alcune delle query utilizzate. Per una comprensione completa di tutte le query e del loro funzionamento si rimanda all implementazione.

20 5. PROGETTAZIONE FISICA Consideriamo l op. 2 La ricerca di un libro che è la più onerosa delle altre. Tabella delle pagine 4 KB 1) La tabella Libri sarà letta sequenzialmente quindi con un costo NP LIBRO RecordSize = 89 Bytes NT = NP = 240 2) Avendo un b + -tree con un occupazione delle foglie pari all 80% e con g = 2. Libro - Archivio fattore di filtraggio di 1/2 Prestiti - Archivio fattore di filtraggio 1/10 quindi il fattore di filtro complessivo è 1/20 delle tuple restituite. PRESTITO RecordSize = 49 Bytes NT = 6000 NP = 73 NL = (6000*240)/(4096*0,80) = 439 h = 1 + [log 5 439] = 5 CA Prestito = /20 + f(6000/20, 73) = , = 97.95

21 6. IMPLEMENTAZIONE Per l implementazione abbiamo usato come linguaggio di programmazione il linguaggio ASP. Come database abbiamo utilizzato MySql di Aruba.it Anche se tale database non è configurato per tabelle InnoDB, il codice è progettato per tali tabelle. In particolare si fa uso intensivo di transazioni e lock per le quali sarebbe ottimale InnoDB. Non ci siamo limitati ad una semplice implementazione del sistema informativo, lo abbiamo realizzato in tutti gli aspetti per simulare efficacemente la biblioteca universitaria da noi progettata. E possibile accedere al database presso: Nome Utente: Sql70822 Password: nel file loggati.asp Il progetto funzionante è disponibile presso: Si consiglia la visualizzazione con Internet Explorer, Mozilla Firefox o Mozilla. Per accedere come studente utilizzare i seguenti login: nome utente: ute1 password: arcobaleno nome utente: ute2 password: arcobaleno Per accedere come bibliotecario utilizzare il seguente login: nome utente: biblo password: infinito Se si desidera invece eseguire il debug del sito (ottenendo la visualizzazione delle query nella pagina, ed evitando il messaggio di errore standard in caso di errori) utilizzare il seguente login: nome utente: debug password: debug Nota: ha gli stessi privilegi di un bibliotecario, ma non è un utente registrato nel database. Di seguito discutiamo brevemente l implementazione, in particolare esaminando gli aspetti più interessanti. Per una comprensione più approfondita rimandiamo ad i listati (che sono commentati e acclusi alla presente relazione) e disponibili anche nel loro formato originale nel cd-rom consegnato. La base dati è stata popolata con i seguenti libri: GDI+ Programming in C# and VB.NET, editore APress, autore Nick Symmonds, 2002, Inglese Design Patterns, editore Addison-Wesley, autori Gamma, Helm, Johnson, Vlissides, 2002, Italiano Essere Digitali, editore Sperling Paperback, autore Nicholas Negroponte, 1999, Italiano Reti di Calcolatori, editore Prentice Hall, autore Andrei S. Tanenbaum, 2003, Italiano Guida a SQL, editore McGraw-Hill, autori Daniela Dorbolò, Andrea Guidi, 1999, Italiano

22 Navigazione dell interfaccia Una volta giunti alla home page, per procedere oltre è necessario effettuare il login. Come già visto bibliotecari, da un lato, e studenti o professori, dall altro, hanno diversi privilegi. Per effettuare il login basta ciccare su login o in alternativa scegliere una qualsiasi sezione. Se non si è loggiati verrà infatti chiesto automaticamente di fare il login. Una volta loggiato il bibliotecario può - Inserire un nuovo libro - Modificare un libro esistente - Controllare la disponibilità di un libro - Controllare i prestiti effettuati e restituiti

23 Inserimento di un nuovo libro Basta cliccare su N.Libro e compilare i dati relativi al libro. Il libro verrà automaticamente inserito e con esso verranno registrati anche gli Autori, l Editore, la lingua e l anno di edizione. Verrà poi chiesto quante copie si vogliono registrare, in quale facoltà e in quale scaffale verranno inserite.

24 Modificare un libro esistente Ciccando su Modif. Libro si accede ad una pagina nella quale viene chiesto il codice ISBN del libro da modificare. Nella pagina successiva è possibile modificare tutti i dati relativi al libro. Controllare la disponibilità di un libro Ciccando su Disponibilità è possibile ricercare la disponibilità di uno o più libri. E possibile ricercare per editore, titolo e codice ISBN. La ricerca è esatta se si specifica il codice ISBN e non esatta se si specifica editore e/o titolo. Per esempio è possibile ricercare reti ed ottenere il libro Reti di Calcolatori. Per ogni libro trovato viene inoltre visualizzata la disponibilità. Per prendere in prestito un libro è sufficiente ciccare sul collegamento ipertestuale posto nel codice ISBN di ogni libro e poi specificare chi prende il libro in prestito.

25 Se il nome utente di colui che prende il prestito non esiste, verrà visualizzato un messaggio di errore. Controllare i prestiti effettuati e restituiti Ciccando su Prestiti è possibile ricercare i prestiti effettuati e/o restituiti. Per ogni prestito è indicato chi ha effettuato il prestito, quando e quando ha restituito il libro. Basta cliccare sul collegamento ipertestuale relativo per registrare la restituzione di un prestito. A differenza di un bibliotecario, uno studente o un professore non può registrare o modificare libri, inoltre può gestire solo i propri prestiti.

26 Listato: controllo_area_riservata.inc <% If Session("Nome") <> "debug" Then On Error Resume Next Response.Expires = 'Fa in modo che la pagina non sia ricaricabile dalla cache del browser (per questioni di coerenza) Const TIPO_STUDENTE = 1 Const TIPO_PROFESSORE = 2 Const TIPO_BIBLIOTECARIO = 3 If Session("Loggato") <> "Loggato" Then Response.Redirect("login.asp") If CInt(Session("Tipo")) <> TIPO_BIBLIOTECARIO Then Response.Redirect("area_riservata.asp") Sub EsaminaErroriMySql() If Session("Nome") <> "debug" Then If Err.Number <> 0 Then Err.Clear: Response.Redirect("errore.asp") End Sub Sub FaiQueryMySql(sql, conn, rs) If Session("Nome") = "debug" Then Response.Write sql & "<br><br>" 'Mostra le query in caso di Debug rs.open sql, conn, 3, 3 EsaminaErroriMySql End Sub %> Listato: controllo_login.inc <% If Session("Nome") <> "debug" Then On Error Resume Next Const TIPO_STUDENTE = 1 Const TIPO_PROFESSORE = 2 Const TIPO_BIBLIOTECARIO = 3 If Session("Loggato") <> "Loggato" Then Response.Redirect("login.asp") Sub EsaminaErroriMySql() If Session("Nome") <> "debug" Then If Err.Number <> 0 Then Err.Clear: Response.Redirect("errore.asp") End Sub Sub FaiQueryMySql(sql, conn, rs) If Session("Nome") = "debug" Then Response.Write sql & "<br><br>" 'Mostra le query in caso di Debug rs.open sql, conn, 3, 3 EsaminaErroriMySql End Sub %>

27 Listato: su.inc <center> <p><img src="../images/logo.jpg" width="759" height="136" border="0" align="center" usemap="#map"> <map name="map"> <area shape="rect" coords="36,60,80,75" href="index.asp"> <area shape="rect" coords="111,59,158,77" href="login.asp"> <area shape="rect" coords="479,85,568,100" href="disponibilita.asp"> <area shape="rect" coords="573,86,625,101" href="prestiti.asp"> <area shape="rect" coords="630,86,676,100" href="libri.asp"> <area shape="rect" coords="678,87,752,99" href="modifica.asp"> </map> </p> </center> Listato: giu.inc <center> <img src="../images/sotto.jpg" width="751" height="18" border="0"> </center>

28 Listato: index.asp <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>urbinoweb.net - Home</title> <meta http-equiv="content-type" content="text/html; charset=iso "> <link href="css/general.css" rel="stylesheet" type="text/css"> </head> <body leftmargin="0" topmargin="0"> <table width="761" border="0" align="center" cellpadding="0" cellspacing="0"> <td><!-- #include File= "inc/su.inc" --></td> <td><table width="751" height="0" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#000000"> <td width="761" bordercolor="#ffffff" bgcolor="#d5d5ec"> <p align="center"> </p> <h1 align="center">benvenuto nella Home Page della Libreria Centralizzata dell'università di Urbino</h1> <p align="center"><img src="images/urbino.jpg" width="550" height="413" border="1"></p> <h2 align="center">per accedere alle sezioni effettua prima il login</h2> </td> <td><!-- #include File= "inc/giu.inc" --></td> </td> </body> </html>

29 Listato: login.asp <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>urbinoweb.net - Login</title> <meta http-equiv="content-type" content="text/html; charset=iso "> <link href="css/general.css" rel="stylesheet" type="text/css"> </head> <body leftmargin="0" topmargin="0"> <table width="761" border="0" align="center" cellpadding="0" cellspacing="0"> <td><!-- #include File= "inc/su.inc" --></td> <td><table width="751" height="0" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#000000"> <td width="761" bordercolor="#ffffff" bgcolor="#d5d5ec"> <p align="center"> <script language="javascript" type="text/javascript"> var visto; function Vedi(quale) { uscita = "a"; if (quale == "" quale==" { uscita = "e"; } return uscita; } function Vedi2(quale) { uscita = "a"; if (quale == "No" quale=="") { uscita = "i"; } return uscita; } function Send(a1, a2) { visto="a"; if (Vedi(a1)=="e") { visto="e" } if (Vedi(a2)=="e") { visto="e" } if (visto=="e") { alert("attenzione: devi specificare un nome utente ed una password."); } if (visto=="a") { document.formulario.submit(); } } </script> </p> <p align="center"><img src="images/lucchetto.gif" width="80" height="80"> </p> <h1 align="center">inserisci username e password per fare il login:</h1> <form name="formulario" method="post" action="loggati.asp"> <table width="300" border="0" align="center"> <td align="right" valign="middle"> <font size="2" face="tahoma, Verdana">Username:</font></td> <td valign="middle"> <input name="user" type="text" id="user"></td>

30 <td align="right" valign="middle"> <font size="2" face="tahoma, Verdana">Password:</font></td> <td valign="middle"> <input name="pass" type="password" id="pass"></td> <p align="center"> <input name="login" onclick="javascript:send(user.value, pass.value);" type="button" id="login" value="login"> </p> </form> <h3 align="center"> </h3> </td> <td><!-- #include File= "inc/giu.inc" --></td> </td> </body> </html>

31 Listato: loggati.asp <% Dim conn, rs, sql 'Variabili per la connessione a MySql Dim User, Pass Dim ServerIP, ServerPort, ServerID, ServerData, ServerPass, Stringa Dim UserTrovato, TipoTrovato 'La funzione EsaminaErroriMySql è riscritta in quanto in questa pagina non vi è nessun include che la richiamasse Sub EsaminaErroriMySql 'If Err.Number <> 0 Then Err.Clear: Response.Redirect("errore.asp") End Sub User = Request.Form("user") Pass = Request.Form("pass") 'Dati di connessione al database ServerIP = " " ServerPort = "3306" ServerID = "Sql70822" ServerData = "_1" ServerPass = "fc78813e" Stringa = "server=" & ServerIP & ";port=" & ServerPort & ";uid=" & ServerID &";pwd="& ServerPass &";database=" & ServerID & ServerData &";OPTION=16387" If User = "" or Pass = "" Then Response.Redirect("login.asp") Set conn = Server.CreateObject("ADODB.Connection") conn.open "driver={mysql};" & Stringa Set rs = Server.CreateObject("ADODB.Recordset") 'Verifica se l'utente esiste sql = "SELECT Codice, Tipo FROM Utente WHERE Codice = '" & User & "' AND Password = '" & Pass & "';" rs.open sql, conn, 3, 3 EsaminaErroriMySql If rs.eof = false Then rs.movefirst UserTrovato = rs.fields("codice") TipoTrovato = rs.fields("tipo") End If rs.close conn.close If LCase(User) = "debug" And LCase(Pass) = "debug" Then UserTrovato = "debug" 'Se nome utente e password sono corretti fa il login e registra le variabili di sessione if UserTrovato <> "" Then Session("StringaConnessione") = Stringa Session("Loggato") = "Loggato" Session("Nome") = UserTrovato 'Registra il nome utente in una variabile di sessione Session("Tipo") = TipoTrovato 'Registra il tipo utente in una variabile di sessione If UserTrovato = "debug" Then Session("Tipo") = 3 'Privilegi come fosse un bibliotecario End If %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>urbinoweb.net - Login</title> <meta http-equiv="content-type" content="text/html; charset=iso "> <link href="css/general.css" rel="stylesheet" type="text/css"> </head> <body leftmargin="0" topmargin="0">

32 <table width="761" border="0" align="center" cellpadding="0" cellspacing="0"> <td><!-- #include File= "inc/su.inc" --></td> <td><table width="751" height="0" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#000000"> <td width="761" bordercolor="#ffffff" bgcolor="#d5d5ec"> <p align="center"> </p> <p align="center"><img src="images/esclamativo.gif" width="70" height="70"></p> <h1 align="center">login effettuato con successo!</h1> <h2 align="center">seleziona ora la sezione a cui voi accedere dal menù in alto</h2> </td> <td><!-- #include File= "inc/giu.inc" --></td> </td> </body> </html> <% Else %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>urbinoweb.net - Login</title> <meta http-equiv="content-type" content="text/html; charset=iso "> <link href="css/general.css" rel="stylesheet" type="text/css"> </head> <body leftmargin="0" topmargin="0"> <table width="761" border="0" align="center" cellpadding="0" cellspacing="0"> <td><!-- #include File= "inc/su.inc" --></td> <td><table width="751" height="0" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#000000"> <td width="761" bordercolor="#ffffff" bgcolor="#d5d5ec"> <p align="center"> </p> <h1 align="center"> </h1> <h1 align="center"><img src="images/errore.gif" width="70" height="70"></h1> <h1 align="center">attenzione: Nome utente o password errati</h1> <h3 align="center"><a href="login.asp">clicca qui per ritornare al login</a></h3> <h1 align="center"> </h1> </td> <td><!-- #include File= "inc/giu.inc" --></td> </td> </body> </html> <% End If %> Listato: libri.asp

33 <!-- #include File= "inc/controllo_area_riservata.inc" --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>urbinoweb.net - Libri</title> <meta http-equiv="content-type" content="text/html; charset=iso "> <link href="css/general.css" rel="stylesheet" type="text/css"> </head> <script language="javascript" type="text/javascript"> // Funzione Javascript per il controllo dei dati function Send() { if (formulario.titolo.value == "" formulario.isbn.value == "" formulario.editore.value == "" formulario.autori.value == "" formulario.autori.lingua == "" formulario.anno.value == "") alert("attenzione: Devi compilare tutti i campi."); else document.formulario.submit(); } </script> <body leftmargin="0" topmargin="0"> <table width="761" border="0" align="center" cellpadding="0" cellspacing="0"> <td><!-- #include File= "inc/su.inc" --></td> <td><table width="751" height="0" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#000000"> <td width="761" bordercolor="#ffffff" bgcolor="#d5d5ec"> <p align="center"> </p> <h1 align="center">inserimento NUOVO LIBRO</h1> <h2 align="center">da questa pagina puoi inserire un nuovo libro</h2> <form name="formulario" method="post" action="libri2.asp"> <table width="300" border="0" align="center"> <td align="right" valign="middle"> <font size="2" face="tahoma, Verdana">Titolo:</font></td> <td valign="middle"> <input name="titolo" type="text" id="titolo"></td> <td align="right" valign="middle"><font size="2" face="tahoma, Verdana">Codice ISBN:</font></td> <td valign="middle"><input name="isbn" type="text" id="isbn"></td> <td align="right" valign="middle"><font size="2" face="tahoma, Verdana">Editore:</font></td> <td valign="middle"><input name="editore" type="text" id="editore"></td> <td align="right" valign="middle"><font size="2" face="tahoma, Verdana">Autori:</font></td> <td valign="middle"> <input name="autori" type="text" id="autori"><font size="2" face="tahoma, Verdana"> <strong>*</strong></font></td> <td align="right" valign="middle"><font size="2" face="tahoma, Verdana">Lingua:</font></td> <td valign="middle"><input name="lingua" type="text" id="lingua"></td>

34 <td align="right" valign="middle"><font size="2" face="tahoma, Verdana">Anno:</font></td> <td valign="middle"><input name="anno" type="text" id="anno"></td> <td align="right" valign="middle"> </td> <td valign="middle"> </td> <p align="center"> <input name="inserisci" onclick="javascript:send();" type="button" id="inserisci" value="inserisci"> </p> </form> <h2 align="center"><strong>*</strong> Separa i nomi e cognomi degli autori con una virgola. Es.: Daniela Dorbolò, Andrea Guidi</h2> </td> <td><!-- #include File= "inc/giu.inc" --></td> </td> </body> </html> Listato: libri2.asp <!-- #include File= "inc/controllo_area_riservata.inc" -->

35 <% Dim Autore() Dim Facolta(50) Dim NumAutori Dim NumFacolta Dim CodiceAutore Dim conn, rs, sql 'Variabili per la connessione a MySql Dim ciclo 'Variabile per il ciclo Dim inizio 'Divide l'unica stringa Autori in più stringhe, ognuna contenente un autore. Es. "Gino Rossi, Marco Rossi" -> "Gino Rossi" e "Marco Rossi" NumAutori = 1 Autori = Request.Form("Autori") For ciclo = 1 To Len(Autori) If Mid(Autori, ciclo, 1) = "," Then NumAutori = NumAutori + 1 Next ReDim Autore(NumAutori) NumAutori = -1 inizio = 1 For ciclo = 1 To Len(Autori) If Mid(Autori, ciclo, 1) = "," Then NumAutori = NumAutori + 1 Autore(NumAutori) = Trim(Mid(Autori, inizio, ciclo - inizio)) inizio = ciclo + 1 End If Next NumAutori = NumAutori + 1 Autore(NumAutori) = Trim(Mid(Autori, Inizio, Len(Autori) - Inizio + 1)) ' Set conn = Server.CreateObject("ADODB.Connection") conn.open "driver={mysql};" & Session("StringaConnessione") Set rs = Server.CreateObject("ADODB.Recordset") FaiQueryMySql "START TRANSACTION;", conn, rs FaiQueryMySql "SELECT Codice AS CodISBN FROM Libro WHERE Codice = '" & Request.Form("ISBN") & "';", conn, rs If rs.eof = false Then 'Se il libro è già registrato non fa nulla rs.close Else 'Altrimenti lo registra rs.close FaiQueryMySql "SELECT Codice FROM Editore WHERE Nome = '" & Request.Form("Editore") & "';", conn, rs If rs.eof = false Then rs.movefirst CodiceEditore = rs.fields("codice") End if rs.close If CodiceEditore = "" Then FaiQueryMySql "INSERT INTO Editore (Codice, Nome) VALUES ('', '" & Request.Form("Editore") & "');", conn, rs FaiQueryMySql "SELECT Codice FROM Editore WHERE Nome = '" & Request.Form("Editore") & "';", conn, rs rs.movefirst CodiceEditore = rs.fields("codice") rs.close End If FaiQueryMySql "INSERT INTO Libro (Codice, CodEditore, Titolo, Lingua, Anno) VALUES ('" & Request.Form("ISBN") & "', " & CodiceEditore & ", '" & Request.Form("Titolo") & "', '" & Request.Form("Lingua") & "', '" & Request.Form("Anno") & "');", conn, rs

36 For ciclo = 0 to NumAutori 'Registrando anche gli autori relativi FaiQueryMySql "SELECT Codice FROM Autore WHERE Nome = '" & Autore(ciclo) & "';", conn, rs If rs.eof = false Then rs.movefirst CodiceAutore = rs.fields("codice") rs.close Else rs.close FaiQueryMySql "INSERT INTO Autore (Codice, Nome, DataNascita, LuogoNascita, Biografia) VALUES ('', '" & Autore(ciclo) & "', NULL, NULL, NULL)", conn, rs FaiQueryMySql "SELECT Codice FROM Autore WHERE Nome = '" & Autore(ciclo) & "';", conn, rs rs.movefirst CodiceAutore=rs.Fields("Codice") rs.close End If FaiQueryMySql "INSERT INTO Scritti(CodLibro, CodAutore) VALUES ('" & Request.Form("ISBN") & "', " & CodiceAutore & ");", conn, rs Next End If FaiQueryMySql "COMMIT;", conn, rs 'La seguente è una transazione scorrelata dalla prima che serve a reperire i nomi di tutte le facoltà FaiQueryMySql "SELECT Nome FROM Facolta", conn, rs NumFacolta = 0 If rs.eof = false Then rs.movefirst Do Until rs.eof = true NumFacolta = NumFacolta + 1 Facolta(NumFacolta) = rs.fields("nome") rs.movenext Loop rs.close End If conn.close Set rs = Nothing Set conn = Nothing %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>urbinoweb.net - Libri</title> <meta http-equiv="content-type" content="text/html; charset=iso "> <link href="css/general.css" rel="stylesheet" type="text/css"> </head> <body leftmargin="0" topmargin="0"> <table width="761" border="0" align="center" cellpadding="0" cellspacing="0"> <td><!-- #include File= "inc/su.inc" --></td> <td><table width="751" height="0" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#000000"> <td width="761" bordercolor="#ffffff" bgcolor="#d5d5ec"> <p align="center"> </p> <h1 align="center">libro CORRETTAMENTE REGISTRATO</h1> <h2 align="center">compila i seguenti campi, per registrare il numero di nuove copie per la facoltà</h2> <form name="formulario" method="post" action="libri3.asp"> <input type="hidden" name="isbn" value="<%=request.form("isbn")%>">

37 <table width="478" border="0" align="center"> <td align="right" valign="middle"><font size="2" face="tahoma, Verdana">Titolo Libro (codice ISBN):</font></td> <td valign="middle"><font size="2" face="arial, Helvetica, sansserif"><strong> <%=Request.Form("Titolo")%> (<%=Request.Form("ISBN")%>)</strong></font></td> <td width="216" align="right" valign="middle"> <font size="2" face="tahoma, Verdana">Facoltà:</font></td> <td width="252" valign="middle"> <select name="facolta"> <% for ciclo = 0 to NumFacolta %> <option value = "<%=ciclo%>"><%=facolta(ciclo)%></option> <% next %> </select></td> <td align="right" valign="middle"> <font size="2" face="tahoma, Verdana">Scaffale:</font></td> <td valign="middle"> <input name="scaffale" type="text" id="scaffale" size="40"></td> <td align="right" valign="middle"><font size="2" face="tahoma, Verdana">Numero Copie:</font></td> <td valign="middle"><input name="copie" type="text" id="copie" size="40"></td> <p align="center"> <input name="registra" type="submit" id="registra" value="registra"> </p> </form> </td> <td><!-- #include File= "inc/giu.inc" --></td> </td> </body> </html>

38 Listato: libri3.asp <!-- #include File= "inc/controllo_area_riservata.inc" --> <% Dim conn, rs, sql 'Variabili per la connessione a MySql Set conn = Server.CreateObject("ADODB.Connection") conn.open "driver={mysql};" & Session("StringaConnessione") Set rs = Server.CreateObject("ADODB.Recordset") FaiQueryMySql "INSERT INTO Archivio (Codice, CodFacolta, CodLibro, Scaffale, ncopie) VALUES ('', " & Request.Form("Facolta") & ", '" & Request.Form("ISBN") & "', '" & Request.Form("Scaffale") & "', " & Request.Form("Copie") & ");", conn, rs conn.close Set rs = Nothing Set conn = Nothing %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>urbinoweb.net - Libri</title> <meta http-equiv="content-type" content="text/html; charset=iso "> <link href="css/general.css" rel="stylesheet" type="text/css"> </head> <body leftmargin="0" topmargin="0"> <table width="761" border="0" align="center" cellpadding="0" cellspacing="0"> <td><!-- #include File= "inc/su.inc" --></td> <td><table width="751" height="0" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#000000"> <td width="761" bordercolor="#ffffff" bgcolor="#d5d5ec"> <p align="center"> </p> <p align="center"><img src="images/esclamativo.gif" width="70" height="70"></p> <h1 align="center">registrazione ESEGUITA CON SUCCESSO</h1> <h2 align="center"> </h2> </td> <td><!-- #include File= "inc/giu.inc" --></td> </td> </body> </html>

39 Listato: modifica.asp <!-- #include File= "inc/controllo_area_riservata.inc" --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>urbinoweb.net - Modifica</title> <meta http-equiv="content-type" content="text/html; charset=iso "> <link href="css/general.css" rel="stylesheet" type="text/css"> </head> <script language="javascript" type="text/javascript"> // Funzione Javascript per il controllo dei dati function Send() { if (formulario.isbn.value == "") alert("attenzione: Devi compilare il campo."); else document.formulario.submit(); } </script> <body leftmargin="0" topmargin="0"> <table width="761" border="0" align="center" cellpadding="0" cellspacing="0"> <td><!-- #include File= "inc/su.inc" --></td> <td><table width="751" height="0" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#000000"> <td width="761" bordercolor="#ffffff" bgcolor="#d5d5ec"> <p align="center"> </p> <h1 align="center">modifica LIBRO</h1> <h2 align="center">da questa pagina puoi modificare un libro. Come prima cosa specifica il codice ISBN:</h2> <form name="formulario" method="post" action="modifica2.asp"> <table width="300" border="0" align="center"> <td align="right" valign="middle"><font size="2" face="tahoma, Verdana">Codice ISBN:</font></td> <td valign="middle"><input name="isbn" type="text" id="isbn"></td> <td align="right" valign="middle"> </td> <td valign="middle"> </td> <p align="center"> <input name="modifica" onclick="javascript:send();" type="button" id="modifica" value="modifica"> </p> </form> </td> <td><!-- #include File= "inc/giu.inc" --></td> </td> </body> </html>

40 Listato: modifica2.asp <!-- #include File= "inc/controllo_area_riservata.inc" --> <% Dim conn, rs, sql 'Variabili per la connessione a MySql Dim Titolo, Editore, Autori, Anno, Lingua Set conn = Server.CreateObject("ADODB.Connection") conn.open "driver={mysql};" & Session("StringaConnessione") Set rs = Server.CreateObject("ADODB.Recordset") FaiQueryMySql "LOCK TABLES Libro READ, Scritti READ, Autore READ, Editore READ;", conn, rs FaiQueryMySql "SELECT Titolo, Editore.Nome AS Editore, Anno, Lingua FROM Libro, Editore WHERE Libro.CodEditore = Editore.Codice AND Libro.Codice = '" & Request.Form("ISBN") & "';", conn, rs If rs.eof = false Then rs.movefirst Titolo = rs.fields("titolo") Editore = rs.fields("editore") Anno = rs.fields("anno") Lingua = rs.fields("lingua") End If rs.close FaiQueryMySql "SELECT Autore.Nome AS Autore FROM Scritti, Autore WHERE Scritti.CodLibro = '" & Request.Form("ISBN") & "' AND Scritti.CodAutore = Autore.Codice", conn, rs If rs.eof = false Then rs.movefirst Do Until rs.eof = true If Autori = "" Then Autori = rs.fields("autore") Else Autori = Autori & ", " & rs.fields("autore") Loop End If rs.close End If rs.movenext FaiQueryMySql "UNLOCK TABLES;", conn, rs conn.close set rs = Nothing set conn = Nothing %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>urbinoweb.net - Modifica</title> <meta http-equiv="content-type" content="text/html; charset=iso "> <link href="css/general.css" rel="stylesheet" type="text/css"> </head> <script language="javascript" type="text/javascript"> // Funzione Javascript per il controllo dei dati function Send() { if (formulario.titolo.value == "" formulario.editore.value == "" formulario.autori.value == "" formulario.autori.lingua == "" formulario.anno.value == "") alert("attenzione: Devi compilare tutti i campi."); else document.formulario.submit(); } </script>

Database 1 biblioteca universitaria. Testo del quesito

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

Dettagli

Esercizio data base "Biblioteca"

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

Dettagli

Guida alla registrazione on-line di un DataLogger

Guida alla registrazione on-line di un DataLogger NovaProject s.r.l. Guida alla registrazione on-line di un DataLogger Revisione 3.0 3/08/2010 Partita IVA / Codice Fiscale: 03034090542 pag. 1 di 17 Contenuti Il presente documento è una guida all accesso

Dettagli

Volumi di riferimento

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

Dettagli

Basi di Dati Relazionali

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

Dettagli

GESTIONE DI MDB in WEB

GESTIONE DI MDB in WEB GESTIONE DI MDB in WEB Il presente documento riporta un esempio generico di gestione di un database di Access. Il lettore può personalizzare in base alle proprie esigenze sia il contenuto del database,

Dettagli

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL Basi di dati Il Linguaggio SQL Data Definition Language (DDL) Data Definition Language: insieme di istruzioni utilizzate per modificare la struttura della base di dati Ne fanno parte le istruzioni di inserimento,

Dettagli

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

LA GESTIONE DELLE VISITE CLIENTI VIA WEB LA GESTIONE DELLE VISITE CLIENTI VIA WEB L applicazione realizzata ha lo scopo di consentire agli agenti l inserimento via web dei dati relativi alle visite effettuate alla clientela. I requisiti informatici

Dettagli

GESGOLF SMS ONLINE. Manuale per l utente

GESGOLF SMS ONLINE. Manuale per l utente GESGOLF SMS ONLINE Manuale per l utente Procedura di registrazione 1 Accesso al servizio 3 Personalizzazione della propria base dati 4 Gestione dei contatti 6 Ricerca dei contatti 6 Modifica di un nominativo

Dettagli

RELAZIONE PROGETTO DATABASE GESTIONE BIBLIOTECA PERSONALE

RELAZIONE PROGETTO DATABASE GESTIONE BIBLIOTECA PERSONALE RELAZIONE PROGETTO DATABASE GESTIONE BIBLIOTECA PERSONALE Mameli Salvatore-M01/000153 SOMMARIO 1 INTRODUZIONE 1.1 Project Overview 1.2 Ambiente del prodotto 1.3 Document Overview 2 - PROGETTAZIONE 2.1

Dettagli

DBMS (Data Base Management System)

DBMS (Data Base Management System) Cos'è un Database I database o banche dati o base dati sono collezioni di dati, tra loro correlati, utilizzati per rappresentare una porzione del mondo reale. Sono strutturati in modo tale da consentire

Dettagli

Guida all uso di Java Diagrammi ER

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

Dettagli

1. Analisi dei requisiti

1. Analisi dei requisiti 1. Analisi dei requisiti 1a. Requisiti espressi in linguaggio naturale 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 Si vuole realizzare una base di dati

Dettagli

PHP E MYSQL CREAZIONE DI UN NUOVO DATABASE DAL PHPMYADMIN

PHP E MYSQL CREAZIONE DI UN NUOVO DATABASE DAL PHPMYADMIN PHP E MYSQL CREAZIONE DI UN NUOVO DATABASE DAL PHPMYADMIN Il metodo migliore per creare nuovi DB è quello di usare l interfaccia del PHPMYADMIN (che viene installata automaticamente con il pacchetto easy

Dettagli

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report Facoltà di Lingue e Letterature Straniere Le QUERY 2 Che cos è una Query? Una Query rappresenta uno strumento per interrogare un database.

Dettagli

Esercizi di JavaScript

Esercizi di JavaScript Esercizi di JavaScript JavaScript JavaScript é un linguaggio di programmazione interpretato e leggero, creato dalla Netscape. E' presente a patire da Netscape 2 in tutti i browser ed é dunque il linguaggio

Dettagli

ACTIVE SERVICE PAGES E DATABASE: tecnologia ADO

ACTIVE SERVICE PAGES E DATABASE: tecnologia ADO ACTIVE SERVICE PAGES E DATABASE: tecnologia ADO LEGGERE E VISUALIZZARE I DATI DI UNA TABELLA IN UNA PAGINA WEB Per visualizzare i dati di una tabella in una pagina web, dobbiamo utilizzare l'oggetto ADODB.Recordset

Dettagli

Università degli Studi di Padova Centro di Calcolo di Ateneo

Università degli Studi di Padova Centro di Calcolo di Ateneo Università degli Studi di Padova Centro di Calcolo di Ateneo GeBeS Abilitazione Guida rapida all uso Versione del 29 aprile 2011 Sommario Descrizione generale del modulo GeBeS Abilitazione... 2 La funzione

Dettagli

PSNET UC RUPAR PIEMONTE MANUALE OPERATIVO

PSNET UC RUPAR PIEMONTE MANUALE OPERATIVO Pag. 1 di 17 VERIFICHE E APPROVAZIONI VERSIONE V01 REDAZIONE CONTROLLO APPROVAZIONE AUTORIZZAZIONE EMISSIONE NOME DATA NOME DATA NOME DATA PRATESI STATO DELLE VARIAZIONI VERSIONE PARAGRAFO O DESCRIZIONE

Dettagli

Introduzione alla teoria dei database relazionali. Come progettare un database

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

Dettagli

Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati

Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati Azioni Select e join non consentono di modificare il contenuto del DB Azioni desiderate Inserzione di nuovi dati Aggiornamento di dati Cancellazione di dati Aggiunta di un record insert into utenti(nome,tel,codice_u)

Dettagli

Sistemi di Content Managment. http://www.besmart.it

Sistemi di Content Managment. http://www.besmart.it Sistemi di Content Managment http://www.besmart.it Cos è un CMS? 1. CMS sta per Content Managment System 2. E un applicazione in grado di gestire tutti i contenuti (testi, banche dati, profili utente ecc.)

Dettagli

Corso Drupal «Project management»

Corso Drupal «Project management» Corso Drupal «Project management» Pino Vasarelli, Andrea Vivaldi Iit Istituto di Informatica e Telematica del CNR Project management Il sito Project management deve avere le seguenti caratteristiche: la

Dettagli

OSSIF WEB. Manuale query builder

OSSIF WEB. Manuale query builder OSSIF WEB Manuale query builder - Maggio 2010 1) Sommario 1) SOMMARIO... 2 INTRODUZIONE... 3 Scopo del documento... 3 Struttura del documento... 3 Descrizione dell interfaccia grafica... 3 SELEZIONE DI

Dettagli

database: modello entityrelationship

database: modello entityrelationship Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2007/8 database: modello entityrelationship Prof.Valle D.ssaFolgieri Lez7 25.10.07 Trattamento dati. Database: modello entity-relationship 1 Fasi

Dettagli

LEGGERE E VISUALIZZARE I DATI DI UNA TABELLA IN UNA PAGINA WEB

LEGGERE E VISUALIZZARE I DATI DI UNA TABELLA IN UNA PAGINA WEB ADO ACTIVE SERVICE PAGES E DATABASE: tecnologia LEGGERE E VISUALIZZARE I DATI DI UNA TABELLA IN UNA PAGINA WEB Per visualizzare i dati di una tabella in una pagina web, dobbiamo utilizzare l'oggetto ADODB.Recordset

Dettagli

Manuale Utente Albo Pretorio GA

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

Dettagli

Esercitazione 1. Sistemi Informativi T. Versione elettronica: L01.2.DDLDMLbase.pdf

Esercitazione 1. Sistemi Informativi T. Versione elettronica: L01.2.DDLDMLbase.pdf Esercitazione 1 SQL: DDL e DML di base Sistemi Informativi T Versione elettronica: L01.2.DDLDMLbase.pdf Prime cose da fare Fare login sul PC usando lo username di Facoltà Procedura descritta qui: http://ccib.ing.unibo.it/content/account

Dettagli

RELAZIONE SCRITTA RELATIVA AL PROGRAMMA DI GESTIONE SITO E-COMMERCE

RELAZIONE SCRITTA RELATIVA AL PROGRAMMA DI GESTIONE SITO E-COMMERCE RELAZIONE SCRITTA RELATIVA AL PROGRAMMA DI GESTIONE SITO E-COMMERCE CHIARA FERRARI 5I MERCURIO INDICE: 1. TRACCIA DEL PROBLEMA 2. SVILUPPO DEL PROGETTO (ENTITA, ATTRIBUTI) 3. SCHEMA E-R DELLA BASE DEI

Dettagli

SCI Sistema di gestione delle Comunicazioni Interne > MANUALE D USO

SCI Sistema di gestione delle Comunicazioni Interne > MANUALE D USO SCI Sistema di gestione delle Comunicazioni Interne > MANUALE D USO 1 Sommario... Sommario...2 Premessa...3 Panoramica generale sul funzionamento...3 Login...3 Tipologie di utenti e settori...4 Gestione

Dettagli

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. 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

Dettagli

Vi ricordiamo che per qualsiasi problema tecnico o informazione potete contattare info@eduitalia.org oppure Francesco al 3357761103.

Vi ricordiamo che per qualsiasi problema tecnico o informazione potete contattare info@eduitalia.org oppure Francesco al 3357761103. Gentili Associati, in questi ultimi tempi abbiamo lavorato per sviluppare un software capace di far gestire direttamente alle scuole la propria presenza sul sito di Eduitalia. Tramite la registrazione

Dettagli

Informatica Industriale Modello funzionale: Informazione Progettazione concettuale

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 spalazzi@diiga.univpm.it www.diiga.univpm.it/~spalazzi/

Dettagli

MANUALE D USO DELLA PIATTAFORMA ITCMS

MANUALE D USO DELLA PIATTAFORMA ITCMS MANUALE D USO DELLA PIATTAFORMA ITCMS MANULE D USO INDICE 1. INTRODUZIONE... 2 2. ACCEDERE ALLA GESTIONE DEI CONTENUTI... 3 3. GESTIONE DEI CONTENUTI DI TIPO TESTUALE... 4 3.1 Editor... 4 3.2 Import di

Dettagli

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 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/)

Dettagli

Registrazione nuovo utente. Per registrare un nuovo utente cliccare sul link Registrazione

Registrazione nuovo utente. Per registrare un nuovo utente cliccare sul link Registrazione Manuale Gedos 2 Indice Indice... 3 Il Portale... 4 Registrazione nuovo utente... 5 Primo Logon... 8 Registrazione a Gedos... 9 Accesso ai Servizi... 11 Gestione Donatori... 12 Inserimento nuovo donatore...

Dettagli

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. 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

Dettagli

INSERIMENTO DATI BASILARI

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

Dettagli

GUIDA ALL UTILIZZO DEL PORTALE DELLA RETE DEI COMUNI OGLIO PO

GUIDA ALL UTILIZZO DEL PORTALE DELLA RETE DEI COMUNI OGLIO PO GUIDA ALL UTILIZZO DEL PORTALE DELLA RETE DEI COMUNI OGLIO PO Il portale della Rete dei Comuni Oglio Po risponde all url: http://www.comuniogliopo.it Il portale è un contenitore per i siti comunali degli

Dettagli

File, Modifica, Visualizza, Strumenti, Messaggio

File, Modifica, Visualizza, Strumenti, Messaggio Guida installare account in Outlook Express Introduzione Questa guida riguarda di sicuro uno dei programmi maggiormente usati oggi: il client di posta elettronica. Tutti, ormai, siamo abituati a ricevere

Dettagli

Lezione 8. Metadati, Viste e Trigger

Lezione 8. Metadati, Viste e Trigger Lezione 8 Metadati, Viste e Trigger Pag.1 Metadati e catalogo di sistema I metadati sono dati a proposito dei dati (quali tabelle esistono?, quali campi contengono?, quante tuple contengono?, ci sono vincoli

Dettagli

Capitolo 13. Interrogare una base di dati

Capitolo 13. Interrogare una base di dati Capitolo 13 Interrogare una base di dati Il database fisico La ridondanza è una cosa molto, molto, molto brutta Non si devono mai replicare informazioni scrivendole in più posti diversi nel database Per

Dettagli

Corso Sistemi Informativi Avanzati. Programma 30 set 2015. Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

Corso Sistemi Informativi Avanzati. Programma 30 set 2015. Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende. Programma 30 set 205 Installazione Macchina Virtuale Introduzione alla BI nelle Aziende Introduzione SQL Macchina Virtuale È un emulazione di un computer su un altro computer Stesso punto di partenza per

Dettagli

Schede ADI ADP ADEM Prestazioni aggiuntive MMG. - Manuale - Data Solution Provider s.r.l.

Schede ADI ADP ADEM Prestazioni aggiuntive MMG. - Manuale - Data Solution Provider s.r.l. Schede ADI ADP ADEM Prestazioni aggiuntive MMG - Manuale - Data Solution Provider s.r.l. 1. Generalità Per poter accedere all applicazione è necessario aprire Internet Explorer e connettersi al sito di

Dettagli

SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE

SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE S O. S E. B I. P R O D O T T I E S E R V I Z I P E R I B E N I C U L T U R A L I So.Se.Bi. s.r.l. - via dell Artigianato, 9-09122 Cagliari Tel. 070 / 2110311

Dettagli

GERARCHIE RICORSIVE - SQL SERVER 2008

GERARCHIE RICORSIVE - SQL SERVER 2008 GERARCHIE RICORSIVE - SQL SERVER 2008 DISPENSE http://dbgroup.unimo.it/sia/gerarchiericorsive/ L obiettivo è quello di realizzare la tabella di navigazione tramite una query ricorsiva utilizzando SQL SERVER

Dettagli

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti. SH.MedicalStudio Presentazione SH.MedicalStudio è un software per la gestione degli studi medici. Consente di gestire un archivio Pazienti, con tutti i documenti necessari ad avere un quadro clinico completo

Dettagli

Impresa di raccolta e riciclaggio di materiali metallici e di rifiuti.

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

Dettagli

Corso di Basi di Dati A.A. 2014/2015

Corso di Basi di Dati A.A. 2014/2015 Corso di Laurea in Ingegneria Gestionale Sapienza - Università di Roma Corso di Basi di Dati A.A. 2014/2015 Esercitazione su Progettazione Logica Tiziana Catarci, Andrea Marrella Ultimo aggiornamento :

Dettagli

CONTENT MANAGEMENT SY STEM

CONTENT MANAGEMENT SY STEM CONTENT MANAGEMENT SY STEM I NDI CE I NTRODUZI ONE Accesso al CMS 1) CONTENUTI 1.1 I nserimento, modifica e cancellazione dei contenuti 1.2 Sezioni, categorie e sottocategorie 2) UTENTI 3) UP LOAD FILES

Dettagli

Promemoria delle principali funzioni di Gestione utenti e prestiti in SOL

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

Dettagli

SIFORM MANUALE VOUCHER FORMATIVI A DOMANDA AZIENDALE

SIFORM MANUALE VOUCHER FORMATIVI A DOMANDA AZIENDALE SIFORM MANUALE VOUCHER FORMATIVI A DOMANDA AZIENDALE 1 Informazioni generali...2 2 Procedura di autenticazione...2 2.1 Registrazione impresa...3 3 Anagrafica impresa...4 3.1 Impresa...4 3.2 Ricerca persone

Dettagli

Guida docenti all inserimento delle informazioni sugli insegnamenti (programmi, etc.) da web

Guida docenti all inserimento delle informazioni sugli insegnamenti (programmi, etc.) da web Guida docenti all inserimento delle informazioni sugli insegnamenti (programmi, etc.) da web v 1.2 Indice 1. INFORMAZIONI INIZIALI... 3 2. ACCESSO AD ESSE3... 3 3. INSERIMENTO DELLE INFORMAZIONI SUGLI

Dettagli

19. LA PROGRAMMAZIONE LATO SERVER

19. LA PROGRAMMAZIONE LATO SERVER 19. LA PROGRAMMAZIONE LATO SERVER Introduciamo uno pseudocodice lato server che chiameremo Pserv che utilizzeremo come al solito per introdurre le problematiche da affrontare, indipendentemente dagli specifici

Dettagli

Introduzione a MySQL

Introduzione a MySQL Introduzione a MySQL Cinzia Cappiello Alessandro Raffio Politecnico di Milano Prima di iniziare qualche dettaglio su MySQL MySQL è un sistema di gestione di basi di dati relazionali (RDBMS) composto da

Dettagli

GUIDA UTENTE PRIMA NOTA SEMPLICE

GUIDA UTENTE PRIMA NOTA SEMPLICE GUIDA UTENTE PRIMA NOTA SEMPLICE (Vers. 2.0.0) Installazione... 2 Prima esecuzione... 5 Login... 6 Funzionalità... 7 Prima Nota... 8 Registrazione nuovo movimento... 10 Associazione di file all operazione...

Dettagli

Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress

Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress Copyright Andrea Giavara wppratico.com Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress 1. Il pannello amministrativo 2. I dati importanti 3. Creare il database - Cpanel - Plesk

Dettagli

Si formulino le seguenti interrogazioni tramite il linguaggio SQL:

Si formulino le seguenti interrogazioni tramite il linguaggio SQL: Informatica per le Scienze Umane - Corso di Laurea in Lettere Appello del 15.01.2009 - Docente: Massimo Coppola Modello Relazionale e SQL Si consideri la seguente base di dati relativa alla redazione di

Dettagli

Manuale operatore per l utilizzo dell utente di dominio

Manuale operatore per l utilizzo dell utente di dominio Manuale operatore per l utilizzo dell utente di dominio Sommario Manuale operatore per l utilizzo dell utente di dominio... 1 1. Account personale di dominio... 2 2. Account generico di dominio... 2 3.

Dettagli

Progettazione concettuale

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

Dettagli

Procedure memorizzate SQL-2003/PSM. Forma base di PSM. Parametri in PSM

Procedure memorizzate SQL-2003/PSM. Forma base di PSM. Parametri in PSM Procedure memorizzate SQL-2003/PSM Procedure memorizzate nel database Programmazione general-purpose Leggere sezione 8.2 di Garcia-Molina et al. Lucidi derivati da quelli di Jeffrey D. Ullman 1 Una estensione

Dettagli

PROGRAMMA GESTIONE TURNI MANUALE UTENTE. Programma Gestione Turni Manuale Utente versione 1.1

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À

Dettagli

Procedura SMS. Manuale Utente

Procedura SMS. Manuale Utente Procedura SMS Manuale Utente INDICE: 1 ACCESSO... 4 1.1 Messaggio di benvenuto... 4 2 UTENTI...4 2.1 Gestione utenti (utente di Livello 2)... 4 2.1.1 Creazione nuovo utente... 4 2.1.2 Modifica dati utente...

Dettagli

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

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

Dettagli

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7 ESEMPI DI QUERY SQL Dati di esempio... 2 Query su una sola tabella... 2 Esempio 1 (Ordinamento)... 2 Esempio 2 (Scelta di alcune colonne)... 3 Esempio 3 (Condizioni sui dati)... 3 Esempio 4 (Condizioni

Dettagli

Guida all'uso del CMS (Content Management System, Sistema di Gestione dei Contenuti)

Guida all'uso del CMS (Content Management System, Sistema di Gestione dei Contenuti) GUIDE Sa.Sol. Desk: Rete Telematica tra le Associazioni di Volontariato della Sardegna Guida all'uso del CMS (Content Management System, Sistema di Gestione dei Contenuti) Argomento Descrizione Gestione

Dettagli

Definizione di domini

Definizione di domini Definizione di domini Come nei linguaggi ad alto livello (es. C) è possibile definire nuovi domini (tipi di dati) a partire da quelli predefiniti, anche se il costruttore è più limitato. create domain

Dettagli

USARE JOOMLA 1.7/2.5 per gestire il vostro sito.

USARE JOOMLA 1.7/2.5 per gestire il vostro sito. 1 USARE JOOMLA 1.7/2.5 per gestire il vostro sito. 1. Per accedere al pannello di controllo: www.vostrosito.it/administrator 2. Inserire utente e password 3. Il vostro pannello di controllo si presenterà

Dettagli

GUIDA AL SITO DELLE RIPARAZIONI BARWARE SOMMARIO

GUIDA AL SITO DELLE RIPARAZIONI BARWARE SOMMARIO GUIDA AL SITO DELLE RIPARAZIONI BARWARE SOMMARIO Introduzione...2 1. Registrazione al sito delle riparazioni...2 2. Login e Home page...6 3. Assistenza...8 3a. Nuova richiesta di riparazione...8 3b. Lista

Dettagli

MySQL Database Management System

MySQL Database Management System MySQL Database Management System http://www.mysql.com/ DATABASE RELAZIONALI Un database è una collezione strutturata di informazioni. I database sono delle strutture nelle quali è possibile memorizzare

Dettagli

MySQL Database Management System

MySQL Database Management System MySQL Database Management System II parte Progetto gestione booking prenotazioni on-line 1. Progettazione e creazione struttura database che chiameremo booking. 2. Progettazione e creazione di un form

Dettagli

SERVIZIO DI MESSAGGISTICA ALL UTENTE. Manuale per l operatore

SERVIZIO DI MESSAGGISTICA ALL UTENTE. Manuale per l operatore SERVIZIO DI MESSAGGISTICA ALL UTENTE Manuale per l operatore rev. 02 giugno 2010 SOMMARIO COME USARE IL PROGRAMMA PER LA MESSAGGISTICA...3 COSA BISOGNA FARE PRIMA DI INIZIARE A UTILIZZARE IL PROGRAMMA...3

Dettagli

Le Basi di Dati. Le Basi di Dati

Le Basi di Dati. Le Basi di Dati Le Basi di Dati 20/05/02 Prof. Carlo Blundo 1 Le Basi di Dati Le Base di Dati (database) sono un insieme di tabelle di dati strutturate in maniera da favorire la ricerca di informazioni specializzate per

Dettagli

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. 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,

Dettagli

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. *+33(GLWRU GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. Il programma si basa su un architettura di tasti funzionali presenti

Dettagli

APPENDICE LINEE GUIDA PER SPERIMENTAZIONE WEB

APPENDICE LINEE GUIDA PER SPERIMENTAZIONE WEB APPENDICE LINEE GUIDA PER SPERIMENTAZIONE WEB L indagine web ha il vantaggio di eliminare dal processo, rispetto a quello cartaceo, la fase dedicata alla codifica e all inserimento dati. L applicazione

Dettagli

Questa guida è realizzata per spiegarvi e semplificarvi l utilizzo del nostro nuovo sito E Commerce dedicato ad Alternatori e Motorini di avviamento.

Questa guida è realizzata per spiegarvi e semplificarvi l utilizzo del nostro nuovo sito E Commerce dedicato ad Alternatori e Motorini di avviamento. Guida all uso del sito E Commerce Axial Questa guida è realizzata per spiegarvi e semplificarvi l utilizzo del nostro nuovo sito E Commerce dedicato ad Alternatori e Motorini di avviamento. Innanzitutto,

Dettagli

PHP e MySQL. Guida scaricata da www.webstyling.it

PHP e MySQL. Guida scaricata da www.webstyling.it Home -> Manuali & Tutorials -> Guida PHP PHP e MySQL E' possibile realizzare delle applicazioni in php appoggiandosi ad un database, quale ad esempio MySQL. Con le novità introdotte ai tempi di MySQL 4.1

Dettagli

Entrare nel sistema. Clicca su Entra per entrare nel sistema. PAGINA 1

Entrare nel sistema. Clicca su Entra per entrare nel sistema. PAGINA 1 Entrare nel sistema Clicca su Entra per entrare nel sistema. PAGINA 1 Entrare nel sistema Compare il box di login in cui inserire il nome utente e la password fornite tramite posta elettronica. PAGINA

Dettagli

Strutturazione logica dei dati: i file

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

Dettagli

Settaggio impostazioni tema. Cliccando nuovamente su aspetto e poi su personalizza si avrà modo di configurare la struttura dinamica della template.

Settaggio impostazioni tema. Cliccando nuovamente su aspetto e poi su personalizza si avrà modo di configurare la struttura dinamica della template. I TEMI PREDEFINITI (TEMPLATE) Scelta del tema I temi predefiniti di wordpress sono la base di un sito che usa un utente che per ragioni pratiche o per incapacità non può creare un sito usando solo codice

Dettagli

INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti:

INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti: Date le tabelle: Clienti := < id, nome, cognome, indirizzo,città > Ordini := < id, data_ora_ordine, id_prodotto, id_cliente, quantità> Prodotti := < id, nome, descrizione, costo,scorte > INDICI Prevediamo

Dettagli

S.I.N. S.R.L. SISTEMA INFORMATIVO NAZIONALE

S.I.N. S.R.L. SISTEMA INFORMATIVO NAZIONALE Edizione 1.0 Marzo 2010 S.I.N. S.R.L. SISTEMA INFORMATIVO NAZIONALE PER LO SVILUPPO IN AGRICOLTURA Sviluppo Rurale 2007 2013 Misure Strutturali Compilazione domanda di pagamento Manuale Operativo Utente

Dettagli

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo Direzione Centrale per le Politiche dell Immigrazione e dell Asilo Sistema inoltro telematico domande di nulla osta, ricongiungimento e conversioni Manuale utente Versione 2 Data creazione 02/11/2007 12.14.00

Dettagli

Indice generale. Capitolo 3 Introduzione a PHP...43 Sintassi e istruzioni di base... 45 Variabili, operatori e commenti... 47 Array...

Indice generale. Capitolo 3 Introduzione a PHP...43 Sintassi e istruzioni di base... 45 Variabili, operatori e commenti... 47 Array... Prefazione...xiii A chi si rivolge il libro... xiv Struttura e contenuti del libro... xiv Dove trovare aiuto... xvii Le newsletter di SitePoint... xviii I vostri commenti... xviii Convenzioni adottate

Dettagli

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi Capitolo Terzo Primi passi con Microsoft Access Sommario: 1. Aprire e chiudere Microsoft Access. - 2. Aprire un database esistente. - 3. La barra multifunzione di Microsoft Access 2007. - 4. Creare e salvare

Dettagli

COME ELIMINARE PARTI DEL TEMPLATE IN PAGINE SINGOLE

COME ELIMINARE PARTI DEL TEMPLATE IN PAGINE SINGOLE COME ELIMINARE PARTI DEL TEMPLATE IN PAGINE SINGOLE Con questa guida impareremo come eliminare delle singole zone del template che utilizziamo all'interno di una pagina specifica. Questo metodo torna utile

Dettagli

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: storia SQL SQL: concetti base originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene sia il DDL sia il DML ne esistono varie versioni vediamo gli aspetti essenziali,

Dettagli

A tal fine il presente documento si compone di tre distinte sezioni:

A tal fine il presente documento si compone di tre distinte sezioni: Guida on-line all adempimento Questa guida vuole essere un supporto per le pubbliche amministrazioni, nella compilazione e nella successiva pubblicazione dei dati riguardanti i dirigenti sui siti istituzionali

Dettagli

Istruzioni per il pagamento con Carta di Credito

Istruzioni per il pagamento con Carta di Credito Sommario Sommario...1 Istruzioni per il pagamento con Carta di Credito...2 Maschera dei pagamenti... 2 Effettuare la transazione... 4 Risoluzione problemi...7 Problemi legati alla configurazione della

Dettagli

Manuale d uso Event Bureau

Manuale d uso Event Bureau Manuale d uso Event Bureau step by step Agenda Premessa Accesso a Event Bureau Inserimento Nuovo Evento Generico o primo step: anagrafica evento o secondo step: organizzatori o terzo step: relatori interni

Dettagli

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7 Il trattamento dei dati database: il linguaggio SQL seconda parte Prof. Valle D.ssa Folgieri Lez9 15.11.06 Trattamento dati. Database: il

Dettagli

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 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

Dettagli

InfoWeb - Manuale d utilizzo per utente DIPENDENTE

InfoWeb - Manuale d utilizzo per utente DIPENDENTE InfoWeb - Manuale d utilizzo per utente DIPENDENTE Tipologia Titolo Versione Identificativo Data stampa Manuale utente InfoWeb Manuale operativo Edizione 1.2 Manuale_Gestione_INFOWEB_DIPEN DENTE.doc 12/03/2009

Dettagli

Obiettivo dell esercitazione

Obiettivo dell esercitazione Database e Web - Esercitazioni ASP - Andrea Proli proliand@csr.unibo.it Laboratorio di Basi di Dati A.A. 2005/2006 Obiettivo dell esercitazione L obiettivo finale dell esercitazione è quello di creare

Dettagli

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 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

Dettagli

Guida Compilazione Piani di Studio on-line

Guida Compilazione Piani di Studio on-line Guida Compilazione Piani di Studio on-line SIA (Sistemi Informativi d Ateneo) Visualizzazione e presentazione piani di studio ordinamento 509 e 270 Università della Calabria (Unità organizzativa complessa-

Dettagli

INFN Sezione di Perugia Servizio di Calcolo e Reti Fabrizio Gentile Enrico Becchetti

INFN Sezione di Perugia Servizio di Calcolo e Reti Fabrizio Gentile Enrico Becchetti INFN Sezione di Perugia Servizio di Calcolo e Reti Fabrizio Gentile Enrico Becchetti Configurazione del client per l uso dei nuovi sistemi di posta Introduzione; p. 2 Server SMTP; p. 2 Server IMAP/POP;

Dettagli

Transazioni - Parte 1

Transazioni - Parte 1 Basi di dati II Lezione 3 09/10/2008 Caputo Domenico Cosimo, Francesco Pichierri Transazioni - Parte 1 Le transazioni hanno a che fare con la programmabilità delle basi di dati. Prima di trattarle è necessaria

Dettagli

Access. P a r t e p r i m a

Access. P a r t e p r i m a Access P a r t e p r i m a 1 Esempio di gestione di database con MS Access 2 Cosa è Access? Access e un DBMS che permette di progettare e utilizzare DB relazionali Un DB Access e basato sui concetti di

Dettagli