Visualizzazione post con etichetta dBase. Mostra tutti i post
Visualizzazione post con etichetta dBase. Mostra tutti i post

mercoledì 12 maggio 2010

Il CRUD è completo!

Salve a tutti!

Con questo brevissimo intervento comunico che ho finalmente terminato l'implementazione ottimizzata (copyright © Doctor Vel 2010) del CRUD del database libri, in JavaServerPage.

I link per accedere al download dei sorgenti o per aprire direttamente le pagine sul web sono sempre quelli dell'altra volta:
Questo per aprire la pagina principale del CRUD, e Questo per scaricare l'archivio contenente i sorgenti, le dichiarazioni SQL e la pagina dello stile.

Vi cominico che, purtroppo, il servizio offerto da HostingJava è una mezza ciofeca, dunque dopo 2-3 volte che eseguite una operazione tutto si blocca. Che sòla! Mi domando se sia dovuto anche al fatto che la connessione al database non è mai stata chiusa, e anzi ad ogni esecuzione ne viene creata una nuova...cosa ne pensa prof.? Possibile che è questo che intasa tutto?

Comunque, sul localhost funziona tutto perfettamente con il Tomcat. Quindi, se il problema di HostingJava è risolvibile bene, altrimenti pace!

Buonanotte a tutti, a domani!

domenica 9 maggio 2010

Ottimizzazione del CRUD

Buonasera a tutti!

Eccomi di nuovo "presente" sul blog. Quest'oggi, siccome è abbastanza tardi, provvederò a pubblicare sfruttando appieno le potenzialità dei diversi strumenti che ho a disposizione: Hosting Java e questo blog.

Il lavoro che sto per presentarvi consiste nell'implementazione del CRUD del database libri, e fin qui non ci piove. La novità sta nel fatto che le pagine non richiamano altre pagine, bensì richiamano se stesse. In questo modo è possibile diminuire drasticamente:
  • il codice dupilcato
  • il numero di pagine necessarie
  • il tempo di navigazione, visto che bisogna caricare meno pagine
Se poi si considera che è stata effettuata anche la separazione dello stile (in CSS) dal contenuto, ed anche le istruzioni ridondanti (come quella di connessione al database) sono state poste in file separati opportunamente richiamati, allora si ha un'implementazione davvero più leggera e pulita.

Il tutto è pubblicato sul mio spazio web, a questo indirizzo.
Vi ricordo che l'homepage di questo spazio è, invece, questa.

Potete sbizzarrirvi a inserire nel database tutte le informazioni che volete, visto che non c'è bisogno di autenticazione alcuna. L'unica cosa che non ho fatto in tempo ad implementare, però, è la pagina di visualizzazione/modifica dei titoli (che comunque arriverà a breve).
Per chi volesse, è disponibile anche il download dell'archivio contenente tutti i file costituenti questo CRUD, compreso un documento di testo con le dichiarazioni SQL utilizzate per creare il database MySQL al quale si collega il tutto.
L'archivio di cui appena detto è disponibile per il download a questo indirizzo.

Non mi resta che augurare buonanotte a tutti!
Alla prossima!

PS_prof. che ne pensa di questo sistema?

mercoledì 13 gennaio 2010

Preparazione al compito

Buonasera freghi e compagnia bella!

Dopo un bel giretto in moto (ho anche dato dietro, per quasi 10km, a uno che alla fine sentendosi seguito metteva le frecce ma non girava...bellissimo) ... dicevo, dopo il giro in moto mi sono messo a rifare di sana pianta l'esercitazione di martedì (quella che doveva essere il compito) e l'ho finita tutta.

Quello che pubblico ora è nient'altro che la soluzione dei miei esercizi, che spero siano stati fatti bene altrimenti domani mi attacco e tiro forte.

Il database su cui ruotavano gli esercizi è il seguente:



Ecco a seguire le soluzioni degli esercizi, ciascuna preceduta dalla relativa consegna. L'ultimo esercizio, il numero 15, è pubblicato sottoforma di screen, e secondo me (fatto in quel modo) non è proprio perfetto: al prof. il giudizio!



martedì 5 gennaio 2010

Arpìamo l'via!

Buonasera a tutti!

Purtroppo le vacanze sono ormai giunte agli sgoccioli e tra due giorni ci ritroveremo nuovamente a scuola, dunque dopo un ozio totale di due settimane ho dato una riguardata agli ultimi argomenti fatti per non impappinare il cervello all'imminente ripresa delle lezioni.

Colgo l'occasione per ringraziare il prof. Natalizi per gli auguri che or ora ho visto pubblicati sul suo blog, e che ricambio anche se mooooolto in ritardo...

Comunque, veniamo al dunque. Premetto di non aver creato materiale nuovo ma semplicemente guardato e risistemato quello fatto a scuola, che ora pubblicherò anche per permettere a coloro che non hanno le idee chiare di confrontare un po' gli appunti...

Quelle che seguono sono le istruzioni utilizzate per realizzare, attraverso SQLite3, un database di 3 tabelle (studente, materia e voto) volto alla memorizzazione dei voti conseguiti dagli studenti in diverse materie. Dopo aver inserito i dati, sono state effettuate delle estrapolazioni utilizzando le varie istruzioni viste finora a scuola.
Trattandosi di appunti, sono presenti anche parti di teoria relative alle istruzioni e ai database in generale.

sqlite3 voti.db (accede al database voti.db, e se non esiste lo crea)
.tables
.headers on
.mode columns on

█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦

► creo le tabelle
create table studente (id int, nome varchar(30), primary key(id));
create table materia (id int, nome varchar(30), primary key(id));
create table voto(id int, voto int, dataVoto char(10), studente_id int, materia_id int, primary key(id));

► inserisco i dati
insert into materia values(1,"Italiano");
insert into materia values(2,"Storia");
insert into materia values(3,"Inglese");
insert into materia values(4,"Matematica");
insert into materia values(5,"Informatica");
insert into materia values(6,"Elettronica");

insert into studente values(1,"Anselmi");
insert into studente values(2,"Baldassarri");
insert into studente values(3,"Bazzucchi");
insert into studente values(4,"Biancalana");
insert into studente values(5,"Biscarini");
insert into studente values(6,"Cavalierini");
insert into studente values(7,"Ceccarini");
insert into studente values(8,"Lugani");

insert into voto values(1,5,"14-12-2009",1,4);
insert into voto values(2,9,"14-12-2009",6,3);
insert into voto values(3,9,"14-12-2009",1,3);
insert into voto values(4,6,"14-12-2009",7,5);
insert into voto values(5,7,"15-12-2009",4,2);
insert into voto values(6,8,"15-12-2009",3,6);
insert into voto values(7,5,"15-12-2009",2,2);
insert into voto values(8,4,"15-12-2009",5,1);
insert into voto values(9,5,"15-12-2009",5,1);

► estrapolo
SELECT studente.nome,
materia.nome,
voto.voto, voto.dataVoto
FROM materia, studente, voto
WHERE studente.id=voto.studente_id
AND voto.materia_id=materia.id;

Visualizza, senza criteri restrittivi (nel senso che visualizza tutti i dati) il nome dello studente, il nome della materia, il voto conseguito e la data in cui è stato conseguito. In pratica visualizza tutti i voti che sono stati inseriti

♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣

SELECT count(*) AS "numero voti" FROM voto;

Conta il numero di voti che sono stati assegnati in totale, e il risultato lo identifica come una variabile chiamata "numero voti". Il nome della variabile è visualizzato nell'estrapolazione come etichetta della colonna

♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣

SELECT count(studente.nome) AS "numero studenti" FROM studente;

Conta i nomi degli studenti, e il risultato lo identifica come una variabile chiamata "numero studenti"

♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣

SELECT materia.nome, count(*) AS "numero totale voti per materia"
FROM studente, voto, materia
WHERE studente.id=voto.studente_id AND
voto.materia_id=materia.id
GROUP BY materia.nome
HAVING materia.nome="Inglese";

Estrapola, chiamandolo "numero totale voti per materia" e raggruppandolo per nome della materia, quanti voti sono stati assegnati per la materia Inglese

NOTA: la WHERE seleziona delle specifiche RIGHE, mentre la HAVING seleziona un RAGGRUPPAMENTO di righe

♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣

SELECT studente.nome, materia.nome, count(*) AS "numero totale voti per studente per materia"
FROM studente, voto, materia
WHERE studente.id=voto.studente_id AND
voto.materia_id=materia.id
GROUP BY studente.nome, materia.nome;

Estrapola, chiamandolo "numero totale voti per studente per materia", quanti voti sono stati assegnati in totale ad ogni studente ad ogni materia

♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣

SELECT count(*) from
SELECT count(*), studente_id
FROM voto
GROUP BY studente_id
ORDER BY studente_id AS "numero studenti";

In questo caso si è adoperata una SUB-QUERY, ossia una query che usa il risultato di un'altra query come fonte a cui attingere dati per la nuova estrapolazione. Per non utilizzare due operazioni singole, si sarebbe potuto anche creare una VIEW, ossia una nuova tabella contenente i dati dell'estrapolazione. Questa tabella risulta presente poi come tabella insita al database, interrogabile come una qualsiasi altra tabella

CREATE VIEW studenti_voto AS
SELECT count(*), studente_id
FROM voto
GROUP BY studente_id
ORDER BY studente_id AS "numero studenti";

█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦

► cancello i dati da una o più righe ( ISTRUZIONE DELICATA !!! )
DELETE FROM voto WHERE id=8;

NOTA: mettendo "DELETE FROM voto" e basta, cancella TUTTI i dati contenuti nelle righe ma non la struttura della tabella, che si mantiene

► cancella TUTTA la tabella, compresa la struttura
DROP TABLE voto;

► modifica i dati di alcune righe
UPDATE voto SET dataVoto="16-12-2009" WHERE id=9;

█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦█♦

CRUD=create, read, update, delete (creazione, lettura, aggiornamento, eliminazione). È il meccanismo che permette di gestire le tabelle attraverso le quattro operazioni eseguibili su di esse, ed è la minima richiesta di elaborazione in un database operata da un gestore di database

Inoltre, parte dell'elaborazione di questo database l'ho immortalata con uno screen, che pubblico a seguire:



Ultima cosa: come avrete tutti sicuramente notato, le dimensioni della finestra DOS del prompt sono piuttosto piccole e per visualizzare tutto correttamente ci sarebbe la necessità di ingrandirla. Inoltre, nel caso si volessero fare degli screen della finestra stessa, poi in fase di stampa la cartuccia del nero si consumerebbe come il pandoro a Natale dato che lo sfondo è tutto nero...
La soluzione è impostare la finestra DOS modificando le dimensioni ed i vari colori, però poi bisognerebbe farlo ogni qualvolta la si utilizza o, nel migliore dei casi, almeno una volta su ognuno dei computer dove usiamo SQLite. Senza contare il fatto che bisognerebbe sempre stare a cambiare la directory di lavoro...insomma: una perdita di tempo e, a lungo termine, una rottura immane.

Per questo ho realizzato una cosa molto semplice ma che risolve molti problemi: una semplice BAT. Utilizzando semplici comandi, questa BAT:
  1. Apre una finestra DOS di dimensioni accettabili e con un buffer consistente (ovvero non è che, dopo un po' che scorre la finestra, le righe scritte per prime non stanno più in memoria per essere riguardate)
  2. Imposta lo sfondo bianco e il carattere del testo nero, così sarà felice la cartuccia della stampante quando mettiamo su carta gli screen
  3. La directory di lavoro diventa automaticamente quella dove è collocata la BAT. Basterà perciò porla nella stessa cartella di SQLite3 per avere la cartella di lavoro subito pronta
  4. Visualizza il contenuto di questa cartella, il che non serve quasi a nulla però a volte è utile a me...perciò ecco anche questa funzione
Per chi non lo sapesse, per creare una BAT è sufficiente realizzare un nuovo documento di testo con il blocco note, e poi salvarlo con estensione .BAT. Io, ad esempio, l'ho chiamato Finestra.bat ed al suo interno contiene le seguenti istruzioni, di cui potete tranquillamente fare copia e incolla:

MODE CON: COLS=150 LINES=800
COLOR F0
dir
@echo ----------------------------------
@echo Finestra impostata dal Doctor Vel
@echo ----------------------------------
cmd

Ecco, ora che ho pubblicato questa roba mi vado a vedere un film...
Buona serata e buonanotte a tutti! E buona epifania!

domenica 29 novembre 2009

Banca del Tempo - Schema concettuale

Buooooooooonasera a tutti!!

Quello che segue è lo schema concettuale del database oggetto del lavoro di gruppo assegnatoci. Nonostante ne abbia fatte diverse versioni, ancora presento dei dubbi in questo schema, in quanto non mi pare perfettamente funzionale al problema...

A questo proposito spero che parlando con il prof. riuscirò a chiarire ogni perplessità. Intanto, ecco lo schema concettuale, ricordando che il database del mio gruppo è quello riguardante una banca del tempo.




Buona serata, a domani!

mercoledì 25 novembre 2009

Compiti per domani (26 novembre 2009)

Buonasera a tutti!

Ecco qua svolti , freschi freschi, i compiti che il prof. Natalizi ci ha assegnato per domani. Sono pubblicati sottoforma di scansione delle tre pagine del quaderno in cui ho svolto gli esercizi, spero che la scrittura sia leggibile...

Ricordo che gli esercizi assegnati erano dal 9 al 13 (compreso) di pagina 233 del libro...







Buonanotte
, a domani!

giovedì 19 novembre 2009

Lavoro di gruppo (un altro dei tanti...)

Booooongiorno a tutti!

Pubblico, direttamente dalla Multimedia 3, la presentazione al lavoro che il nuovo gruppo formato dal Monta e me si troverà a dover svolgere nelle prossime lezioni. Esso è inerente la realizzazione di un database riguardante una Banca del Tempo, che non sapevamo neanche che esistesse ma nel testo sottostante è spiegato chiaramente in cosa consiste.




Alla prossima...

mercoledì 11 novembre 2009

Teoria sullo schema logico

Bonasera a tutti!

Non avrò fatto una presentazione, ma almeno gli appunti me pare de averli presi bene!



A domani!

domenica 1 novembre 2009

Compiti per martedì 03-11-2009

Salve a tutti!

Questa è la fine di quello che si può definire un fine settimana devastante.

Ecco qui gli unici compiti che ho fatto: quelli di informatica, relativi alla tabelle relazionali.
L'esercizio in questione consisteva nell'analizzare una tabella ed eventualmente modificarla affinchè diventasse una tabella relazionale nella prima forma normale (1NF). Segue la scannerizzazione del foglio con l'esercizio svolto...




E domani ancora pacchia! AAAAAAHHHHH così sì che si ragiona!

mercoledì 21 ottobre 2009

Compiti per il 22-10-2009

Salve a tutti, prima di finire questa giornata pubblico gli esercizi che stamati il prof. Natalizi ci ha assegnato, inerenti i diagrammi entity/relationship.
Probabilmente alcuni esercizi sono sbagliati, quindi a maggior ragione pubblico oggi la soluzione in modo da aver più tempo per poter riflettere sugli errori, in caso il prof. me li facesse notare.

Gli esercizi in questione si trovano a pag. 179 del libro e sono dal numero 7 al 21 (compresi). Screen a seguire...



Buonanotte!

lunedì 19 ottobre 2009

Compiti per domani (20 ottobre 2009)

Buuuuuuuuuuonasera a tutti!

Ecco qui gli esercizi per domani...



E adesso vò a letto che so stracco! A domani!