1 / 30

Repaso DBD!!! (Es ahora o nunca)

Repaso DBD!!! (Es ahora o nunca). Parte 1. Modelamiento. Trabajo grupal para “soltar la mano”. Genere un MER del siguiente problema de acuerdo a lo que Ud. entiende del tema:

cain
Télécharger la présentation

Repaso DBD!!! (Es ahora o nunca)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. RepasoDBD!!!(Es ahora o nunca)

  2. Parte 1. Modelamiento. • Trabajo grupal para “soltar la mano”. • Genere un MER del siguiente problema de acuerdo a lo que Ud. entiende del tema: • Se requiere registrar la organización territorial de los países (suponiendo que es igual en todos los países) y sus respectivas autoridades. • De cada parte de esta organización se quiere conocer el nombre, población, km cuadrados, capital, entre otros. • De cada autoridad se requiere conocer cargo, nombre y apellido, edad, estudios, fecha en que asumió. • Dentro de las autoridades tomar en cuenta a los Ministros de Estado.

  3. Trabajo individual. Genere un MER que represente lo siguiente: • Una empresa almacena en bodega distintos materiales que utilizan sus trabajadores y que son pedidos directamente por ellos. • Cada material pertenece a un área especifica. Tiene un código propio y necesita del código de su área para reconocerse. Existe el área eléctrica, mecánica, administrativa, etc. • Cada material tiene un proveedor único. De éste se requiere saber el nombre, contacto, dirección. • De cada área se debe conocer código, nombre, ubicación, numero de contacto y persona a cargo. • De cada material debe conocerse el código, nombre, precio, disponibilidad, proveedor, descripción. • Los trabajadores deben reconocerse por un código interno. Además se requiere conocer nombres y apellidos, edad, tipo (contratado u honorarios) y permisos para pedir materiales. Si es 1 puede pedir cualquier material, si es 2 solo materiales eléctricos, si es 3 solo materiales mecánicos, etc. • Un trabajador puede tener o no un área a cargo. • Los trabajadores piden materiales, y se debe registrar la fecha y cantidad de material pedido de acuerdo con sus permisos. • En caso de no utilizarse, el trabajador debe devolver el material, registrándose también la fecha y cantidad de material devuelto. Además se debe registrar el estado en que se devuelve.

  4. Trabajo individual-en parejas. • Genere de forma individual el problema escrito de su proyecto semestral. • Intercambie el texto con su compañero, quien lo revisará (forma escrita) y le objetará en caso de no entenderse bien. • Luego este compañero generará el MER correspondiente, que será revisado por el creador.

  5. Parte 2. Modelo Relacional • Generar el modelo relacional del MER generado para el problema anterior (empresa). • Grupos de a 2 personas.

  6. Parte 2. Modelo Relacional Generar el Modelo Relacional de este MER (individual)

  7. Parte 3. Creación de BD(escrito) • Genere el código SQL de la BD del problema de la empresa: • Tomar en cuenta tablas, claves primarias y foráneas, tipos de datos, check (5). (libre) • En parejas.

  8. Parte 3. Creación de BD(escrito) • Genere el código SQL de la BD del problema anterior: tablas, claves primarias y foráneas, tipos de datos. (individual) • Genere los siguientes check: • Fecha de vencimiento de prestamo debe ser mayor a la fecha de inicio. • El estado de un libro puede ser ‘r’ (reservado),’l’(libre), ‘p’(prestamo). • Los rut deben ser de la forma nn.nnn.nnn-n • Los creditos de los ramos solo pueden ser 3,4 ó 5. • Los correos tengan forma de correo. (nnnn@nnn.nnn)

  9. Parte 4. SQL-Querys • Para el problema de la empresa, en parejas: • Genere el código SQL: • para insertar datos en sus tablas. • para modificar datos de sus tablas. • para eliminar datos de sus tablas. • Genere consultas tomando en cuenta…: Clausulas: Where, order by (ASC, DESC), group by Operadores logicos: and, or, not Operadores de comparación: >, >=…between, like, in, not in Funciones de agregado: AVG, COUNT, MAX, MIN, SUM Predicado: DISTINCT • Escriba la consulta (5) y genere el código SQL. • Individual, tema libre.

  10. Parte 4. SQL-Querys • Para el problema de prestamos, individual: • Genere las siguientes consultas en SQL: • Conocer el nombre de los libros pedidos despues del 21-12-2010, no repetir los nombres. • Conocer el nombre y mail de los profesores que imparten ramos en la carrera de Construccion Civil. • Conocer los nombres de los libros pedidos por alumnos de la carrera de Derecho. • Conocer la cantidad de alumnos por carrera: mostrar la cantidad y el nombre de la carrera. • Conocer al apellido de todas las personas de nombre Luis. • Nombre de los ramos que tienen mas creditos que “ingles basico” • Desplegar el rut y nombre del alumno que nunca han solicitado (préstamo) un libro, los alumnos debe ser de la carrera de informática. • Conocer el nombre de los profesores que hacen ramos que tengan el minimo de creditos registrado.

  11. Conocer el nombre de los libros pedidos despues del 21-12-2010, no repetir los nombres. • Select distinct titulo_l • From prestamo, libro • Where prestamo.codigo_l=libro.codigo_l • And fecha_inic>21/12/2010

  12. Conocer el nombre y mail de los profesores que imparten ramos en la carrera de Construccion Civil. • Select nombre_p, a-mail_p • From profesor, ramo, dicta, carrera • Where profesor.rut_p=ramo.rut_p • And ramo.codigo_r=dicta.codigo_r • And dicta.codigo_c=carrera.codigo_c • And nombre_c=‘Construccion Civil’

  13. Conocer los nombres de los libros pedidos por alumnos de la carrera de Derecho. • Select titulo_l • From libro, prestamo, alumno, carrera • Where libro.codigo_l= prestamo.codigo_l • And prestamo.rut_a=alumno.rut_a • And alumno.codigo_c=carrera.codigo_c • And nombre_c=‘Derecho’

  14. Conocer la cantidad de alumnos por carrera: mostrar la cantidad y el nombre de la carrera. • Select count(rut_a), nombre_c • From alumno, carrera • Where alumno.codigo_c=carrera.codigo_c • Group by nombre_c

  15. Conocer al apellido de todas las personas de nombre Luis. • Select distinct al1.apellido • From persona as al1, persona as al2 • Where al1.nombre=al2.nombre • and al2.nombre='luis'

  16. Nombre de los ramos que tienen mas creditos que “ingles basico” • Select r1.nombre_r • From ramo as r1, ramo as r2 • Where r1.creditos>r2.creditos • and r2.nombre_r=‘ingles basico'

  17. Desplegar el rut y nombre del alumno que nunca han solicitado (préstamo) un libro, los alumnos deben ser de la carrera de informática. • SELECT rut_a, nombre_a • FROM alumno, carrera • WHERE alumno.codigo_c=carrera.codigo_c • And nombre_c ='INF' • AND rut_a NOT IN (SELECT rut_a • FROM prestamo, alumno • Where alumno.rut_a=prestamo.rut_a)

  18. Conocer el nombre de los profesores que hacen ramos que tengan el minimo de creditos registrado. • SELECT nombre_p • FROM profesor, ramo • WHERE profesor.codigo_p=ramo.codigo_p • And creditos=(SELECT min(creditos) • FROM ramo)

  19. Usando alias: • SELECT DISTINCT(ASIG1.Nombre) AS NOMBRE_ASIGNATURA • FROM ASIGNATURA AS ASIG1, ASIGNATURA AS ASIG2 • WHERE ASIG1.Creditos > ASIG2.Creditos • AND ASIG2.Nombre = ‘Seguridad Vial’ • Nombre de las asignaturas que tienen más créditos que "Seguridad Vial". • Usando consultas anidadas: • SELECT Nombre AS NOMBRE_ASIGNATURA • FROM ASIGNATURA • WHERE Creditos > (SELECT Creditos • FROM ASIGNATURA • WHERE Nombre = ‘Seguridad Vial’)

  20. Mostrar el identificador de los alumnos matriculados en cualquier asignatura excepto la "150212" o la "130113"

  21. SELECT IdAlumno • FROM ALUMNO • WHERE IdAlumno NOT IN (SELECT IdAlumno • FROM ALUMNO_ASIGNATURA • WHERE IdAsignatura = "150212" OR IdAsignatura = "130113")

  22. Id de los alumnos matriculados en la asignatura "150212" pero no en la "130113".

  23. SELECT IdAlumno • FROM ALUMNO • WHERE IdAlumno IN (SELECT IdAlumno • FROM ALUMNOASIGNATURA • WHERE IdAsignatura = "150212") • AND IdAlumno NOT IN (SELECT IdAlumno • FROM ALUMNOASIGNATURA • WHERE IdAsignatura = "130113");

  24. Nombre de las asignaturas de la titulación "130110" cuyos costes básicos sobrepasen el coste básico promedio por asignatura en esa titulación.

  25. SELECT Nombre FROM ASIGNATURA • WHERE CosteBasico > (SELECT AVG(CosteBasico) • FROM ASIGNATURA • WHERE IdTitulacion = "130110") • AND IdTitulacion = "130110";

  26. DNI, Nombre y Apellido de los alumnos a los que imparte clases el profesor Jorge Sáenz.

  27. Usando Alias: • SELECT P1.DNI AS DNI, P1.Nombre AS NOMBRE, P1.Apellido AS APELLIDO FROM PERSONA AS P1, PERSONA AS P2, ALUMNO, ALUMNOASIGNATURA, ASIGNATURA, PROFESOR • WHERE P1.DNI = ALUMNO.DNI • AND P2.DNI = PROFESOR.DNI • AND ALUMNO.IdAlumno = ALUMNOASIGNATURA.IdAlumno • AND ALUMNOASIGNATURA.IdAsignatura = ASIGNATURA.IdAsignatura • AND ASIGNATURA.IdProfesor = PROFESOR.IdProfesor • AND P2.Nombre = 'Jorge' • AND P2.Apellido = 'Sáenz‘

  28. Usando consultas anidadas: • SELECT PERSONA.DNI AS DNI, PERSONA.Nombre AS NOMBRE, PERSONA.Apellido AS APELLIDO • FROM ALUMNO, ALUMNOASIGNATURA, ASIGNATURA, PERSONA • WHERE PERSONA.DNI = ALUMNO.DNI • AND ALUMNO.IdAlumno = ALUMNOASIGNATURA.IdAlumno • AND ALUMNOASIGNATURA.IdAsignatura = ASIGNATURA.IdAsignatura • AND ASIGNATURA.IdProfesor IN • (SELECT PROFESOR.IdProfesor • FROM PERSONA, PROFESOR • WHERE PERSONA.DNI = PROFESOR.DNI • AND PERSONA.Nombre = 'Jorge' • AND PERSONA.Apellido = 'Sáenz')

More Related