0% encontró este documento útil (0 votos)
5 vistas26 páginas

Diseño de Base de Datos para Restaurante

PIA
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
5 vistas26 páginas

Diseño de Base de Datos para Restaurante

PIA
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Nombre de la Unidad de Aprendizaje: Gestión e implementación de base de

datos
PIA
Título de la Evidencia: Base de datos de un caso de negocios de fuente real y
actualizada del entorno, planteado por el profesor.
Programa educativo: Licenciatura en Tecnologías de la Información
Semestre: Segundo
Grupo: 24
Nombre del Docente Laura Alicia Hernández

EQUIPO 2
Marisol Airam Morales Herrera 2017244
Luis Mauricio Vazquez Dueñas 2147519
Cristian Imanol Gonzales Eguía 2223889
Marcelo del Rio Sánchez 2095559
Eduardo Iván Aguirre Gonzales 2017936
INDICE
INTRODUCCION

El presente trabajo tiene como objetivo el diseño e implementación de una base


de datos para la gestión de un restaurante. Se inició con la creación de un modelo
entidad-relación (ER) que identifica las entidades principales: Cliente, Mesa,
Orden, Plato, Elemento del Plato, DetalleOrden y Pago, junto con sus relaciones y
atributos correspondientes. Este modelo permitió estructurar de forma lógica la
información necesaria para operar el sistema.

A partir del modelo ER, se generó el modelo relacional, que define las tablas con
sus claves primarias y foráneas, garantizando la integridad de los datos.
Posteriormente, se desarrolló un script SQL completo que crea estas tablas y
carga datos de ejemplo utilizando el entorno SQL*Plus. Este script automatiza el
proceso de creación de la base de datos, facilitando su implementación.

El trabajo realizado en SQL*Plus permitió familiarizarse con la ejecución de


comandos SQL, así como con la generación y manejo de scripts para estructurar
una base de datos desde cero.

Como parte del siguiente paso, este mismo modelo será trasladado al entorno de
desarrollo visual Oracle APEX, donde se construirán interfaces gráficas para
usuarios y formularios interactivos, lo que permitirá convertir esta base de datos en
una aplicación web funcional para la administración de pedidos, clientes y pagos
en el restaurante.
INSTRUCCIONES
1. Analizar y diseñar el modelo Entidad-Relación y Relacional para el siguiente
caso de uso. Considere los elementos que se deben seguir a fin de crear de forma
correcta los modelos (reglas, normalización, etc.), además de los aspectos más
adecuados para la administración correcta y completa de la información.

CASO DE ESTUDIO

Se solicita el control de datos de un restaurante llamado “El Chacal”, el cual ha


solicitado se lleve una adecuada administración de sus clientes, las mesas, las
ordenes, los pagos, los menús y los platos. Es importante considerar los
siguientes requerimientos: Los clientes tienen un nombre, número de teléfono y
dirección. El restaurante cuenta con varias mesas, cada una con un numero de
identificación y capacidad o de cantidad de personas que pueden ocuparla. Un
cliente puede hacer varias ordenes en un mismo día.
Cada orden puede contener varios platos y cada plato tiene un nombre, precio y
categoría (entrada, plato principal, postre, bebida). Algunos platos tienen
elementos de comida que lo integran y estos no pueden ser cambiados. El sistema
solo acepta pago en efectivo y al pagar se registra el total por cuenta/orden y la
fecha en que se realizó.
2. Realizar el código que corresponda (Lenguaje de Definición de Datos) en
ORACLE correspondiente al diseño físico de las tablas a implementar en la base
de datos, el script generado (DDL) debe integrar los tablespace necesarios, así
como el usuario que administrará el espacio de trabajo de su base de datos.
Recuerde que debe conectarse con el usuario que administrara la base de datos a
fin de poder crear las tablas correspondientes.
3. Una vez que su script este completo, impleméntelo en ORACLE. Hasta este
punto su base de datos estará creada. En el script integre INSERTs a fin de poder
realizar el punto siguiente. Registre al menos tres registros por cada tabla.
4. Realizar la especificación clara y detallada de seis enunciados que permitan
efectuar acciones importantes sobre la administración del caso de estudio que se
solicita.
5. De las especificaciones anteriores, realizar las sentencias de SQL, al menos
una de cada tipo (INSERT, UPDATE, DELETE y SELECT). En una de las
especificaciones es obligatorio hacer uso de todos los elementos siguientes:
condiciones, operadores lógicos, funciones de agregado, order by, group by y
having. Además, en otra de las especificaciones debe utilizar consultas multitabla.
Es muy importante que exista una congruencia entre el enunciado y la sentencia
de SQL que se defina para cada ejercicio que se solicita.
[Link] modelo entidad relación (imagen) se presenta en forma completa y correcta
de
acuerdo con el caso de estudio solicitado e instrucciones señaladas.

MODELO ENTIDAD RELACION


2. El modelo relacional (imagen) se presenta en forma completa y correcta de
acuerdo
con el caso de estudio solicitado e instrucciones señaladas.
MODELO RELACIONAL
[Link] script del DDL (archivo .sql) se presenta en forma completa y correcta de
acuerdo
con lo solicitado. Integre en este script al final, los insert para cada tabla (de 3 a 5
registros por tabla).

Scrip SQL PLUS:


DROP TABLE Pago CASCADE CONSTRAINTS;
DROP TABLE DetalleOrden CASCADE CONSTRAINTS;
DROP TABLE PlatoElemento CASCADE CONSTRAINTS;
DROP TABLE ElementoPlato CASCADE CONSTRAINTS;
DROP TABLE Plato CASCADE CONSTRAINTS;
DROP TABLE Orden CASCADE CONSTRAINTS;
DROP TABLE Mesa CASCADE CONSTRAINTS;
DROP TABLE Cliente CASCADE CONSTRAINTS;

Crear tabla Cliente


CREATE TABLE Cliente (
cliente_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
nombre VARCHAR2(100) NOT NULL,
telefono VARCHAR2(15),
direccion VARCHAR2(255)
);
Crear tabla Mesa
CREATE TABLE Mesa (
mesa_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
capacidad NUMBER NOT NULL
);
Crear tabla Orden
CREATE TABLE Orden (
orden_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
fecha DATE DEFAULT SYSDATE,
cliente_id NUMBER NOT NULL,
mesa_id NUMBER NOT NULL,
FOREIGN KEY (cliente_id) REFERENCES Cliente(cliente_id),
FOREIGN KEY (mesa_id) REFERENCES Mesa(mesa_id)
);

Crear tabla Plato


CREATE TABLE Plato (
plato_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
nombre VARCHAR2(100) NOT NULL,
precio NUMBER(10,2) NOT NULL,
categoria VARCHAR2(50) NOT NULL
);

Crear tabla ElementoPlato


CREATE TABLE ElementoPlato (
elemento_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY
KEY,
nombre VARCHAR2(100) NOT NULL
);

Crear tabla PlatoElemento


CREATE TABLE PlatoElemento (
plato_id NUMBER,
elemento_id NUMBER,
PRIMARY KEY (plato_id, elemento_id),
FOREIGN KEY (plato_id) REFERENCES Plato(plato_id),
FOREIGN KEY (elemento_id) REFERENCES ElementoPlato(elemento_id)
);

Crear tabla DetalleOrden


CREATE TABLE DetalleOrden (
detalle_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
orden_id NUMBER,
plato_id NUMBER,
cantidad NUMBER NOT NULL,
FOREIGN KEY (orden_id) REFERENCES Orden(orden_id),
FOREIGN KEY (plato_id) REFERENCES Plato(plato_id)
);

Crear tabla Pago


CREATE TABLE Pago (
pago_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
orden_id NUMBER,
total NUMBER(10,2) NOT NULL,
tipo_pago VARCHAR2(50) CHECK (tipo_pago IN ('efectivo')),
fecha_pago DATE DEFAULT SYSDATE,
FOREIGN KEY (orden_id) REFERENCES Orden(orden_id)
);
Insertar datos en Cliente
INSERT INTO Cliente (nombre, telefono, direccion) VALUES ('Ana Torres',
'5544332211', 'Av. Reforma 123');
INSERT INTO Cliente (nombre, telefono, direccion) VALUES ('Luis Gómez',
'5588776655', 'Calle Juárez 456');
INSERT INTO Cliente (nombre, telefono, direccion) VALUES ('María Pérez',
'5511223344', 'Insurgentes Sur 789');
Insertar datos en Mesa
INSERT INTO Mesa (capacidad) VALUES (2);
INSERT INTO Mesa (capacidad) VALUES (4);
INSERT INTO Mesa (capacidad) VALUES (6);
Insertar datos en Orden
INSERT INTO Orden (cliente_id, mesa_id) VALUES (1, 1);
INSERT INTO Orden (cliente_id, mesa_id) VALUES (2, 2);
INSERT INTO Orden (cliente_id, mesa_id) VALUES (3, 3);

Insertar datos en Plato


INSERT INTO Plato (nombre, precio, categoria) VALUES ('Sopa de tortilla', 60,
'entrada');
INSERT INTO Plato (nombre, precio, categoria) VALUES ('Tacos al pastor', 90,
'plato principal');
INSERT INTO Plato (nombre, precio, categoria) VALUES ('Pastel de chocolate',
55, 'postre');

Insertar datos en ElementoPlato


INSERT INTO ElementoPlato (nombre) VALUES ('Tortilla frita');
INSERT INTO ElementoPlato (nombre) VALUES ('Carne de cerdo');
INSERT INTO ElementoPlato (nombre) VALUES ('Piña');
INSERT INTO ElementoPlato (nombre) VALUES ('Chocolate');

Insertar datos en PlatoElemento


INSERT INTO PlatoElemento (plato_id, elemento_id) VALUES (1, 1);
INSERT INTO PlatoElemento (plato_id, elemento_id) VALUES (2, 3);
INSERT INTO PlatoElemento (plato_id, elemento_id) VALUES (2, 4);
INSERT INTO PlatoElemento (plato_id, elemento_id) VALUES (3, 5);

Insertar datos en DetalleOrden


INSERT INTO DetalleOrden (orden_id, plato_id, cantidad) VALUES (1, 1, 1);
INSERT INTO DetalleOrden (orden_id, plato_id, cantidad) VALUES (1, 2, 3);
INSERT INTO DetalleOrden (orden_id, plato_id, cantidad) VALUES (3, 3, 2);

Insertar datos en Pago


INSERT INTO Pago (orden_id, total, tipo_pago) VALUES (1, 330, 'efectivo');
INSERT INTO Pago (orden_id, total, tipo_pago) VALUES (3, 110, 'efectivo');
SQL PLUS:
Tabla 1

SELECT*FROM Cliente
Tabla 2: Mesa

SELECT*FROM Mesa
Tabla 3: Orden

SELECT*FROM orden
Tabla 4: Plato

FROM*SELECT Plato
Tabla 5: ElementoPlato

SELECT * FROM ElementoPlato


Tabla 6 PlatoElemento

FROM*SELECT PlatoElemenento
Tabla 7: DetalleOrden
Tabla 8 Pago

Select * From Pago


4. El script de los ejercicios del paso 4 y 5 señalado en las instrucciones de este
PIA, se
presenta en forma completa y correcta de acuerdo con lo solicitado.
1. REGISTRA UNA NUEVA ORDEN DE UN CLIENTE NUEVO
TIPO: INSERT
INSERT INTO Cliente (cliente_id,nombre, telefono, direccion)
VALUES (5,'cesar vialpando','1122334455','[Link] Salinas 221');

INSERT INTO ORDEN (CLIENTE_ID, MESA_ID)


VALUES (4,1):
2. ACTUALIZAR EL NUMERO DE TELEFONO DE UN CLIENTE
TIPO: UPDATE
UPDATE Cliente
SET telefono = '2233445566'
WHERE nombre = 'cesar vialpando';

3. ELIMINAR LA ORDEN NUMERO 2, YA QUE FUE CANCELADO


TIPO: DELETE
DELETE FROM Orden
WHERE orden_id = 2;
4. MOSTRAR EL TOTAL DE PLATOS SOLICITADOS POR CADA CLIENTE
SIEMPRE QUE HAYA ORDENADO MAS DE UN PLATO EN TOTAL

TIPO: SELECT CON LA FUNCION DE AGREGAR Y HAVING


SELECT
(SELECT nombre FROM Cliente C WHERE C.cliente_id = O.cliente_id) AS cliente,
COUNT(*) AS total_ordenes FROM Orden O
GROUP BY O.cliente_id HAVING COUNT(*) > 1
ORDER BY total_ordenes DESC;

incluye condiciones funciones de agregado GROUP BY HAVING, ORDEN BY y


operadores lógicos implícito EN HAVING
5. CONSULTAR LAS ORDENES CON SUS RESPECTIVOS PLATOS Y EL
CLIENQUE QUE LAS SOLICITO
TIPO: SELECT MULTITABLA
SELECT
(SELECT nombre FROM Cliente C WHERE C.cliente_id = O.cliente_id) AS
cliente,O.orden_id,
(SELECT nombre FROM Plato P WHERE P.plato_id = DO.plato_id) AS
plato,[Link]
FROM Orden O, DetalleOrden DO WHERE O.orden_id = DO.orden_id;
6. INSERTA UN NUEVO PAGO PARA UNA ORDEN RECIENTEMENTE
GENERADA
TIPO: INSERT
INSERT INTO Pago (pago_id, orden_id, total, tipo_pago)
VALUES (3,2, 150, 'efectivo')

;
CONCLUSIONES
Marisol Airam Morales Herrera 2017244

Después de realizar todo este proceso, me quedó mucho más claro cómo se
construye una base de datos desde cero. Comenzar con el modelo entidad-
relación ayudó a organizar las ideas y entender qué información es importante
para el restaurante y cómo se conecta todo entre sí, como los clientes, las mesas,
las órdenes y los platos. Luego, al pasar ese modelo a SQL y crear el script en
SQL*Plus, pude ver cómo esas ideas se convierten en tablas reales con datos.

Trabajar en SQL*Plus fue útil para practicar comandos y ver cómo se ejecutan los
scripts paso por paso. Aunque al principio fue un poco confuso, con la práctica
todo empezó a tener más sentido. También aprendí cómo guardar el trabajo, cómo
ver los resultados y cómo preparar un archivo listo para entregar o compartir.

También podría gustarte