Università degli Studi di Urbino
|
|
- Mariano Lanza
- 8 anni fa
- Visualizzazioni
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 Una biblioteca universitaria acquista testi didattici su indicazione dei professori e cura il prestito dei testi agli studenti. La biblioteca vuole
DettagliEsercizio 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
DettagliGuida 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
DettagliVolumi 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
DettagliBasi 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
DettagliGESTIONE 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,
DettagliBasi 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,
DettagliLA 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
DettagliGESGOLF 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
DettagliRELAZIONE 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
DettagliDBMS (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
DettagliGuida 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
Dettagli1. 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
DettagliPHP 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
DettagliAbilità 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.
DettagliEsercizi 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
DettagliACTIVE 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
DettagliUniversità 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
DettagliPSNET 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
DettagliIntroduzione 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
DettagliAzioni. 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)
DettagliSistemi 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.)
DettagliCorso 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
DettagliOSSIF 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
Dettaglidatabase: 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
DettagliLEGGERE 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
DettagliManuale 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
DettagliEsercitazione 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
DettagliRELAZIONE 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
DettagliSCI 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
Dettagli2.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
DettagliVi 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
DettagliInformatica 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/
DettagliMANUALE 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
DettagliBanca 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/)
DettagliRegistrazione 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...
DettagliCapitolo 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
DettagliINSERIMENTO 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
DettagliGUIDA 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
DettagliFile, 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
DettagliLezione 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
DettagliCapitolo 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
DettagliCorso 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
DettagliSchede 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
DettagliSOSEBI 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
DettagliGERARCHIE 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
DettagliIl 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
DettagliImpresa 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
DettagliCorso 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 :
DettagliCONTENT 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
DettagliPromemoria 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
DettagliSIFORM 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
DettagliGuida 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
Dettagli19. 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
DettagliIntroduzione 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
DettagliGUIDA 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...
DettagliModulo 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
DettagliSi 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
DettagliManuale 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.
DettagliProgettazione 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
DettagliProcedure 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
DettagliPROGRAMMA 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À
DettagliProcedura 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...
DettagliCORSO 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
DettagliESEMPI 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
DettagliGuida 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
DettagliDefinizione 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
DettagliUSARE 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à
DettagliGUIDA 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
DettagliMySQL 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
DettagliMySQL 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
DettagliSERVIZIO 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
DettagliLe 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
DettagliProva 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,
DettagliGHPPEditor è 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
DettagliAPPENDICE 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
DettagliQuesta 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,
DettagliPHP 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
DettagliEntrare 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
DettagliStrutturazione 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
DettagliSettaggio 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
DettagliINDICI. 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
DettagliS.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
DettagliDirezione 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
DettagliIndice 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
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
DettagliCOME 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
DettagliSQL: 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,
DettagliA 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
DettagliIstruzioni 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
DettagliManuale 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
DettagliInsegnamento 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
DettagliCompito 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
DettagliInfoWeb - 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
DettagliObiettivo 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
DettagliUniversità 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
DettagliGuida 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-
DettagliINFN 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;
DettagliTransazioni - 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
DettagliAccess. 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