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
No hay comentarios:
Publicar un comentario