Advertisement
Nemien

Alguns exercicis no fets a classe (BD FIB)

Nov 2nd, 2017
685
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.93 KB | None | 0 0
  1. 1. Doneu una sentència SQL per obtenir el número i el nom dels empleats que viuen a la mateixa ciutat on està situat el departament on treballen.
  2.  
  3. SELECT e.num_empl, e.nom_empl
  4. FROM empleats e NATURAL INNER JOIN departaments d
  5. WHERE e.ciutat_empl = d.ciutat_dpt;
  6.  
  7. 2. Donar una sentència SQL per obtenir per cada mòdul on hi hagi despatxos, la durada mitjana de les assignacions finalitzades (instantFi diferent de null) a despatxos del mòdul. El resultat ha d'estar ordenat ascendentment pel nom del mòdul.
  8.  
  9. SELECT d.modul, AVG(a.instantFi - a.instantInici) AS mitjana_durada
  10. FROM assignacions a NATURAL INNER JOIN despatxos d
  11. GROUP BY d.modul
  12. ORDER BY d.modul ASC;
  13.  
  14. 3. Doneu una sentència SQL per obtenir els departaments tals que tots els empleats del departament estan assignats a un mateix projecte.
  15. No es vol que surtin a la consulta els departaments que no tenen cap empleat.
  16. Es vol el número, nom i ciutat de cada departament.
  17. El resultat ha d'estar ordenat ascendentment per cadascun dels atributs anteriors.
  18.  
  19. SELECT DISTINCT d.num_dpt, d.nom_dpt, d.ciutat_dpt
  20. FROM departaments d NATURAL INNER JOIN empleats e
  21. WHERE 1 = (SELECT COUNT (DISTINCT e1.num_proj)
  22. FROM empleats e1 NATURAL INNER JOIN projectes p
  23. WHERE e1.num_dpt = d.num_dpt)
  24. ORDER BY d.num_dpt, d.nom_dpt, d.ciutat_dpt ASC;
  25.  
  26. 4. Suposem la base de dades que podeu trobar al fitxer adjunt.
  27. Suposem que aquesta base de dades està en un estat on no hi ha cap fila.
  28. Doneu una seqüència de sentències SQL d'actualització (INSERTs i/o UPDATEs) que violi la integritat d'entitat de la taula Empleats al'intentar duplicar la primary key d'aquesta taula de l'empleat 21.
  29. Les sentències NOMÉS han de violar aquesta restricció.
  30.  
  31. INSERT INTO EMPLEATS VALUES (21,NULL,NULL,NULL,NULL,NULL),(21,NULL,NULL,NULL,NULL,NULL);
  32.  
  33. 5. Doneu una sentència d'inserció de files a la taula cost_ciutat que l'ompli a partir del contingut de la resta de taules de la base de dades. Tingueu en compte el següent: Cal inserir una fila a la taula cost_ciutat per cada ciutat on hi ha un o més departaments, i que cap departament de la ciutat tingui empleats.
  34. Per tant, només s'han d'inserir les ciutats on cap dels departaments situats a la ciutat tinguin empleats.
  35. El valor de l'atribut cost ha de ser 0.
  36.  
  37. INSERT INTO cost_ciutat (
  38. SELECT DISTINCT d.ciutat_dpt, 0
  39. FROM departaments d
  40. WHERE NOT EXISTS (SELECT * FROM departaments d1 NATURAL INNER JOIN empleats e WHERE d.ciutat_dpt = d1.ciutat_dpt));
  41.  
  42. 6. Tenint en compte l'esquema de la BD que s'adjunta, proposeu una sentència de creació de la taula següent:
  43.  
  44. presentacioTFG(idEstudiant, titolTFG, dniDirector, dniPresident, dniVocal, instantPresentacio, nota)
  45.  
  46. Hi ha una fila de la taula per cada treball final de grau (TFG) que estigui pendent de ser presentat o que ja s'hagi presentat.
  47.  
  48. En la creació de la taula cal que tingueu en compte que:
  49. - L'identificador de l'estudiant i el títol del TFG són chars de 100 caràcters.
  50. - Un estudiant només pot presentar un TFG.
  51. - No hi pot haver dos TFG amb el mateix títol.
  52. - Tot TFG ha de tenir un títol.
  53. - El director, el president i el vocal han de ser professors que existeixin a la base de dades.
  54. - El director del TFG no pot estar en el tribunal del TFG (no pot ser ni president, ni vocal).
  55. - El president i el vocal no poden ser el mateix professor.
  56. - L'instant de presentació ha de ser un enter diferent de nul.
  57. - La nota ha de ser un enter entre 0 i 10.
  58. - La nota té valor nul fins que s'ha fet la presentació del TFG.
  59.  
  60. Respecteu els noms i l'ordre en què apareixen les columnes (fins i tot dins la clau o claus que calgui definir). Tots els noms s'han de posar en majúscues/minúscules com surt a l'enunciat.
  61.  
  62. CREATE TABLE presentacioTFG
  63. (idEstudiant CHAR(100),
  64. titolTFG CHAR(100) NOT NULL UNIQUE,
  65. dniDirector CHAR(50) NOT NULL CHECK ((dniDirector <> dniPresident) AND (dniDirector <> dniVocal)),
  66. dniPresident CHAR(50) NOT NULL CHECK (dniPresident <> dniVocal),
  67. dniVocal CHAR(50) NOT NULL CHECK (dniVocal <> dniPresident),
  68. instantPresentacio INTEGER NOT NULL,
  69. nota INTEGER DEFAULT NULL CHECK (nota IN (0,1,2,3,4,5,6,7,8,9,10)),
  70. PRIMARY KEY (idEstudiant),
  71. FOREIGN KEY (dniDirector) REFERENCES professors,
  72. FOREIGN KEY (dniPresident) REFERENCES professors,
  73. FOREIGN KEY (dniVocal) REFERENCES professors);
  74.  
  75. 7. Doneu una seqüència d'operacions en àlgebra relacional per obtenir el nom dels professors que o bé tenen un sou superior a 2500, o bé no tenen cap assignació a un despatx amb superfície inferior a 20.
  76.  
  77. A = professors(sou > 2500)
  78. B = despatxos(superficie < 20)
  79. C = assignacions * B
  80. D = professors * C
  81. E = D[dni,nomProf,telefon,sou]
  82. F = professors - E
  83. G = A _u_ F
  84. R = G[nomProf]
  85.  
  86. 8. Doneu una seqüència d'operacions d'àlgebra relacional per obtenir el nom dels empleats que guanyen més que l'empleat amb num_empl 3.
  87.  
  88. A = empleats(num_empl = 3)
  89. B = A[sou]
  90. C = B{sou -> souB}
  91. D = empleats[sou >souB]C
  92. R = D[nom_empl]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement