https://docs.google.com/forms/d/e/1FAIpQLSd7UytgkrskmlfYFrr3WLMT_RcQQZneW2lS3QAqVsIlFblPYA/viewform
8/21/2024
8/09/2024
Estructura de la Base de Datos
En esta actividad vamos a crear una base de datos de un comercio de electrodoméstico y mueblería
1.1. Tabla de Productos
Esta tabla almacena la información sobre cada producto disponible en el comercio.
- productos
producto_id
(INT, PRIMARY KEY, AUTO_INCREMENT): Identificador único del producto.nombre
(VARCHAR(100)): Nombre del producto.descripcion
(TEXT): Descripción del producto.categoria
(VARCHAR(50)): Categoría del producto (por ejemplo, muebles, electrodomésticos).precio
(DECIMAL(10, 2)): Precio del producto.stock
(INT): Cantidad en stock.proveedor_id
(INT, FOREIGN KEY): Identificador del proveedor.fecha_agregado
(DATE): Fecha en que se agregó el producto a la base de datos.
1.2. Tabla de Proveedores
Esta tabla contiene información sobre los proveedores que suministran los productos.
- proveedores
proveedor_id
(INT, PRIMARY KEY, AUTO_INCREMENT): Identificador único del proveedor.nombre
(VARCHAR(100)): Nombre del proveedor.direccion
(VARCHAR(200)): Dirección del proveedor.telefono
(VARCHAR(20)): Número de teléfono del proveedor.email
(VARCHAR(100)): Correo electrónico del proveedor.
1.3. Tabla de Clientes
Esta tabla contiene la información de los clientes que compran productos en el comercio.
- clientes
cliente_id
(INT, PRIMARY KEY, AUTO_INCREMENT): Identificador único del cliente.nombre
(VARCHAR(100)): Nombre del cliente.direccion
(VARCHAR(200)): Dirección del cliente.telefono
(VARCHAR(20)): Número de teléfono del cliente.email
(VARCHAR(100)): Correo electrónico del cliente.
1.4. Tabla de Ventas
Esta tabla registra las ventas realizadas en el comercio.
- ventas
venta_id
(INT, PRIMARY KEY, AUTO_INCREMENT): Identificador único de la venta.cliente_id
(INT, FOREIGN KEY): Identificador del cliente que realizó la compra.fecha
(DATE): Fecha de la venta.total
(DECIMAL(10, 2)): Monto total de la venta.
1.5. Tabla de Detalles de Venta
Esta tabla almacena los detalles de cada venta, incluyendo los productos vendidos.
- detalles_venta
detalle_id
(INT, PRIMARY KEY, AUTO_INCREMENT): Identificador único del detalle de la venta.venta_id
(INT, FOREIGN KEY): Identificador de la venta.producto_id
(INT, FOREIGN KEY): Identificador del producto vendido.cantidad
(INT): Cantidad de producto vendido.precio_unitario
(DECIMAL(10, 2)): Precio unitario del producto al momento de la venta.subtotal
(DECIMAL(10, 2)): Subtotal para este producto (cantidad * precio_unitario).
1.6. Tabla de Procedimientos
Esta tabla almacena los procedimientos internos del comercio.
- procedimientos
procedimiento_id
(INT, PRIMARY KEY, AUTO_INCREMENT): Identificador único del procedimiento.nombre
(VARCHAR(100)): Nombre del procedimiento.descripcion
(TEXT): Descripción detallada del procedimiento.fecha_actualizacion
(DATE): Fecha de la última actualización del procedimiento.
2. Relaciones entre Tablas
- productos y proveedores: La relación es de muchos a uno. Cada producto está asociado con un proveedor.
- ventas y clientes: La relación es de muchos a uno. Cada venta está asociada con un cliente.
- detalles_venta y ventas: La relación es de muchos a uno. Cada detalle de venta está asociado con una venta.
- detalles_venta y productos: La relación es de muchos a uno. Cada detalle de venta está asociado con un producto.
3. Ejemplo de Consultas SQL
Agregar un nuevo producto
INSERT INTO productos (nombre, descripcion, categoria, precio, stock, proveedor_id, fecha_agregado)
VALUES ('Sofá de Cuero', 'Sofá de cuero de 3 plazas', 'muebles', 45000.00, 10, 1, '2024-08-09');
Registrar una venta
INSERT INTO ventas (cliente_id, fecha, total)
VALUES (1, '2024-08-09', 150000.00);
Agregar detalles de venta
INSERT INTO detalles_venta (venta_id, producto_id, cantidad, precio_unitario, subtotal)
VALUES (1, 1, 2, 45000.00, 90000.00);
Actualizar stock después de una venta
UPDATE productos
SET stock = stock - 2
WHERE producto_id = 1;
Obtener información de ventas de un cliente específico
SELECT v.venta_id, v.fecha, v.totalFROM ventas v
JOIN clientes c ON v.cliente_id = c.cliente_id
WHERE c.nombre = 'Juan Pérez';
-- Creación de la base de datos
CREATE DATABASE IF NOT EXISTS comercio;
USE comercio;
-- Tabla de Proveedores
CREATE TABLE proveedores (
proveedor_id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
direccion VARCHAR(200),
telefono VARCHAR(20),
email VARCHAR(100)
);
-- Tabla de Productos
CREATE TABLE productos (
producto_id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
descripcion TEXT,
categoria VARCHAR(50),
precio DECIMAL(10, 2) NOT NULL,
stock INT NOT NULL,
proveedor_id INT,
fecha_agregado DATE,
FOREIGN KEY (proveedor_id) REFERENCES proveedores(proveedor_id)
);
-- Tabla de Clientes
CREATE TABLE clientes (
cliente_id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
direccion VARCHAR(200),
telefono VARCHAR(20),
email VARCHAR(100)
);
-- Tabla de Ventas
CREATE TABLE ventas (
venta_id INT AUTO_INCREMENT PRIMARY KEY,
cliente_id INT,
fecha DATE NOT NULL,
total DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (cliente_id) REFERENCES clientes(cliente_id)
);
-- Tabla de Detalles de Venta
CREATE TABLE detalles_venta (
detalle_id INT AUTO_INCREMENT PRIMARY KEY,
venta_id INT,
producto_id INT,
cantidad INT NOT NULL,
precio_unitario DECIMAL(10, 2) NOT NULL,
subtotal DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (venta_id) REFERENCES ventas(venta_id),
FOREIGN KEY (producto_id) REFERENCES productos(producto_id)
);
-- Tabla de Procedimientos
CREATE TABLE procedimientos (
procedimiento_id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
descripcion TEXT,
fecha_actualizacion DATE
);
8/02/2024
Introducción a base de datos
Practica de Introducción a base de datos
-- Crear base de datos
CREATE DATABASE EmpresaAlimentos;
-- Usar la base de datos
USE EmpresaAlimentos;
-- Crear tablas
CREATE TABLE Cliente (
ClienteID INT PRIMARY KEY IDENTITY,
Nombre VARCHAR(100),
Dirección VARCHAR(200),
Teléfono VARCHAR(20),
CorreoElectrónico VARCHAR(100)
);
CREATE TABLE Proveedor (
ProveedorID INT PRIMARY KEY IDENTITY,
Nombre VARCHAR(100),
Dirección VARCHAR(200),
Teléfono VARCHAR(20),
CorreoElectrónico VARCHAR(100)
);
CREATE TABLE Producto (
ProductoID INT PRIMARY KEY IDENTITY,
Nombre VARCHAR(100),
Descripción TEXT,
Precio DECIMAL(18, 2),
Stock INT,
ProveedorID INT,
FOREIGN KEY (ProveedorID) REFERENCES Proveedor(ProveedorID)
);
CREATE TABLE Categoría (
CategoríaID INT PRIMARY KEY IDENTITY,
Nombre VARCHAR(100),
Descripción TEXT
);
CREATE TABLE ProductoCategoría (
ProductoID INT,
CategoríaID INT,
PRIMARY KEY (ProductoID, CategoríaID),
FOREIGN KEY (ProductoID) REFERENCES Producto(ProductoID),
FOREIGN KEY (CategoríaID) REFERENCES Categoría(CategoríaID)
);
CREATE TABLE Empleado (
EmpleadoID INT PRIMARY KEY IDENTITY,
Nombre VARCHAR(100),
Puesto VARCHAR(100),
Teléfono VARCHAR(20),
CorreoElectrónico VARCHAR(100),
Salario DECIMAL(18, 2)
);
CREATE TABLE Venta (
VentaID INT PRIMARY KEY IDENTITY,
Fecha DATETIME,
ClienteID INT,
EmpleadoID INT,
Total DECIMAL(18, 2),
FOREIGN KEY (ClienteID) REFERENCES Cliente(ClienteID),
FOREIGN KEY (EmpleadoID) REFERENCES Empleado(EmpleadoID)
);
CREATE TABLE DetalleVenta (
DetalleVentaID INT PRIMARY KEY IDENTITY,
VentaID INT,
ProductoID INT,
Cantidad INT,
PrecioUnitario DECIMAL(18, 2),
Subtotal AS (Cantidad * PrecioUnitario) PERSISTED,
FOREIGN KEY (VentaID) REFERENCES Venta(VentaID),
FOREIGN KEY (ProductoID) REFERENCES Producto(ProductoID)
);
CREATE TABLE ProveedorProducto (
ProveedorID INT,
ProductoID INT,
PRIMARY KEY (ProveedorID, ProductoID),
FOREIGN KEY (ProveedorID) REFERENCES Proveedor(ProveedorID),
FOREIGN KEY (ProductoID) REFERENCES Producto(ProductoID)
);
CREATE TABLE Almacén (
AlmacénID INT PRIMARY KEY IDENTITY,
Nombre VARCHAR(100),
Dirección VARCHAR(200),
Capacidad INT
);
-- Tabla intermedia para gestionar inventario en almacenes (opcional)
CREATE TABLE AlmacénProducto (
AlmacénID INT,
ProductoID INT,
Cantidad INT,
PRIMARY KEY (AlmacénID, ProductoID),
FOREIGN KEY (AlmacénID) REFERENCES Almacén(AlmacénID),
FOREIGN KEY (ProductoID) REFERENCES Producto(ProductoID)
);
Para introducir
y consultar datos en las tablas de tu base de datos, aquí tienes ejemplos de
cómo hacerlo en SQL. Utilizaré SQL Server para estos ejemplos, pero la sintaxis
básica debería ser similar en otros sistemas de gestión de bases de datos como MySQL
o PostgreSQL, aunque podrían tener ligeras diferencias.
Insertar Datos
1. Insertar
datos en la tabla Cliente:
INSERT INTO Cliente (Nombre, Dirección,
Teléfono, CorreoElectrónico)
VALUES ('Juan Pérez', 'Calle Falsa
123', '555-1234', 'juan.perez@example.com');
2. Insertar
datos en la tabla Proveedor:
INSERT INTO Proveedor (Nombre,
Dirección, Teléfono, CorreoElectrónico)
VALUES ('Proveedores S.A.', 'Avenida
Central 456', '555-5678', 'contacto@proveedores.com');
3. Insertar
datos en la tabla Producto:
INSERT INTO Producto (Nombre,
Descripción, Precio, Stock, ProveedorID)
VALUES ('Harina de Trigo', 'Harina de
trigo para panificación', 1.50, 100, 1);
4. Insertar
datos en la tabla Categoría:
INSERT INTO Categoría (Nombre,
Descripción)
VALUES ('Granos', 'Productos derivados
de granos');
5. Insertar
datos en la tabla ProductoCategoría:
INSERT INTO ProductoCategoría
(ProductoID, CategoríaID)
VALUES (1, 1);
6. Insertar
datos en la tabla Empleado:
INSERT INTO Empleado (Nombre, Puesto,
Teléfono, CorreoElectrónico, Salario)
VALUES ('Ana Gómez', 'Vendedora',
'555-8765', 'ana.gomez@example.com', 2500.00);
7. Insertar
datos en la tabla Venta:
INSERT INTO Venta (Fecha, ClienteID,
EmpleadoID, Total)
VALUES ('2024-08-01 10:00:00', 1, 1,
10.00);
8. Insertar
datos en la tabla DetalleVenta:
INSERT INTO DetalleVenta (VentaID,
ProductoID, Cantidad, PrecioUnitario)
VALUES (1, 1, 5, 1.50);
9. Insertar
datos en la tabla ProveedorProducto:
INSERT INTO ProveedorProducto
(ProveedorID, ProductoID)
VALUES (1, 1);
10. Insertar
datos en la tabla Almacén:
INSERT INTO Almacén (Nombre, Dirección,
Capacidad)
VALUES ('Almacén Central', 'Calle
Principal 789', 1000);
11. Insertar
datos en la tabla AlmacénProducto:
INSERT INTO AlmacénProducto (AlmacénID,
ProductoID, Cantidad)
VALUES (1, 1, 100);
Consultar Datos
1. Consultar
todos los clientes:
SELECT * FROM Cliente;
2. Consultar
todos los proveedores:
SELECT * FROM Proveedor;
3. Consultar
todos los productos:
SELECT * FROM Producto;
4. Consultar
todos los productos en una categoría específica:
SELECT p.*
FROM Producto p
JOIN ProductoCategoría pc ON p.ProductoID =
pc.ProductoID
WHERE pc.CategoríaID = 1;
-- Suponiendo que quieres consultar la
categoría con ID 1
5. Consultar
todas las ventas de un cliente específico:
SELECT v.*
FROM Venta v
WHERE v.ClienteID = 1;
-- Suponiendo que quieres consultar las
ventas del cliente con ID 1
6. Consultar
detalles de una venta específica:
SELECT dv.*, p.Nombre AS ProductoNombre
FROM DetalleVenta dv
JOIN Producto p ON dv.ProductoID = p.ProductoID
WHERE dv.VentaID = 1;
-- Suponiendo que quieres consultar los
detalles de la venta con ID 1
7. Consultar el
inventario en un almacén específico:
SELECT ap.*, p.Nombre AS ProductoNombre
FROM AlmacénProducto ap
JOIN Producto p ON ap.ProductoID = p.ProductoID
WHERE ap.AlmacénID = 1;
-- Suponiendo que quieres consultar el
inventario del almacén con ID 1
8. Consultar
los proveedores que suministran un producto específico:
SELECT pr.*
FROM Proveedor pr
JOIN ProveedorProducto pp ON pr.ProveedorID =
pp.ProveedorID
WHERE pp.ProductoID = 1;
-- Suponiendo que quieres consultar los
proveedores del producto con ID 1
Insertar Datos en la Tabla Cliente
-- Insertar datos en la tabla Cliente
INSERT
INTO Cliente (Nombre, Dirección, Teléfono, CorreoElectrónico)
VALUES
(
'Juan Pérez',
'Calle Falsa 123',
'555-1234',
'juan.perez@example.com'),
(
'Ana Gómez',
'Calle Verdadera 456',
'555-2345',
'ana.gomez@example.com'),
(
'Carlos Ruiz',
'Avenida de la Reforma 789',
'555-3456',
'carlos.ruiz@example.com'),
(
'María Fernández',
'Calle del Sol 101',
'555-4567',
'maria.fernandez@example.com'),
(
'Laura Martínez',
'Calle del Norte 202',
'555-5678',
'laura.martinez@example.com'),
(
'Jorge López',
'Calle del Este 303',
'555-6789',
'jorge.lopez@example.com'),
(
'Marta Sánchez',
'Calle del Oeste 404',
'555-7890',
'marta.sanchez@example.com'),
(
'Pedro García',
'Calle del Centro 505',
'555-8901',
'pedro.garcia@example.com'),
(
'Lucía Morales',
'Calle de la Luna 606',
'555-9012',
'lucia.morales@example.com'),
(
'David González',
'Calle de la Estrella 707',
'555-0123',
'david.gonzalez@example.com');
Insertar Datos en la Tabla Proveedor
-- Insertar datos en la tabla Proveedor
INSERT
INTO Proveedor (Nombre, Dirección, Teléfono, CorreoElectrónico)
VALUES
(
'Proveedores S.A.',
'Avenida Central 456',
'555-5678',
'contacto@proveedores.com'),
(
'Distribuciones ABC',
'Calle de la Industria 123',
'555-6789',
'info@abc.com'),
(
'Suministros XYZ',
'Avenida del Comercio 234',
'555-7890',
'ventas@xyz.com'),
(
'Fabrica de Harinas',
'Calle Panadera 345',
'555-8901',
'harinas@fabrica.com'),
(
'Alimentos Globales',
'Calle Mayor 456',
'555-9012',
'globales@alimentos.com');
Insertar Datos en la Tabla Categoría
-- Insertar datos en la tabla Categoría
INSERT
INTO Categoría (Nombre, Descripción)
VALUES
(
'Granos',
'Productos derivados de granos'),
(
'Lácteos',
'Productos lácteos y derivados'),
(
'Bebidas',
'Bebidas alcohólicas y no alcohólicas'),
(
'Carnes',
'Carnes y productos cárnicos'),
(
'Vegetales',
'Vegetales y frutas frescas');
Insertar Datos en la Tabla Producto
-- Insertar datos en la tabla Producto
INSERT
INTO Producto (Nombre, Descripción, Precio, Stock, ProveedorID)
VALUES
(
'Harina de Trigo',
'Harina de trigo para panificación',
1.50,
100,
1),
(
'Leche Entera',
'Leche entera pasteurizada',
0.90,
200,
2),
(
'Jugo de Naranja',
'Jugo natural de naranja',
2.00,
150,
3),
(
'Pechuga de Pollo',
'Pechuga de pollo fresca',
5.00,
50,
4),
(
'Manzanas',
'Manzanas frescas de calidad',
1.20,
80,
5),
(
'Pan Integral',
'Pan integral recién horneado',
1.80,
60,
1),
(
'Queso Cheddar',
'Queso cheddar en bloque',
3.50,
40,
2),
(
'Cerveza Artesanal',
'Cerveza artesanal de elaboración local',
4.00,
70,
3),
(
'Carne de Res',
'Carne de res para asado',
6.00,
30,
4),
(
'Zanahorias',
'Zanahorias frescas y crujientes',
0.80,
90,
5);
Insertar Datos en la Tabla ProductoCategoría
-- Insertar datos en la tabla ProductoCategoría
INSERT
INTO ProductoCategoría (ProductoID, CategoríaID)
VALUES
(
1,
1),
-- Harina de Trigo en Categoría Granos
(
2,
2),
-- Leche Entera en Categoría Lácteos
(
3,
3),
-- Jugo de Naranja en Categoría Bebidas
(
4,
4),
-- Pechuga de Pollo en Categoría Carnes
(
5,
5),
-- Manzanas en Categoría Vegetales
(
6,
1),
-- Pan Integral en Categoría Granos
(
7,
2),
-- Queso Cheddar en Categoría Lácteos
(
8,
3),
-- Cerveza Artesanal en Categoría Bebidas
(
9,
4),
-- Carne de Res en Categoría Carnes
(
10,
5);
-- Zanahorias en Categoría Vegetales
Insertar Datos en la Tabla Empleado
-- Insertar datos en la tabla Empleado
INSERT
INTO Empleado (Nombre, Puesto, Teléfono, CorreoElectrónico, Salario)
VALUES
(
'Ana Gómez',
'Vendedora',
'555-8765',
'ana.gomez@example.com',
2500.00),
(
'Luis Fernández',
'Cajero',
'555-9876',
'luis.fernandez@example.com',
2200.00),
(
'Sofía Martínez',
'Gerente',
'555-6543',
'sofia.martinez@example.com',
3500.00),
(
'Raúl Pérez',
'Supervisor',
'555-3210',
'raul.perez@example.com',
3000.00),
(
'Isabel López',
'Repartidor',
'555-4568',
'isabel.lopez@example.com',
2000.00');
Insertar Datos en la Tabla Venta
-- Insertar datos en la tabla Venta
INSERT
INTO Venta (Fecha, ClienteID, EmpleadoID, Total)
VALUES
(
'2024-08-01 10:00:00',
1,
1,
10.00),
(
'2024-08-01 11:00:00',
2,
2,
15.00),
(
'2024-08-02 09:30:00',
3,
3,
20.00),
(
'2024-08-02 14:00:00',
4,
4,
25.00),
(
'2024-08-03 16:00:00',
5,
5,
30.00');
Insertar Datos en la Tabla DetalleVenta
-- Insertar datos en la tabla DetalleVenta
INSERT
INTO DetalleVenta (VentaID, ProductoID, Cantidad, PrecioUnitario)
VALUES
(
1,
1,
5,
1.50),
-- Harina de Trigo
(
1,
2,
2,
0.90),
-- Leche Entera
(
2,
3,
6,
2.00),
-- Jugo de Naranja
(
2,
4,
3,
5.00),
-- Pechuga de Pollo
(
3,
5,
4,
1.20),
-- Manzanas
(
3,
6,
2,
1.80),
-- Pan Integral
(
4,
7,
1,
3.50),
-- Queso Cheddar
(
4,
8,
3,
4.00),
-- Cerveza Artesanal
(
5,
9,
2,
6.00),
-- Carne de Res
(
5,
10,
5,
0.80);
-- Zanahorias
Insertar Datos en la Tabla ProveedorProducto
-- Insertar datos en la tabla ProveedorProducto
INSERT
INTO ProveedorProducto (ProveedorID, ProductoID)
VALUES
(
1,
1),
-- Harina de Trigo
(
2,
2),
-- Leche Entera
(
3,
3),
-- Jugo de Naranja
(
4,
4),
-- Pechuga de Pollo
(
5,
5),
-- Manzanas
(
1,
6),
-- Pan Integral
(
2,
7),
-- Queso Cheddar
(
3,
8),
-- Cerveza Artesanal
(
4,
9),
-- Carne de Res
(
5,
10);
-- Zanahorias
Insertar Datos en la Tabla Almacén
-- Insertar datos en la tabla Almacén
INSERT
INTO Almacén (Nombre, Dirección, Capacidad)
VALUES
(
'Almacén Central',
'Calle Principal 789',
1000),
(
'Almacén Norte',
'Avenida del Norte 100',
800),
(
'Almacén Sur',
'Calle del Sur 200',
600);
Insertar Datos en la Tabla AlmacénProducto
-- Insertar datos en la tabla AlmacénProducto
INSERT
INTO AlmacénProducto (AlmacénID, ProductoID, Cantidad)
VALUES
(
1,
1,
100),
-- Harina de Trigo en Almacén Central
(
1,
2,
200),
-- Leche Entera en Almacén Central
(
2,
3,
150),
-- Jugo de Naranja en Almacén Norte
(
2,
4,
50),
-- Pechuga de Pollo en Almacén Norte
(
3,
5,
80),
-- Manzanas en Almacén Sur
(
3,
6,
60),
-- Pan Integral en Almacén Sur
(
1,
7,
40),
-- Queso Cheddar en Almacén Central
(
1,
8,
70),
-- Cerveza Artesanal en Almacén Central
(
2,
9,
30),
-- Carne de Res en Almacén Norte
(
3,
10,
90);
-- Zanahorias en Almacén Sur
Glosario de Windows
Computadora: Es un aparato electrónico, capaz de procesar cualquier tipo de información, de forma rápida y eficiente. La cual es presenta...

-
https://quizizz.com/join?gc=971935&source=liveDashboard Practica En grupo Actividad Avanzada: Creación y Formato de un Documento Compl...
-
https://drs-infotep.typingclub.com/
-
Computadora: Es un aparato electrónico, capaz de procesar cualquier tipo de información, de forma rápida y eficiente. La cual es presenta...