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:

  1. CREATE TABLE empleats
  2. (NUMERO INTEGER PRIMARY KEY,
  3. NOM VARCHAR(50),
  4. DEPARTAMENT INTEGER,
  5. 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.

  1. 1)
  2. ALTER TABLE empleats
  3. DROP COLUMN DEPARTAMENT
  4.  
  5. 2)
  6. ALTER TABLE empleats
  7. MODIFY NOM VARCHAR(50) NOT NULL
  8.  
  9. 3)
  10. SELECT COUNT(*)
  11. FROM EMPLEATS
  12. WHERE SALARI > 2000
  13.  
  14. 4)
  15. SELECT NUMERO
  16. FROM EMPLEATS
  17. WHERE 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.

Figura

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.

Figura

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:

Figura

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.

Anar a la pàgina següent:
Exercicis