Universidad Nacional Autónoma de México
Facultad de Filosofía y Letras
Colegio de Bibliotecología y Archivología
Bases de Datos
Proyecto final
Profesor: José Abraham Hernández Ramirez
Alumnos: Erick Martínez Vizcaíno
Francisco Antonio Mier Velázquez
Alejandro Rosales Muñoz
Modelo Lógico
Modelo físico
“Código MySQL de la Base de Datos”
-- La base de datos
CREATE DATABASE IF NOT EXISTS biblioteca;
-- Usar la base de datos
USE biblioteca;
-- la tabla de libros
CREATE TABLE libros (
id_libro INT PRIMARY KEY AUTO_INCREMENT,
titulo VARCHAR(255),
autores VARCHAR(255),
editorial VARCHAR(255),
proveedor VARCHAR(255)
);
-- la tabla de personas que recibieron los libros
CREATE TABLE personas_recibieron (
id_persona INT PRIMARY KEY AUTO_INCREMENT,
nombre VARCHAR(255),
libro_id INT,
FOREIGN KEY (libro_id) REFERENCES libros(id_libro)
);
-- la tabla de catalogadores
CREATE TABLE catalogadores (
id_catalogador INT PRIMARY KEY AUTO_INCREMENT,
nombre VARCHAR(255),
libro_id INT,
FOREIGN KEY (libro_id) REFERENCES libros(id_libro)
);
-- Insertar libros
INSERT INTO libros (titulo, autores, editorial, proveedor) VALUES
('Libro 1', 'Autor 1', 'Editorial A', 'Proveedor X'),
('Libro 2', 'Autor 2', 'Editorial B', 'Proveedor Y'),
--
-- Insertar personas que recibieron libros
INSERT INTO personas_recibieron (nombre, libro_id) VALUES
('Persona 1', 1),
('Persona 2', 1),
-- ...
-- Insertar catalogadores
INSERT INTO catalogadores (nombre, libro_id) VALUES
('Catalogador 1', 1),
('Catalogador 2', 2),
-- ...
-- Crear el usuario con permisos de solo lectura
CREATE USER 'usuario_lectura'@'localhost' IDENTIFIED BY 'contraseña_lectura';
GRANT SELECT ON biblioteca.* TO 'usuario_lectura'@'localhost';
-- Crear el usuario con permisos para modificar datos
CREATE USER 'usuario_modificacion'@'localhost' IDENTIFIED BY
'contraseña_modificacion';
GRANT SELECT, INSERT, UPDATE, DELETE ON biblioteca.* TO
'usuario_modificacion'@'localhost';
-- Crear el usuario con TODOS los permisos
CREATE USER 'usuario_admin'@'localhost' IDENTIFIED BY 'contraseña_admin';
GRANT ALL PRIVILEGES ON biblioteca.* TO 'usuario_admin'@'localhost';
-- Crear vistas aplicando 2 joins
CREATE VIEW vista_persona_catalogador AS
SELECT [Link] AS persona, [Link] AS catalogador, [Link]
FROM personas_recibieron pr
JOIN catalogadores ct ON pr.libro_id = ct.libro_id
JOIN libros l ON pr.libro_id = l.id_libro;
CREATE VIEW vista_libros_editorial AS
SELECT [Link], [Link]
FROM libros l
JOIN catalogadores ct ON l.id_libro = ct.libro_id;
Diccionario de datos
Campo Tamaño Tipo de dato Descripción
id_ibro 20 INT Identificación del libro
id_persona 20 INT Identificación de la persona
id_catalogador 20 INT Identificacion del catalogador
id_proveedor 20 INT Identificación del proveedor
Título 255 VARCHAR Título del libro
Autores 255 VARCHAR Nombre del autor/autores
Editorial 255 VARCHAR Nombre de la editorial
Proveedor 255 VARCHAR Nombre del proveedor
Nombre 255 VARCHAR Nombre del catalogador