Vous êtes sur la page 1sur 20

Universidad Adventista de Centro Amrica

Nombre:
Bryan Roberto Fnez Estrada

Catedrtico:
Roberto Rodrguez

Asignatura:
Bases de Datos

Trabajo:
Proyecto Final: Desarrollo de base de datos de Biblioteca

Fecha:
24/04/2013

Contenido
PLANTEAMIENTO ........................................................................................................................................................................................................... 2 Solucin al Ejercicio ....................................................................................................................................................................................................... 3 Diagrama EER ............................................................................................................................................................................................................. 3 Diagrama de clases .................................................................................................................................................................................................... 4 Diagrama de esquema ............................................................................................................................................................................................... 5 Diagrama de esquema de las relaciones con ejemplos ............................................................................................................................................. 6 Operaciones de Algebra Relacional ........................................................................................................................................................................... 7 Operacin seleccin: .............................................................................................................................................................................................. 7 Operacin Proyeccin: ........................................................................................................................................................................................... 8 Operacin Renombrar: .......................................................................................................................................................................................... 9 Operacin Unin: ................................................................................................................................................................................................. 10 Operacin Interseccin: ....................................................................................................................................................................................... 11 Operacin Resta: .................................................................................................................................................................................................. 12 Producto Cartesiano: ........................................................................................................................................................................................... 13 Equicombinacin o Equireunin: ........................................................................................................................................................................ 15 Reunin Natural: .................................................................................................................................................................................................. 16 Secuencia de Instrucciones para la Creacin de la Base de Datos: ............................................................................................................................. 18 Referencias................................................................................................................................................................................................................... 19

PLANTEAMIENTO Considere la siguiente informacin sobre una biblioteca universitaria, y en base a ella resuelva cada uno de los puntos solicitados ms abajo: La biblioteca cuenta con 16.000 socios, 100.000 ttulos y 250.000 volmenes (media de 2,5 copias de cada libro). Suele mantenerse en prstamo el 10% de los volmenes. Los bibliotecarios se aseguran de que los libros que quieran pedir los socios se encuentren disponibles. Tambin deben conocer cuntas copias de cada libro se encuentran prestadas. Se desea disponer de un catlogo on-line con acceso por ttulo, por autor y tema. Adems en el catlogo se guarda una descripcin del libro, que ocupa desde una lnea a varias pginas. La plantilla de la biblioteca se divide en: jefe de biblioteca, bibliotecarios asociados a departamentos, bibliotecarios que atienden consultas, personal de prstamos y ayudantes de biblioteca. Los libros se pueden prestar por un periodo de 21das. Slo se permite tener en prstamo 5 libros a la vez. Los socios suelen devolver los libros al cabo de 3 o 4 semanas. La mayora de socios sabe que disponen de otra semana de gracia hasta que les llegue a casa una notificacin. Aproximadamente el 5% de socios ha recibido alguna vez una de estas notificaciones. La mayor parte de los libros no devueltos en plazo se devuelven dentro del mes siguiente al vencimiento. Aproximadamente el 5% de los libros no devueltos en plazo no se devuelven nunca. Aquellos socios que solicitan prstamos un mnimo de 10 veces al ao son considerados como los ms activos. El 1% de los socios solicita el 15% de los prstamos. El 10% de los socios solicita el 40% de prstamos. Cerca del 20% de socios son inactivos (nunca solicitan prstamos). Para darse de alta como socio hay que rellenar un formulario donde se pide el N de Carnet, Nombre completo, direccin y nmero de telfono. Con estos datos se confecciona una tarjeta con banda magntica y fotografa con una validez de 4 aos. Un mes antes de caducar la tarjeta se enva una notificacin de renovacin. Los profesores se consideran socios automticamente. Cuando se contrata un nuevo profesor, su informacin se transfiere desde el registro de empleados y su tarjeta de lector se le enva a su direccin del campus. A los profesores se les permite tener libros en prstamo durante periodos de 3 meses y tienen un periodo de gracia de 2 semanas. Las notificaciones de renovacin de profesores se envan a la direccin del campus. Los bibliotecarios mantienen una lista de libros por los que hay inters en su adquisicin pero que no se puede como algunos libros curiosos, descatalogados, perdidos o prestados y no devueltos. La biblioteca tiene algunos libros exentos de prstamo, como los libros de consulta y mapas. Lo mismo sucede con algunas copias de libros. Cada libro se identifica por su ISBN. Dos libros iguales pero en diferente idioma o con distinta encuadernacin tienen diferente ISBN. Lo mismo pasa con las diferentes ediciones de un mismo libro. El sistema de bases de datos debe mantener la informacin propuesta para los socios, los libros, el catlogo y las operaciones de prstamo.

Solucin al Ejercicio
Diagrama EER

Diagrama de clases

Diagrama de esquema

Autor Id Catalogo Id_libro Libro Id Volumen ISBN Planilla Nombre Prestamo Id Socio N_carnet Nombre Direccion Telfono tipo Plazo_prestamo Tiempo_gracia Fecha_renovacion Fecha_prestamo Fecha_devoucion ISBN_volumen tipo Id_libro Estado Titulo Tema Id_autor descripcion Nombre

Diagrama de esquema de las relaciones con ejemplos

Autor
Id 1 2 Nombre P. J. Deitel Rusell Norving

Libro
Id 1 2 Descripcion Libro muy bueno de como programar en java Ingenieria Artificial: todo sobre la ingeniera de robots y mucho mas 3 Titulo Java como programar Ingeniera Artificial Como programar en C++ Tema Programacin Electrnica Programacin Id_autor 1 2 1

Catalogo
Id_libro 1 2

Planilla
Nombre Katy Urrutia Daniel Avila Paty Hernndez Tipo Jefe Personal de prstamo Personal de consulta

Prestamo
Id 1 2 Fecha_prestamo Fecha_devoucion 11/02/2012 1/04/2013 4/03/2012 22/04/2013 ISBN_volumen 898-450-261260-5 978-970-261190-6 Id_socio 100204 100403

Socio
Volumen
ISBN 978-970-26-1190-5 978-970-26-1190-6 898-450-26-1260-5 978-970-21-5520-2 Id_libro 1 1 2 3 Estado Disponible Prestado Extraviado Disponible 10040 3 02245 3 Brian Funez UNADE CA 80822 250 22155 45 Alum no Profe sor 21 dias 3 Meses 5 dias 2 Semanas 1/12/2013 1/12/2015 N_car net Nombr e Direcci on Telfo no 88544 25 tipo Alum no Plazo_pres Tiempo_gr Fecha_renov tamo acia acion 21 dias 5 dias 1/12/2013

10020 Marcos UNADE 4 Prez CA

Edy UNADE Echeni CA que

Operaciones de Algebra Relacional

A continuacin se presentan 4 diferentes solicitudes por cada una de las operaciones del algebra relacional seguida del resultado que esta mostrara en las relaciones y por ltimo la sentencia que se usara en SQL para llevar a cabo la misma accin Operacin seleccin: 1. Descripcin: Seleccionar el autor cuyo id = 1: Algebra:

id=1 (Autor)
Resultado: Id 1 Nombre P.J. Deitel

Implementacin en SQL: SELECT * FROM autor WHERE id=1; 2. Descripcin: Seleccionar los libros cuyo id de escritor sea 1: Algebra:

id_escritor=1 (Libro)
Resultado: Id 1 3 Titulo Tema Id_escritor 1 1

Java como programar Como programar en C++

Programacin Programacin

Implementacin en SQL: SELECT * FROM Libro WHERE id_escritor=1;

3. Descripcin: Seleccionar los volmenes cuyo estado sea disponible: Algebra:

estado=disponible (Volumen)
Resultado:

ISBN 978-970-26-1190-5 978-970-21-5520-2

Id_libro 1 3

Estado Disponible Disponible

Implementacin en SQL: SELECT * FROM Libro WHERE id_escritor=1; 4. Descripcin: Seleccionar los socios cuyo tipo sea = Alumno: Algebra:

tipo=Alumno (Socio)
Resultado:

N_carn et 100204 100403

Nombre Marcos Prez Brian Funez

Telfo no UNADEC 88544 A 25 UNADEC 80822 A 250 Direccion

tipo Alumno Alumno

Plazo_prest Tiempo_gracia amo 21 dias 21 dias 5 dias 5 dias

Fecha_renovacion 1/12/2013 1/12/2013

Implementacin en SQL: SELECT FROM * Socio WHERE tipo=Alumno;

Operacin Proyeccin: 1. Descripcin: Mostar la columna id de la tabla autor: Algebra:

id (Autor)
Resultado: Id 1 2 Implementacin en SQL: SELECT id FROM autor; 2. Descripcin: Mostrar los ttulos de los libros que hay en catalogo: Algebra:

id_escritor=1 (Libro)
Resultado:

Titulo Java como programar Ingeniera Artificial Como programar en C++


Implementacin en SQL: SELECT titulo FROM Libro; 3. Descripcin: Mostrar los nombres los trabajadores en plantilla: Algebra:

nombre (Planilla)
Resultado:

Nombre Katy Urrutia Daniel Avila Paty Hernndez


Implementacin en SQL: SELECT nombre FROM plantilla; 4. Descripcin: Mostar el id, la fecha de devolucin y el ISBN del volumen: Algebra:

id_escritor=1 (Libro)
Resultado:

Id 1 2

Fecha_devoucion 4/03/2012 22/04/2013

ISBN_volumen 898-450-26-1260-5 978-970-26-1190-6

Implementacin en SQL: SELECT id,fecha_devolucion, ISBN_volumen FROM plantilla;

Operacin Renombrar: 1. Descripcin: Mostar la columna id de la tabla autor y asignarlo a R: Algebra:

NuevaR id (Autor)
Resultado: NuevaR Id 1 2 Implementacin en SQL: SELECT id FROM autor as NuevaR; 2. Descripcin: Seleccionar los libros cuyo id de escritor sea 1 y renombrar a copia_libro: Algebra:

Copia_libro id_escritor=1 (Libro)


Resultado: Copia_libro Id 1 3

Titulo

Tema

Id_escritor 1 1

Java como programar Como programar en C++

Programacin Programacin

Implementacin en SQL: SELECT * FROM Libro WHERE id_escritor=1;

3. Descripcin: Mostrar los nombres los trabajadores en plantilla y renombre a copia_tplanilla( trabajadores) : Algebra:

Copia_tplanilla(trabajadores) nombre (Planilla)


Resultado:

trabajadores Katy Urrutia Daniel Avila Paty Hernndez


Implementacin en SQL: SELECT nombre FROM plantilla as copia_tplanilla.trabajadores.; 4. Descripcin: Mostar la columna nombre de la tabla autor y asignarlo a Relacion: Algebra:

Relacin nombre (Autor)


Resultado: Relacion

Nombre P. J. Deitel Rusell Norving


Implementacin en SQL: SELECT id FROM autor as Relacion;

Operacin Unin: 1. Algebra: ( tipo ( nombre=Daniel Avila (Planilla))) ( tipo (Socio))

Nombre Personal de prstamo Alumno Profesor


Implementacin en SQL: SELECT Tipo FROM autor where nombre=Daniel Avila UNION SELECT tipo FROM Socio;

2. Algebra: ( nombre (Autor)) ( nombre (Planilla))

Nombre P. J. Deitel Rusell Norving Katy Urrutia Daniel Avila Paty Hernndez
Implementacin en SQL: SELECT nombre FROM autor UNION SELECT nombre FROM planilla; 3. Algebra: ( nombre (socio)) ( nombre (Planilla))

Nombre Marcos Prez Brian Funez Edy Echenique Katy Urrutia Daniel Avila Paty Hernndez
Implementacin en SQL: SELECT nombre FROM Socio UNION SELECT nombre FROM planilla; 4. Algebra: ( Id (libro)) ( Id_libro (volumen))

Id 1 2 3
Implementacin en SQL: SELECT id FROM libro UNION SELECT id_libro FROM volumen;

10

Operacin Interseccin: 1. Algebra: ( ISBN (Volumen)) ( ISBN_volumen (Prestamo))

ISBN 898-450-26-1260-5 978-970-26-1190-6


Implementacin en SQL: SELECT ISBN FROM Volumen INTERSECT SELECT ISBN_Volumen FROM Prestamo;

2. Algebra: ( nombre (Autor)) ( nombre (Planilla))

Nombre

Implementacin en SQL: SELECT nombre FROM autor INTERSECT SELECT nombre FROM planilla; 3. Algebra: ( id_socio (Prestamo)) ( N_carnet (Socio))

Id_socio 100204 100403


Implementacin en SQL: SELECT id_socio FROM Prestamo INTERSECT SELECT N_carnet FROM Socio; 4. Algebra: ( Id (libro)) ( Id_libro (volumen))

Id 1 2 3
Implementacin en SQL: SELECT id FROM libro INTERSECT SELECT id_libro FROM volumen;

11

Operacin Resta: 1. Algebra: ( ISBN (Volumen)) - ( ISBN_volumen (Prestamo))

ISBN 978-970-26-1190-5 978-970-21-5520-2


Implementacin en SQL: SELECT ISBN FROM Volumen MINUS SELECT ISBN_Volumen FROM Prestamo;

2. Algebra: ( nombre (Autor)) - ( nombre (Planilla))

Nombre P. J. Deitel Rusell Norving


Implementacin en SQL: SELECT nombre FROM autor MINUS SELECT nombre FROM planilla; 3. Algebra: ( id_socio (Prestamo)) - ( N_carnet (Socio))

Id_socio

Implementacin en SQL: SELECT id_socio FROM Prestamo MINUS SELECT N_carnet FROM Socio; 4. Algebra: ( N_carnet (Socio)) - ( id_socio (Prestamo))

N_carnet 022453
Implementacin en SQL: SELECT N_carnet FROM Socio MINUS SELECT id_socio FROM Prestamo;

12

Producto Cartesiano: 1. Algebra: Libro X Autor

Id 1 1 2 2 3

Titulo Java como programar Java como programar Ingeniera Artificial Ingeniera Artificial Como programar en C++ Como programar en C++

Tema Programacin Programacin Electrnica Electrnica Programacin

Id_autor 1 1 2 2 1

Id 1 2 1 2 1

Nombre P. J. Deitel Rusell Norving P. J. Deitel Rusell Norving P. J. Deitel Rusell Norving

Programacin

Implementacin en SQL: SELECT * FROM Libro,Autor

2. Algebra: Libro X Catalogo

Id 1

Titulo Java como programar

Tema Programacin

Id_autor 1

Id_libro 1

Descripcion Libro muy bueno de como programar en java Ingenieria Artificial: todo sobre la ingeniera de robots y mucho mas Libro muy bueno de como programar en java Ingenieria Artificial: todo sobre la ingeniera de robots y mucho mas Libro muy bueno de como programar en java Ingenieria Artificial: todo sobre la ingeniera de robots y mucho mas

Java como programar

Programacin

Ingeniera Artificial

Electrnica

Ingeniera Artificial

Electrnica

Como programar en C++

Programacin

Como programar en C++

Programacin

Implementacin en SQL: SELECT * FROM Libro,catalogo


13

3. Algebra:

Estado, ISBN (Volumen) X (Prestamo)

ISBN 978970-261190-5 978970-261190-6 898450-261260-5 978970-215520-2 978970-261190-5 978970-261190-6 898450-261260-5 978970-215520-2

Estado Disponible

Id 1

Fecha_prestamo Fecha_devoucion ISBN_volumen Id_socio 11/02/2012 4/03/2012 898-450-261260-5 898-450-261260-5 898-450-261260-5 898-450-261260-5 978-970-261190-6 978-970-261190-6 978-970-261190-6 978-970-261190-6 100204

Prestado

11/02/2012

4/03/2012

100204

Extraviado

11/02/2012

4/03/2012

100204

Disponible

11/02/2012

4/03/2012

100204

Disponible

1/04/2013

22/04/2013

100403

Prestado

1/04/2013

22/04/2013

100403

Extraviado

1/04/2013

22/04/2013

100403

Disponible

1/04/2013

22/04/2013

100403

Implementacin en SQL: SELECT * FROM (SELECT isbn, estado FROM Volumen), Prestamo;

4. Algebra: ( id=1 (libro)) X ( id_libro=1 (Volumen))

Id 1

Titulo Java como programar Java como programar

Tema Programacin

Id_autor 1

ISBN 978-97026-11905 978-97026-11906

Id_libro 1

Estado Disponible

Programacin

Prestado

Implementacin en SQL: SELECT * FROM Libro where id=1 , Volumen where id_libro=1;

14

Equicombinacin o Equireunin: 1. Algebra: Libro


id_autor= id

Autor

Id 1 2 3

Titulo Java como programar Ingeniera Artificial Como programar en C++

Tema Programacin Electrnica Programacin

Id_autor 1 2 1

Id 1 2 1

Nombre P. J. Deitel Rusell Norving P. J. Deitel

Implementacin en SQL: SELECT * FROM Libro AS P,Autor AS D WHERE p.id= d.id_autor

2. Algebra: Libro
idr= id_libro

Catalogo

Id 1

Titulo Java como programar

Tema Programacin

Id_autor 1

Id_libro 1

Descripcion Libro muy bueno de como programar en java Ingenieria Artificial: todo sobre la ingeniera de robots y mucho mas

Ingeniera Artificial

Electrnica

Implementacin en SQL: SELECT * FROM Libro AS P,Catalogo AS D WHERE p.id= d.id_libro 3. Algebra:

Estado, ISBN (Volumen)

ISBM= ISBM_Volumen (Prestamo)

ISBN

Estado

Id 1

Fecha_prestamo Fecha_devoucion ISBN_volumen Id_socio 11/02/2012 4/03/2012 898-450-261260-5 978-970-261190-6 100204

898450-26- Extraviado 1260-5 978970-26- Prestado 1190-6


Implementacin en SQL:

1/04/2013

22/04/2013

100403

SELECT * FROM Volumen AS P (P.isbm,P.estado), Prestamo AS D WHERE p.id= d.id_libro;

15

4. Algebra: Libro
id=id_libro

Volumen

Id 1

Titulo Java como programar Java como programar

Tema Programacin

Id_autor 1

ISBN 978-97026-11905 978-97026-11906

Id_libro 1

Estado Disponible

Programacin

Prestado

Implementacin en SQL: SELECT * FROM Libro AS L, Volumen AS V WHERE L.id = V.id_libro

Reunin Natural: 1. Algebra: R1 (id_libro, titulo, tema, id)

id,titulo,tema,id_libro (libro)

R2 (id, nombre_Autor) id, nombre (Autor) R3 R1 * Autor

Id_libro 1 2 3

Titulo Java como programar Ingeniera Artificial Como programar en C++

Tema Programacin Electrnica Programacin

Id 1 2 1

Nombre_autor P. J. Deitel Rusell Norving P. J. Deitel

2. Algebra: R1 (id, descripcion ) id_libro, Descripcion (Catalogo) R2 Libro * R1

Id 1

Titulo Java como programar

Tema Programacin

Id_autor 1

Descripcion Libro muy bueno de como programar en java Ingenieria Artificial: todo sobre la ingeniera de robots y mucho mas

Ingeniera Artificial

Electrnica

16

3. Algebra: R1

( Estado, ISBN (Volumen)) id, fecha_prestamo, fecha_devolucion,ISBN_volumen, Id_socio (Prestamo)

R2 (id, fecha_prestamo, fecha_devolucion,ISBN, Id_socio) R3 R1*R2

ISBN 898-450-261260-5 978-970-261190-6

Estado Extraviado Prestado

Id 1 2

Fecha_prestamo 11/02/2012 1/04/2013

Fecha_devoucion 4/03/2012 22/04/2013

Id_socio 100204 100403

4. Algebra: R1 (id, ISBN, estado) R3 Libro * R1

id_libro, ISBN, Estado (Volumen)

Id 1

Titulo Java como programar Java como programar

Tema Programacin

Id_autor 1

ISBN 978-97026-11905 978-97026-11906

Estado Disponible

Programacin

Prestado

17

Secuencia de Instrucciones para la Creacin de la Base de Datos:


-- phpMyAdmin SQL Dump -- version 3.3.9 -- http://www.phpmyadmin.net -- Versin del servidor: 5.5.8 -- Versin de PHP: 5.3.5 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; --- Base de datos: `Nombre de base de datos` ---- Estructura de tabla para la tabla `autor` -CREATE TABLE IF NOT EXISTS `autor` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nombre` varchar(200) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; -- --------------------------------------------------------------- Estructura de tabla para la tabla `catalogo` -CREATE TABLE IF NOT EXISTS `catalogo` ( `libro_id` int(11) NOT NULL, `descripcion` text NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- ---------------------------------------------------------- Estructura de tabla para la tabla `libro` -CREATE TABLE IF NOT EXISTS `libro` ( `id` int(11) NOT NULL AUTO_INCREMENT, `titulo` varchar(100) NOT NULL, `tema` varchar(200) NOT NULL, `autor_id` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; -- ---------------------------------------------------------- Estructura de tabla para la tabla `planilla` -CREATE TABLE IF NOT EXISTS `planilla` ( `nombre` varchar(200) NOT NULL, `tipo` varchar(200) NOT NULL, PRIMARY KEY (`nombre`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- ---------------------------------------------------------- Estructura de tabla para la tabla `prestamo` -CREATE TABLE IF NOT EXISTS `prestamo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `fecha_prestamo` date NOT NULL, `fecha_devolucion` date NOT NULL, `ISBN_volumen` varchar(16) NOT NULL, `socio_id` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- ---------------------------------------------------------- Estructura de tabla para la tabla `socio` -CREATE TABLE IF NOT EXISTS `socio` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nombre` varchar(200) NOT NULL, `direccion` text NOT NULL, `telefono` varchar(50) NOT NULL, `tipo` varchar(50) NOT NULL, `plazo_prestamo` varchar(50) NOT NULL, `tiempo_gracia` varchar(50) NOT NULL, `Fecha_renovacion` date NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; -- ---------------------------------------------------------- Estructura de tabla para la tabla `volumen` -CREATE TABLE IF NOT EXISTS `volumen` ( `isbn` varchar(16) NOT NULL, `libro_id` int(11) NOT NULL, `estado` varchar(50) NOT NULL, PRIMARY KEY (`isbn`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

18

Referencias 1keydata.com. (07 de 02 de 1999). 1keydata.com. Obtenido de http://www.1keydata.com/es/sql/sql-intersect.php 1keydata.com. (08 de 02 de 1999). 1keydata.com. Obtenido de http://www.1keydata.com/es/sql/sql-minus.php 1keydata.com. (12 de 02 de 1999). 1keydata.com. Obtenido de http://www.1keydata.com/es/sql/sql-union.php deletesql.com. (01 de 2005). deletesql.com. Obtenido de http://deletesql.com/viewtopic.php?f=5&t=18 Navathe, R. E. (2007). Fundamentos de Sistemas de Bases de Datos. Madrid: PEARSON EDUCACION S.A. Sicilia, M. A. (19 de 11 de 2008). cnx.org. Obtenido de http://cnx.org/content/m18351/latest/

19

Vous aimerez peut-être aussi