Ejercicio SQL Biblioteca
Ejercicio SQL Biblioteca
Ejercicio SQL Biblioteca
BIBLIOTECA 2014
Este ejercicio, de nivel básico, está pensado para iniciarse en la
BASICO_001_BIBLIOTECA
creación de bases de datos, tablas y las restricciones necesarias
para garantizar la coherencia mediante la ejecución de consultas
mediante lenguaje SQL.
EJERCICIO SQL BIBLIOTECA 2014
1. Índice de contenido
1. Índice de contenido ..............................................................................................................................2
2. Enunciado y ejercicios propuestos........................................................................................................2
2.1.1. Crear la base de datos Biblioteca............................................................................................3
2.1.2. Crear la tabla libros, con sus restricciones a nivel de tabla. ...................................................3
2.1.3. Crear la tabla usuarios, con sus restricciones a nivel de campo. ...........................................3
2.1.4. Crear la tabla préstamos, con sus restricciones a nivel de tabla. ...........................................3
2.1.5. Crear un script que cree la base de datos y las tablas en una sola consulta. Ejecutarla para
comprobar que funciona. ......................................................................................................................3
3. Soluciones .............................................................................................................................................4
3.1.1. Crear la base de datos Biblioteca............................................................................................4
3.1.2. Crear la tabla libros, con sus restricciones a nivel de tabla. ...................................................4
3.1.3. Crear la tabla usuarios, con sus restricciones a nivel de campo. ...........................................4
3.1.4. Crear la tabla préstamos, con sus restricciones a nivel de tabla. ...........................................5
3.1.5. Crear un script que cree la base de datos y las tablas en una sola consulta. Ejecutarla para
comprobar que funciona. ......................................................................................................................5
4. Sobre la licencia .................................................................................... ¡Error! Marcador no definido.
2 de 7 Índice de contenido
EJERCICIO SQL BIBLIOTECA 2014
TABLA USUARIOS
NOMBRE DEL CAMPO TIPO DE CAMPO RESTRICCIONES
codigousuario Int Clave primaria. Autonumérico
nombre Varchar (15) No nulo.
apellido1 Varchar (20) No nulo
apellido2 Varchar (20) Nulo
fechanacimiento Date No nulo
dni Varchar (12) Nulo
domicilio Varchar (50) No nulo
población Varchar (30) Nulo
provincia Varchar (20) Nulo
TABLA PRÉSTAMOS
NOMBRE DEL CAMPO TIPO DE CAMPO RESTRICCIONES
numeropedido Int Autonumérico. Clave primaria
librocodigo Int Obtiene datos de la tabla libros. No nulo
usuariocodigo Int Obtiene los datos de la tabla usuarios. No nulo.
fechaprestamo Datetime2 No nulo. Valor por defecto: fecha actual
fechamaximadevolucion Datetime2 No nulo. Campo calculado.
fechadevolucion Datetime2 No nulo.
Sabiendo que:
a) La biblioteca solo tiene un ejemplar de cada libro.
b) Que el período de préstamo de un libro es de 15 días naturales.
c) Que, tanto el archivo de registros como el de transacciones, tienen un tamaño inicial de 5 MB,
crecen de MB en M y tienen un tamaño máximo de 15 MB.
d) El colegio tiene alumnos de cero a dieciséis años de edad.
usando consultas SQL se pide:
2.1.4. Crear la tabla préstamos, con sus restricciones y relaciones a nivel de tabla y campo.
2.1.5. Crear un script que cree la base de datos y las tablas en una sola consulta. Ejecutarla para
comprobar que funciona.
3. Soluciones
3.1.1. Crear la base de datos Biblioteca.
/*Primero, creamos la base de datos, con un archivo principal y uno de registro de transaciones.
¡Atención a la ruta absoluta de los archivos físicos!*/
4 de 7 www.formacion.jugarenequipo.es Soluciones
EJERCICIO SQL BIBLIOTECA 2014
3.1.4. Crear la tabla préstamos, con sus restricciones y relaciones a nivel de tabla y campo.
USE basico_001_biblioteca
CREATE TABLE prestamos
(numeropedido INT IDENTITY (1,1),
librocodigo INT,
usuariocodigo INT,
--Los valores por defecto, se definen especificando la condición que tiene que cumplir cada
campo--
fechaprestamo DATETIME2 DEFAULT GETDATE(),
fechamaximadevolucion DATETIME2 DEFAULT GETDATE()+15,
fechadevolucion DATETIME2 NULL
CONSTRAINT PK_prestamos PRIMARY KEY (numeropedido),
CONSTRAINT FK_pre_lib FOREIGN KEY (librocodigo) REFERENCES libros (codigolibro) ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT FK_pre_usu FOREIGN KEY (usuariocodigo) REFERENCES usuarios (codigousuario) ON DELETE
CASCADE ON UPDATE CASCADE)
3.1.5. Crear un script que cree la base de datos y las tablas en una sola consulta. Ejecutarla para
comprobar que funciona.
/*Primero, creamos la base de datos, con un archivo principal y uno de registro de transaciones.
¡Atención a la ruta absoluta de los archivos físicos!*/
CREATE DATABASE basico_001_biblioteca
ON PRIMARY
(NAME='basico-001-biblioteca',
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL12.FORMACION\MSSQL\DATA\basico-001-
biblioteca.mdf',
SIZE = 5 MB, MAXSIZE = 15 MB, FILEGROWTH = 1 MB)
log ON
(NAME = 'basico-001-biblioteca_log',
FILENAME ='C:\Program Files\Microsoft SQL Server\MSSQL12.FORMACION\MSSQL\DATA\basico-001-
biblioteca.ldf',
SIZE = 5 MB, MAXSIZE = 15 MB, FILEGROWTH = 1 MB)
COLLATE modern_spanish_ci_as
GO
/*Creación de la tabla "libros" con las restricciones a nivel de tabla. El campo AnoEdicion
almacena solo el año de la edición del libro. Por eso está definido como VARCHAR. El campo códido
libro es el campo único que identifica cada registro*/
--Recuerda que la sintaxis en "nombre_campo" "tipo_campo",--
USE basico_001_biblioteca
CREATE TABLE libros
(codigolibro INT,
titulo VARCHAR(60) NOT NULL,
editorial VARCHAR(25) NULL,
autor VARCHAR(25) NOT NULL,
genero VARCHAR (20) NOT NULL,
paisautor VARCHAR(20) NULL,
numeropaginas INT NOT NULL,
anoedicion VARCHAR(5) NULL,
precio MONEY NULL
--Añadidas aquí, las restricciones se crean a nivel de tabla, no de campo--
--Para crear una clave primaria, definimos el campo--
CONSTRAINT PK_libros PRIMARY KEY (codigolibro),
--Para crear una restricción de tipo check, tenemos que definir el campo y la expresión que tiene
que cumplir el campo--
CONSTRAINT CK_libro_precio CHECK (precio > 0),
CONSTRAINT CK_libro_pagina CHECK (numeropaginas >0))
GO
5 de 7 www.formacion.jugarenequipo.es Soluciones
EJERCICIO SQL BIBLIOTECA 2014
GO
6 de 7 www.formacion.jugarenequipo.es Soluciones
EJERCICIO SQL BIBLIOTECA 2014
4. Sobre la licencia
Este documento, como parte del sitio web www.formacion.jugarenequipo.es, está creado bajo
licencia Creative Commons 4.0.
Usted es libre:
Compartir, distribuir, ejecutar y comunicar públicamente la obra.
Hacer copias derivadas de esta obra.
Bajo las condiciones siguientes:
Licencia Creative Commons: Creative Commons es una corporación sin ánimo de lucro
basada en la idea de que algunas personas pueden no querer ejercer todos los derechos de
propiedad intelectual que les permite la ley. Creemos que hay una demanda no satisfecha de
un modo seguro que permita decir al mundo la frase ‘Algunos derechos reservados’ o incluso
‘Sin derechos reservados’.