UNIVERSIDAD PRIVADA ANTENOR ORREGO
FACULTAD DE INGENIERÍA
ESCUELA PROFESIONAL DE INGENIERÍA DE
COMPUTACIÓN Y SISTEMAS
CURSO:
Sistema de Gestión de Base de datos
DOCENTE:
Heber Abanto
GRUPO 8
● Ascón Cabrera Christian Daniel
● Castillo Plasencia Luis Angel
● Macedo Neyra Sergio
● Morán Zapata Oscar
● Tisnado Guevara Anthony
TRUJILLO – 2023
DISEÑO DEL SISTEMA DE GESTIÓN DE LA BASE DE DATOS PARA “EL
HORNITO PIZZERIA”
1. Modelo de Base de datos
1.1. Organización
Una breve información de la cual se va a modelar el proceso.
"El Hornito Pizzería" es un restaurante de pizzas ubicado en el corazón de
Trujillo, Perú. Se especializa en ofrecer una variedad de deliciosas pizzas
preparadas con ingredientes frescos y de alta calidad. ofrece un servicio de
entrega a domicilio rápido y confiable para satisfacer las necesidades de sus
clientes. El proceso de delivery se enfoca en llevar las deliciosas pizzas
directamente a la puerta de los clientes con eficiencia y calidad.
1.2. Descripción del proceso
El proceso de entrega de "El Hornito Pizzería" se desarrolla de la siguiente
manera:
Toma de Pedidos: Los clientes pueden realizar pedidos de pizzas llamando al
restaurante o a través de la plataforma en línea. El restaurante cuenta con un
menú variado que incluye diferentes tipos de pizzas, tamaños y opciones
personalizadas.
Preparación de Pedidos: Una vez que se recibe un pedido, el equipo de cocina
se pone en acción. Los chefs expertos preparan las pizzas seleccionadas,
asegurándose de usar ingredientes frescos y de alta calidad para garantizar el
mejor sabor.
Empaque de Pedidos: Después de preparar las pizzas, se empacan de
manera segura en cajas especiales para la entrega. Se incluyen todos los
condimentos y utensilios necesarios, como servilletas y cubiertos.
Asignación de Repartidores: El restaurante asigna a un repartidor de su
equipo para entregar el pedido. Los repartidores están equipados con
sistemas de navegación y comunicación para garantizar la entrega eficiente.
Entrega Rápida: El repartidor se dirige a la dirección de entrega proporcionada
por el cliente. El restaurante se esfuerza por cumplir con los tiempos de
entrega prometidos y garantizar que las pizzas lleguen calientes y en su mejor
estado.
Recopilación de Comentarios: Después de la entrega, el restaurante recopila
comentarios y opiniones de los clientes para mejorar continuamente la calidad
del servicio y los productos.
1.3. Modelo de BD
1.4. Estructura de las tablas
2. Gestión de memoria
Fixed 9277896 Espacio fijo reservado para estructuras y procesos
size bytes internos esenciales del DBMS. Este espacio no varía
con la carga de trabajo.
Variable 956301312 Espacio variable utilizado para almacenar datos
size bytes temporales y estructuras de usuario, como la Program
Global Area (PGA) de las sesiones de usuario.
Database Buffers 4143972352 Espacio dedicado a la memoria caché de la base de
bytes datos, que almacena bloques de datos recuperados
desde el almacenamiento en disco. Ayuda a acelerar
las operaciones de lectura y escritura en la base de
datos.
Redo Buffers 7495680 Espacio utilizado para almacenar registros de
bytes cambios (redos) que representan cambios en los datos
de la base de datos. Los redos se utilizan para la
recuperación en caso de fallas y para la replicación
de datos.
3. Gestión de Archivos de la BS
3.1. Archivos lógicos
Tipo Nombre Tamaño
TABLESPACE SYSAUX 524296192 bytes
TABLESPACE SYSTEM 933240832 bytes
TABLESPACE UNDOTBS1 68165632 bytes
TABLESPACE USERS 5251072 bytes
TABLESPACE TEMP 33562624 bytes
3.2. Archivos Físicos
4. Gestión de Objetos de la BS
Tipo Nombre Propietario Sentencia SQL
TABLE Cliente Sys CREATE TABLE Cliente (
id_cliente INT PRIMARY KEY,
Nombre VARCHAR(30),
Apellido VARCHAR(30),
Direccion VARCHAR(100),
Num_Telefono VARCHAR(9),
e-mail VARCHAR(50)
);
TABLE Entrega Sys CREATE TABLE Entrega (
id_entrega INT PRIMARY KEY,
Estado_entrega VARCHAR(20),
Direccion_Entrega VARCHAR(50),
Fecha-hora_estimada DATE,
Repartidor_id_repartidor INT,
);
TABLE Pedido Sys CREATE TABLE Pedido (
id_repartidor INT PRIMARY KEY,
Nombre VARCHAR(50),
Apellido VARCHAR(50),
Numb_telefono VARCHAR(9),
Disponibilidad VARCHAR(30)
);
TABLE RepartidoR Sys CREATE TABLE Repartidor (
id_repartidor INT PRIMARY KEY,
Nombre VARCHAR(50),
Apellido VARCHAR(50),
Num_telefono VARCHAR(9),
Disponibilidad VARCHAR(30),
);
TABLE Detalle_pedidos Sys CREATE TABLE Detalle_pedidos (
cantidad INT PRIMARY KEY,
precio NUMBER,
pedido_id_pedido INT,
Pizza_id_pizza INT,
);
TABLE Pizza Sys CREATE TABLE Pizza (
id_Pizza INT PRIMARY KEY,
Nombre VARCHAR(50),
Ingredientes VARCHAR(50),
Precio NUMBER,
Tamaño VARCHAR(20),
);
5. Gestión de control de concurrencia
● Bloqueos de Nivel de Fila
Esta estrategia implica aplicar bloqueos a filas individuales de datos en lugar de
a toda la tabla. Es crucial en un sistema de delivery porque permite que
múltiples usuarios interactúen con el sistema simultáneamente sin interferir
entre sí. Por ejemplo, mientras un repartidor actualiza el estado de una entrega,
otro podría estar añadiendo un nuevo pedido sin esperar a que el primero
termine.
Implementación:
Al actualizar el estado de un pedido, el sistema bloquea solo la fila específica
en la base de datos.
Los demás usuarios pueden leer y escribir en otras filas de la tabla de pedidos
sin interrupción.
● Transacciones con Propiedades ACID
Las transacciones ACID garantizan que todas las operaciones de base de
datos sean procesadas de manera confiable. En el contexto de una pizzería,
esto significa que, si un cliente realiza un pedido, todas las operaciones
relacionadas con ese pedido (como actualizar el inventario y registrar la
transacción de pago) deben completarse con éxito o, en caso de error, todas
deben revertirse.
Implementación:
Iniciar una transacción al comenzar un pedido.
Realizar todas las actualizaciones necesarias (inventario, estado del pedido,
pago).
Comprometer la transacción solo si todas las operaciones son exitosas.
En caso de error, revertir todas las operaciones para mantener la integridad de
los datos.
● Gestión de Deadlocks
Los interbloqueos pueden ocurrir cuando dos transacciones esperan que la otra
libere recursos. La detección y resolución de interbloqueos es esencial para
prevenir la inactividad en un sistema de delivery.
Implementación:
El sistema monitorea constantemente las transacciones en busca de posibles
deadlocks.
Si se detecta un interbloqueo, el sistema interviene abortando una de las
transacciones y liberando sus recursos.
La transacción abortada puede reintentarse automáticamente.
● Niveles de Aislamiento de Transacciones
El nivel de aislamiento de una transacción define en qué medida una
transacción debe estar aislada de las modificaciones hechas por otras
transacciones. En un sistema de delivery, un nivel de aislamiento más bajo
puede mejorar el rendimiento pero incrementa el riesgo de leer datos no
confirmados (como un pedido aún no finalizado).
Implementación:
Configurar el nivel de aislamiento adecuado para prevenir que las
transacciones vean cambios no confirmados.
Ajustar el nivel de aislamiento según las necesidades específicas de
rendimiento y consistencia del sistema.
6. Gestión de seguridad
6.1. Usuario
6.1.1. Definición de método de autenticación
Autenticación Basada en Contraseña
Cada usuario tiene asignado un nombre de usuario único y una contraseña
personal que debe proporcionar para acceder al sistema. Las contraseñas se
almacenan de manera segura en la base de datos.
6.1.2. Definición de políticas de contraseña
Longitud Mínima: Las contraseñas deben tener al menos 8 caracteres para
proporcionar un nivel básico de seguridad contra intentos de adivinación.
Complejidad: Las contraseñas deben incluir una combinación de letras
mayúsculas y minúsculas, números y caracteres especiales para aumentar la
complejidad y resistir ataques de fuerza bruta.
Prohibición de Palabras Comunes: Se deben evitar palabras que se
encuentren en el diccionario, nombres propios, y secuencias numéricas
simples como "1234", que son fáciles de adivinar.
Intentos de Inicio de Sesión: Limitar los intentos fallidos a 5 para
minimizar el riesgo de que un atacante adivine la contraseña, seguido de un
bloqueo temporal de la cuenta para disuadir los intentos continuos.
6.1.3. Definición de la clase usuario
Encargado de la gestión técnica y de seguridad de la base de
ADMINISTRADO datos. Tiene acceso total y puede realizar operaciones de
R mantenimiento y actualización del sistema.
Responsable de la entrega de pedidos. Requiere acceso
REPARTIDOR limitado a la base de datos para consultar y actualizar el
estado de las entregas.
Gestiona los pedidos de los clientes. Necesita acceso para
ATENCIÓN AL registrar nuevos pedidos y consultar la información del cliente
CLIENTE y el estado de los pedidos.
6.1.4. Lista de usuarios
Nombre de
Rol Asignado Descripción de Responsabilidades
Usuario
Gestiona la base de datos, mantiene la seguridad del sistema y realiza
Anthony Administrador
backups.
Encargado de la entrega de pedidos y de la actualización del estado de
Luis Repartidor
entregas.
Encargado de la entrega de pedidos y de la actualización del estado de
Oscar Repartidor
entregas.
Atención al
Christian Maneja la recepción de pedidos y responde a consultas de clientes.
Cliente
Atención al Procesa pedidos online y actualiza la base de datos con información de
Sergio
Cliente clientes.
6.2. Perfiles
6.2.1. Definición de perfiles
EMPLEADOS: Este perfil podrá limitar las acciones de las cuentas
repartidores y de atención al cliente.
6.2.2. Asignación de recursos a los perfiles
Recurso Descripción Valor
Máximo número de sesiones
SESSIONS_PER_USER 5
simultáneas permitidas.
Tiempo total de CPU que una
CPU_PER_SESSION UNLIMITED
sesión puede consumir.
Tiempo máximo (en minutos)
CONNECT_TIME que un usuario puede estar 480
conectado por sesión.
Tiempo máximo (en minutos)
IDLE_TIME de inactividad antes de 30
desconectar la sesión.
Número de días antes de que la
PASSWORD_LIFE_TIME contraseña expire y necesite 90
ser cambiada.
Número de días para cambiar
PASSWORD_GRACE_TI
la contraseña tras su 10
ME
expiración.
Número mínimo de días antes
PASSWORD_REUSE_TI
de que una contraseña pueda 180
ME
ser reutilizada.
Número de contraseñas únicas
PASSWORD_REUSE_M
que se deben usar antes de 5
AX
reutilizar una.
Intentos de inicio de sesión
FAILED_LOGIN_ATTEM
fallidos antes de que la cuenta 3
PTS
se bloquee.
6.2.3. Asignación de usuario a perfiles
USUARIO Perfil_AtenciónCliente Perfil_Repartidor
Luis X
Oscar X
Christian X
Sergio X
6.3. Definición de roles
6.3.1. Definición de roles
● Administrador
● Repartidor
● Atención al Cliente
6.3.2. Definición de tareas
ROL TAREAS
● Creación, modificación y eliminación de tablas y vistas.
● Gestión de usuarios y asignación de roles.
● Ejecución de procedimientos almacenados y funciones.
● Acceso completo a todos los datos en la base de datos.
Administrador ● Configuración y mantenimiento del sistema de base de
datos.
● Realización de copias de seguridad y restauración de la
base de datos.
● Supervisión del rendimiento y optimización de consultas.
● Consultar la lista de pedidos asignados para la entrega.
● Actualizar el estado de los pedidos a "en camino",
"entregado" o "cancelado".
Repartidor ● Registrar la hora de entrega y recoger confirmaciones de
los clientes.
● Reportar cualquier problema o retraso en la entrega de
pedidos.
● Registrar nuevos pedidos de clientes en la base de datos.
● Modificar pedidos existentes en caso de cambios o
cancelaciones.
● Consultar el estado de los pedidos para informar a los
Atención al Cliente
clientes.
● Gestionar la información de los clientes, incluyendo la
actualización de datos de contacto y preferencias.
USUARIO Rol_admin Rol_AtencionCliente Rol_Repartidor
Anthony X
Luis X
Oscar X
Christian X
Sergio X
6.3.3. Asignación de usuario a roles
6.4. Objetos y privilegios
6.4.1. Tipos de privilegios
Tipo de Privilegio Descripción
CREATE SESSION Permite al usuario conectarse a la base de datos.
CREATE TABLE Permite al usuario crear tablas en su propio esquema.
CREATE VIEW Permite al usuario crear vistas en su propio esquema.
CREATE Permite al usuario crear procedimientos almacenados y
PROCEDURE funciones.
SELECT Permite al usuario leer datos de una tabla o vista.
INSERT Permite al usuario añadir filas a una tabla o vista.
UPDATE Permite al usuario modificar filas en una tabla o vista.
DELETE Permite al usuario eliminar filas de una tabla o vista.
ALTER TABLE Permite al usuario modificar la estructura de una tabla
existente.
DROP TABLE Permite al usuario eliminar tablas de su propio esquema.
EXECUTE Permite al usuario ejecutar procedimientos almacenados y
funciones.
GRANT OPTION Permite al usuario otorgar privilegios que posee a otros
usuarios.
6.4.2. Lista de objetos de la BD
- Tablas:
• Cliente
• Entrega
• Pedido
• Repartidor
• Detalle_pedidos
• Pizza
- Vistas:
● VistaPedidosActivos
● VistaDetallesCliente
6.4.3. Asignación de Objetos y privilegios por roles
Rol Objeto Privilegios Asignados
Rol_Admin Todas las tablas ALL PRIVILEGES
Rol_Admin Todas las vistas ALL PRIVILEGES
Rol_Repartidor Pedido SELECT, UPDATE
Rol_Repartidor Entrega SELECT, INSERT
Rol_Repartidor VistaPedidosActivos SELECT
Rol_AtencionCliente Cliente SELECT, INSERT, UPDATE
Rol_AtencionCliente Pedido SELECT, INSERT, UPDATE
Rol_AtencionCliente Detalle_pedidos SELECT
Rol_AtencionCliente Pizza SELECT
Rol_AtencionCliente VistaDetallesCliente SELECT
Rol_AtencionCliente VistaPedidosActivos SELECT
6.4.4. Asignación de Objetos y privilegios por usuarios
Nombre de Usuario Objeto Privilegios Asignados
Anthony Todos los objetos ALL PRIVILEGES
Luis Pedido SELECT, UPDATE
Luis Entrega SELECT, INSERT
Luis VistaPedidosActivos SELECT
Oscar Pedido SELECT, UPDATE
Oscar Entrega SELECT, INSERT
Oscar VistaPedidosActivos SELECT
Christian Cliente SELECT, INSERT, UPDATE
Christian Pedido SELECT, INSERT, UPDATE
Christian Detalle_pedidos SELECT
Christian Pizza SELECT
Christian VistaDetallesCliente SELECT
Christian VistaPedidosActivos SELECT
Christian SecuenciaPedidosId SELECT, UPDATE
Christian SecuenciaClientesId SELECT, UPDATE
Sergio Cliente SELECT, INSERT, UPDATE
Sergio Pedido SELECT, INSERT, UPDATE
Sergio Detalle_pedidos SELECT
Sergio Pizza SELECT
Sergio VistaDetallesCliente SELECT
Sergio VistaPedidosActivos SELECT
Priorid Regla de Categoría Tipo de Descripción Desactiv Desactiva
ad política destino ar do por
Alta Auditoría Seguridad Base de Verifica que No
de acceso datos todas las
a datos consultas a
datos sensibles
sean auditadas
Alta Cifrado de Seguridad Red Garantiza que No
datos en los datos están
tránsito cifrados
durante la
transmisión
Alta Control de Configuraci Base de Comprueba No
acceso ón datos que los
basado en accesos están
roles definidos por
roles y no por
usuario
Alta Protección Seguridad Aplicació Verifica No
contra SQL n medidas para
Injection prevenir
inyecciones
SQL en
aplicaciones
web
6.5. Políticas de seguridad
7. Gestión de Auditorías a la BD
7.1. Auditoría de conexiones
Quien Cuando Dispositivo Ubicación Estad
o
Luis_Repartido 2023-07-15 Tablet Luis GPS coordinates Exitos
r 08:45:00 a
Ana_Cliente 2023-07-15 Teléfono Ana IP address Fallida
09:03:10
Sergio_CS 2023-07-15 PC Oficina Oficina Central Exitos
09:15:30 a
Oscar_Delivery 2023-07-15 Smartphone Ubicación Exitos
09:45:00 Oscar Reparto a
7.2. Auditoría de acciones
Usuari Acción Fecha y Detalle de la Acción Resulta
o Realizada Hora do
Anthon Cambio de 2023-07-15 Privilegios otorgados a Exitoso
y privilegio 10:00:00 Rol_AtencionCliente
Luis Actualización de 2023-07-15 Estado del pedido P123 Exitoso
estado 11:30:00 cambiado a 'Entregado'
Christia Inserción de 2023-07-15 Nuevo pedido P124 añadido a Exitoso
n pedido 12:15:00 la tabla Pedidos
Sergio Modificación de 2023-07-15 Datos de contacto Fallido
cliente 12:45:00 actualizados para cliente C456
7.3. Auditoría de objetos
Acción
Usuari Fecha y Detalle de la Resulta
Objeto Afectado Realizad
o Hora Acción do
a
2023-07- Añadida columna
Anthon ALTER
Tabla: Clientes 15 'Email' a la tabla Exitoso
y TABLE
14:00:00 Clientes
2023-07- Consulta de pedidos
Luis Vista: PedidosActivos SELECT 15 activos para Exitoso
14:30:00 entrega
2023-07- Inserción de un
Christia
Tabla: Pedidos INSERT 15 nuevo pedido en la Exitoso
n
15:00:00 tabla Pedidos
2023-07- Acceso a detalles de
Sergio Vista: DetallesCliente SELECT 15 cliente para Exitoso
16:30:00 consulta
7.4. Auditoría de datos
Usuari Tabla Tipo de Fecha y Resulta
Detalle del Cambio
o Afectada Cambio Hora do
2023-07- Añadido pedido P125 con
Christia
Pedidos INSERT 15 detalles de productos y Exitoso
n
10:30:00 cantidades
2023-07-
Actualizada dirección de
Sergio Clientes UPDATE 15 Exitoso
entrega para cliente C457
11:00:00
2023-07- Ingresada nueva entrega
Ana Entregas INSERT 15 E789 con estado 'En Exitoso
12:00:00 preparación'
2023-07-
Cambiado estado del
Luis Pedidos UPDATE 15 Exitoso
pedido P123 a 'Entregado'
13:45:00
8. Gestión de Contingencias
8.1. Definición de estructuras físicas y/o lógicas para la copia de seguridad
La copia de seguridad será de toda la base de datos, esto incluye:
- Controlfile
- SPFILE
- Redo Log
- Datafile
- Tablespace
- Tablas
8.2. Tipos de copia de seguridad
- Full Backup: Es una copia de seguridad completa que copia todos los
archivos de datos, archivos de registro y archivos de control necesarios
para restaurar completamente la base de datos. Se trata de una copia igual
a la fuente de datos.
- Incremental: En un backup incremental sólo se hace una copia de
seguridad del último backup completo o incremental. Esto permite realizar
copias más rápidas y eficientes, ya que solo se copian los cambios
recientes.
- Diferencial: Un backup diferencial también respalda solo los datos que han
cambiado desde el último backup completo, pero a diferencia del backup
incremental, no tiene en cuenta los backups anteriores. Esto significa que
cada backup diferencial será más grande que el anterior, ya que incluye
todos los cambios desde el último backup completo
8.3. Medios de almacenamiento
Almacenamiento Local:
Unidades de Disco Duro Externas: Para el almacenamiento local, se
utilizarían discos duros externos robustos con cifrado integrado para
proteger los datos. Estas unidades tienen la ventaja de ser portátiles y de
fácil conexión a diferentes sistemas, además de ofrecer una buena relación
entre costo y capacidad de almacenamiento.
8.4. Procesamiento de copia de seguridad
● Planificación: Las copias de seguridad se programan para realizarse todos los
días después del horario de cierre, asegurando que los datos más recientes estén
siempre respaldados.
● Software de Copia de Seguridad: Empleamos Oracle Recovery Manager
(RMAN) para las copias de seguridad, ya que proporciona una solución
integral y automatizada adaptada específicamente para las bases de datos
Oracle.
● Proceso de Copia:
- Conectar el disco duro externo al servidor de la base de datos.
- Ejecutar el RMAN y crear una copia de seguridad completa de la base
de datos.
- Desconectar el disco duro una vez completada la copia para evitar
daños continuos.
8.5. Procedimiento de Recuperación
● Evaluación: Ante un fallo, se determina el alcance del daño y se decide
si es necesario recurrir a una copia de seguridad.
● Restauración con RMAN:
- Se conecta el disco duro externo al servidor de la base de datos.
- Se inicia RMAN y se procede a la restauración de la base de
datos utilizando la copia de seguridad más reciente.
● Verificación:
- Se comprueba la coherencia de la base de datos restaurada
ejecutando consultas de prueba y asegurándose de que todas las
funciones operativas estén disponibles.
- Se documenta la restauración y se analiza el evento para
mejorar las futuras respuestas a incidentes.
9. Gestión de Monitoreo y Control de la BD
9.1. Políticas de Monitoreo y Control de la BD
Objetivo y Alcance:
● Definir el propósito del monitoreo, que es garantizar el rendimiento
óptimo, la seguridad y la disponibilidad de la base de datos.
● Especificar qué métricas y eventos se deben monitorear, como el
rendimiento de las consultas, la integridad de los datos, los intentos de
acceso y los errores del sistema.
Políticas de Monitoreo:
● Rendimiento de la BD: Establecer políticas para revisar regularmente la
salud del sistema, incluyendo tiempos de respuesta, bloqueos y recursos
del sistema.
● Seguridad de la BD: Monitorear los intentos de inicio de sesión, los
cambios en los roles y permisos, y asegurar que las auditorías de
seguridad se realicen según lo programado.
● Copia de Seguridad y Recuperación: Verificar que las copias de
seguridad se completan con éxito y que los procedimientos de
recuperación se prueban periódicamente.
Responsabilidades:
● Asignar responsabilidades específicas para el monitoreo y control, como
quién revisa los registros, quién recibe las alertas y quién es responsable
de responder a los incidentes.
9.2. Tareas automatizadas
Automatización de Monitoreo:
● Utilizar herramientas de monitoreo integradas en Oracle, como Oracle
Enterprise Manager, para configurar alertas automáticas y recolectar
estadísticas de rendimiento.
● Programar tareas automatizadas que revisen la integridad de la base de
datos y las tareas de mantenimiento, como la limpieza de logs y la
optimización de índices.
Automatización de Respuesta:
● Configurar scripts o procedimientos almacenados que se ejecuten en
respuesta a eventos comunes, como reiniciar servicios si se detecta un
fallo o ejecutar un script de recuperación si una copia de seguridad falla.
● Establecer políticas para la actualización automática de software y
parches de seguridad, manteniendo la base de datos protegida contra
vulnerabilidades conocidas.