Activitats
Sentències SQL
L’objectiu d’aquesta activitat és practicar la creació de sentències SQL amb un propòsit concret.
A partir d’una taula creada a la BDD usant la sentència SQL següent:
CREATE TABLE empleats (NUMERO INTEGER PRIMARY KEY, NOM VARCHAR(50), DEPARTAMENT INTEGER, SALARI INTEGER )
Genereu les sentències SQL que permeten dur a terme les operacions que hi ha a continuació. Compteu que cada apartat és independent i parteix sempre de la taula original per al seu plantejament (no es van acumulant els canvis en successius apartats).
Tasques a realitzar:
- Eliminar la columna del departament.
- Evitar que al nom hi hagi valors nuls.
- Comptar quants empleats cobren més de 2000 euros.
- Llistar els números d’empleats del departament 3.
Traducció a taules d'una base de dades relacional
L’objectiu d’aquesta activitat és exclusivament veure com es tradueix un model orientat a objectes d’una certa complexitat a una base de dades relacional.
Traduïu el diagrama estàtic UML següent, que podria ser, per exemple, d’un sistema cartogràfic, a taules d’una base de dades relacional, de manera que sigui possible usar-la per aconseguir-ne la persistència.
Persistència en una base de dades relacional
L’objectiu d’aquesta activitat és veure com es tradueix un model orientat a objectes a una base de dades relacional i ser capaços de generar una aplicació d’una complexitat mitjana en la qual s’accedeix a la base de dades resultant.
Atès el fragment del diagrama estàtic UML d’una aplicació de gestió de la docència d’una institució educativa, genereu a un SGBD amb el conjunt de taules del qual aconseguiu la persistència dels seus objectes mitjançant una base de dades. Tot seguit, desenvolupeu una aplicació totalment gràfica que permeti interactuar-hi. Com a mínim es demana poder:
- Afegir nous estudiants, professors i assignatures.
- Matricular estudiants a assignatures durant un any acadèmic determinat.
- Assignar el coordinador d’una assignatura.
- Realitzar consultes de tota mena.
SQL-Injection
L’objectiu d’aquesta activitat és veure com es pot protegir l’accés a les dades d’una BD de manera que no sigui vulnerable a l’atac de l’SQL-Injection.
Modifiqueu l’exemple de gestió d’encàrrecs de manera que no sigui possible executar amb èxit atacs de l’SQL-Injection.
Gestor d'encàrrecs avançat
L’objectiu d’aquest exercici és, d’una banda, ser capaç d’entendre el codi font preexistent d’una aplicació senzilla i estudiar com es pot ampliar amb el mínim d’esforç i modificacions possibles, reaprofitant al màxim la feina ja feta. D’altra banda, també té com a objectiu practicar la transformació d’un Model en taules d’una BD relacional i com accedir-hi mitjançant JDBC. Finalment, reflexionar sobre com es pot mantenir la independència entre la interfície d’usuari i la manera en què s’aconsegueix la persistència de les dades.
Completeu l’exemple de gestió d’encàrrecs de manera que inclogui, com a mínim, les funcionalitats següents:
- Afegir un producte.
- Llistar tots els productes donats d’alta actualment en la BD.
- Afegir un encàrrec. Un encàrrec indica una data i hora de lliurament i conté una llista de productes a lliurar, i quina quantitat de cada.
- Eliminar totalment un encàrrec.
- Consultar els encàrrecs d’un client determinat.
Els aspectes que no estan concretats en l’enunciat queden a lliure elecció, sempre intentant mantenir un mínim de sentit comú.
El Model del sistema de gestió d’encàrrecs és el següent:
L’aplicació resultant hauria de ser mínimament robusta davant entrades errònies per part de l’usuari (codis que no existeixen, valors invàlids, etc.)
Nota: per indicar dates, cal usar la classe java.util.Calendar
ara bé, per desar una data en una BD cal usar la classe java.sql.Date
, i per desar una hora la classe, java.sql.Time
.