Está en la página 1de 12

Instituto Politécnico Nacional

Escuela Superior de Cómputo

Bases de datos

Luna Zamora Juan Antonio

Estrada Vargas Valeria

Castro Mercado Oscar

Ingeniería en Inteligencia Artificial

3BV1

Profesor. Iván Eduardo Blanco Almazán

Proyecto

Fecha de entrega: 26/06/2023


Problema
El negocio de una biblioteca pública requiere una base de datos para administrar los títulos
que posee, así como los miembros existentes, su categoría y la administración de
adquisición de los libros, así como el préstamo y duración de este.

Cada miembro de la biblioteca se le pide al momento de registrarse datos como sus


nombres, apellido paterno, materno, dirección dada por calle, colonia, número interior,
número exterior. código postal, delegación o municipio, edad, fecha de nacimiento, código
de miembro. Así mismo cuando se le pregunta por el tipo de miembro que es, este será
temporal lo cual indica que solo podrá pedir libros y leerlos dentro de la propia biblioteca.
Por otro lado, los miembros oro serán aquellos que ya tengan más de 3 años y que no
presentan más de 2 incidencias dentro de la biblioteca, los privilegios dentro de la
descripción que debe presentarse es que pueden tener hasta 3 libros prestados a domicilio;
el precio de recuperación de esta membresía para tenerla es de $50.00.

Los miembros platinum son aquellos que poseen más de 5 años con membresía en la
biblioteca, estos pueden tener 5 libros prestados y tiene un costo de $100.00. De igual
forma los miembros con membresía básica no pagarán nada.

Para cada préstamo necesitamos saber el miembro que lo solicitó, la fecha de solicitud del
préstamo y si está en stock el o los libros en cuestión. Al regresar un libro si existe una
violación por no entregar a tiempo, se procede a una multa del catálogo que implica una
multa de $100.00.

Dentro de las multas también se tiene que por libro maltratado implica pagar $200 por libro
y por perdida $500.00. y la suspensión de la membresía, por lo que es importante guardar
el estado del libro.

Para administrar los libros que posee se busca que para dar de alta nuevos libros se de a
partir de un código, título, autores y sus apellidos por separado, editorial, categoría, edición,
idioma y la cantidad de libros que se adquirieron.
Diagrama ER
Esquema Relacional
Tabla adminadq:
ID_AdminAdq (uniqueidentifier) [PK]
Nombre (varchar(30))

Tabla Autor:
ID_autor (uniqueidentifier) [PK]
Nombre (varchar(30))
ApellidoP (varchar(30)) [NN]
Pais_origen (varchar(30))
Tabla libro:
ID_libro (uniqueidentifier) [PK]
titulo (varchar(50)) [NN]
ID_autor (uniqueidentifier) [FK]
Fecha_publicacion (date) [NN]
categoria (nvarchar(30))
Existencia (int) [NN]
ID_AdminAdq (uniqueidentifier) [FK]
Tiempo_prestamo (int)
editoria (varchar(30)) [NN]
edicion (int) [NN]
idioma (varchar(30)) [NN]
Tabla Miembro:
ID_miembro (uniqueidentifier) [PK]
Nombre (varchar(30)) [NN]
ApellidoP (varchar(30)) [NN]
ApellidoM (varchar(30))
Calle (varchar(30))
Colonia (varchar(30))
Numeroint (int)
NumeroEx (int)
Codigo_Postal (int)
Municipio (varchar(30))
edad (int)
Fecha_nacimiento (date) [NN]
ID_TipoMiembro (uniqueidentifier) [FK]
Libros_en_posesion (int)
Fecha_registro (date)

Tabla Multas:
ID_Multa (uniqueidentifier) [PK]
monto (int) [NN]
Descripcion (varchar(30))

Tabla Prestamos:
ID_Prestamo (uniqueidentifier) [PK]
ID_miembro (uniqueidentifier) [FK]
Fechaprestamo (date) [NN]
ID_libro (uniqueidentifier) [FK]
Fechalimite (date) [NN]
ID_multa (uniqueidentifier) [FK]

Tabla TipoMiembro:
ID_TipoMiembro (uniqueidentifier) [PK]
nombre (varchar(15)) [NN]
Cantidadprestamospermitidos (int) [NN]
Precio (int) [NN]
Diccionario de datos
Tabla adminadq:
Objetivo de la tabla. Tener registro de los “proveedores” de donde se obtienen los libros
Descripción de los atributos y restricciones. Dentro de los atributos únicamente se
encuentran la llave primaria y el nombre.
Descripción de stored procedures. No
Creación de la tabla mediante SQL.
CREATE TABLE [dbo].[adminadq](
[ID_AdminAdq] [uniqueidentifier] NOT NULL,
[Nombre] [varchar](30) NULL,
PRIMARY KEY CLUSTERED
(
[ID_AdminAdq] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY
= OFF) ON [PRIMARY]
) ON [PRIMARY]

Tabla autor:
Objetivo de la tabla. Guardar los datos de los distintos autores en caso de que se busque
algún ejemplar por el autor suponiendo que el miembro no sepa el nombre del libro en sí o
en caso de que esté interesado en saber más trabajos de un mismo autor.
Descripción de los atributos y restricciones. Se guarda Nombre, Apellido y el país de origen,
además de su llave primaria. Sus restricciones son que no puede haber autores duplicados,
por lo que en el SP se hace esa verificación.
Descripción de stored procedures. [dbo].[Registrar_autor], evita que haya autores
duplicados
Creación de la tabla mediante SQL.
CREATE TABLE [dbo].[Autor](
[ID_autor] [uniqueidentifier] NOT NULL,
[Nombre] [varchar](30) NULL,
[ApellidoP] [varchar](30) NOT NULL,
[Pais_origen] [varchar](30) NULL,
PRIMARY KEY CLUSTERED
(
[ID_autor] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY
= OFF) ON [PRIMARY]
) ON [PRIMARY]

Tabla libro:
Objetivo de la tabla. Almacenar la mayor cantidad de datos relevantes de los libros para
facilitar su búsqueda y registro, además de información relevante para la biblioteca como
existencia para saber si puede ser prestado o no y el tiempo que lleva prestado.
Descripción de los atributos y restricciones. Esta tabla contiene título, autor(FK), una fecha
de publicación, categoría, existencia, idioma, edición y adminadq(FK) y cantidad de
existencias del ejemplar. Sus restricciones son que no puede haber libros duplicados, por lo
que en el SP se hace esa verificación.
Descripción de stored procedures. [dbo].[Registrar_libro] evita que haya libros repetidos
Creación de la tabla mediante SQL.
CREATE TABLE [dbo].[libro](
[ID_libro] [uniqueidentifier] NOT NULL,
[titulo] [varchar](50) NOT NULL,
[ID_autor] [uniqueidentifier] NULL,
[Fecha_publicacion] [date] NOT NULL,
[categoria] [nvarchar](30) NULL,
[Existencia] [int] NOT NULL,
[ID_AdminAdq] [uniqueidentifier] NULL,
[Tiempo_prestamo] [int] NULL,
[editoria] [varchar](30) NOT NULL,
[edicion] [int] NOT NULL,
[idioma] [varchar](30) NOT NULL,
PRIMARY KEY CLUSTERED
(
[ID_libro] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY
= OFF) ON [PRIMARY]
) ON [PRIMARY]

Tabla miembro:
Objetivo de la tabla. Tener un registro de los clientes o miembros de la biblioteca para darles
un servicio más personalizado en base a su antigüedad y comportamiento, además de sus
datos personales y de dirección por motivos de seguridad de los libros.
Descripción de los atributos y restricciones. Se guardan datos personales tales como el
nombre, apellido paterno, materno y edad, y con respecto al domicilio se almacena calle,
numero interior y exterior, colonia, código postal, municipio y el tipo de membresía con la
que cuenta(FK). Sus restricciones van orientadas a cuantas multas tiene y su tipo de
mebresía, dado que en base a eso se toman distintas medidas y son diferentes cantidades
de préstamos.
Descripción de stored procedures. [dbo].[Verificar_incidencias] el cual cuenta el numero de
incidencias que ha tenido un cliente a la hora de devolver un libro, y
[dbo].[Tipo_membresiaF] nos permite saber el tipo de membresia a la que puede ser
acreedor en base a sus incidencias y su longevidad como usuario de la biblioteca
Creación de la tabla mediante SQL.
CREATE TABLE [dbo].[Miembro](
[ID_miembro] [uniqueidentifier] NOT NULL,
[Nombre] [varchar](30) NOT NULL,
[ApellidoP] [varchar](30) NOT NULL,
[ApellidoM] [varchar](30) NULL,
[Calle] [varchar](30) NULL,
[Colonia] [varchar](30) NULL,
[Numeroint] [int] NULL,
[NumeroEx] [int] NULL,
[Codigo_Postal] [int] NULL,
[Municipio] [varchar](30) NULL,
[edad] [int] NULL,
[Fecha_nacimiento] [date] NOT NULL,
[ID_TipoMiembro] [uniqueidentifier] NULL,
[Libros_en_posesion] [int] NULL,
[Fecha_registro] [date] NULL,
PRIMARY KEY CLUSTERED
(
[ID_miembro] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY
= OFF) ON [PRIMARY]
) ON [PRIMARY]

Tabla multas:
Objetivo de la tabla. Evitar repetición de las descripciones dentro de la tabla prestamos,
para así garantizar la normalización, además que en dado caso de que se quiere agregar un
nuevo tipo de falta sea más sencillo que estar agregándola una a una en la tabla de
préstamos.
Descripción de los atributos y restricciones. Se cuenta con ID, monto y descripción
Descripción de stored procedures. No
Creación de la tabla mediante SQL.
CREATE TABLE [dbo].[Multas](
[ID_Multa] [uniqueidentifier] NOT NULL,
[monto] [int] NOT NULL,
[Descripcion] [varchar](30) NULL,
PRIMARY KEY CLUSTERED
(
[ID_Multa] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY
= OFF) ON [PRIMARY]
) ON [PRIMARY]

Tabla Prestamos
Objetivo de la tabla. Guardar información sobre las “transacciones” de la biblioteca con los
prestamos de los libros, para saber que se prestó, a quién, durante cuánto tiempo y el
estado en el que se devuelven los ejemplares.
Descripción de los atributos y restricciones. Se tiene el ID del préstamo en particular, el
miembro al que se le prestó, el libro que se prestó y las fechas de inicio y final, además de
un parámetro modificable del estado en el que se devuelve el libro en cuestión.
Descripción de stored procedures. [dbo].[Hacer_prestamo] este lo que hace es verificar que
de acuerdo al tipo de membresía se cuente los libros que tiene ya prestados y cuantos más
tiene la opción a pedir en caso de que se pueda según el tipo de miembro
Creación de la tabla mediante SQL.
CREATE TABLE [dbo].[Prestamos](
[ID_Prestamo] [uniqueidentifier] NOT NULL,
[ID_miembro] [uniqueidentifier] NULL,
[Fechaprestamo] [date] NOT NULL,
[ID_libro] [uniqueidentifier] NULL,
[Fechalimite] [date] NOT NULL,
[ID_multa] [uniqueidentifier] NULL,
PRIMARY KEY CLUSTERED
(
[ID_Prestamo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY
= OFF) ON [PRIMARY]
) ON [PRIMARY]

Tabla Tipo_miembro:
Objetivo de la tabla. Tener registro de los distintos tipos de membresías con las que cuenta
la biblioteca, además de sus beneficios y costos de cada una junto con sus requisitos.
Descripción de los atributos y restricciones. Se cuenta con un nombre, precio y su cantidad
de préstamos permitidos.
Descripción de stored procedures. No
Creación de la tabla mediante SQL.
CREATE TABLE [dbo].[TipoMiembro](
[ID_TipoMiembro] [uniqueidentifier] NOT NULL,
[nombre] [varchar](15) NOT NULL,
[Cantidadprestamospermitidos] [int] NOT NULL,
[Precio] [int] NOT NULL,
PRIMARY KEY CLUSTERED
(
[ID_TipoMiembro] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY
= OFF) ON [PRIMARY]
) ON [PRIMARY]

Consultas…

También podría gustarte