-- PASO 1: CREACIÓN DE LA BASE DE DATOS
CREATE DATABASE BDTiendaLibros;
GO
USE BDTiendaLibros;
GO
-- PASO 2: CREACIÓN DE LA TABLA LIBRO
CREATE TABLE tblLibro (
IDLibro VARCHAR(8) PRIMARY KEY,
libTítulo VARCHAR(100) NOT NULL,
libAutor VARCHAR(80) NOT NULL,
libGenero VARCHAR(30) NOT NULL,
libPrecio DECIMAL(8,2) NOT NULL
);
GO
-- PASO 3: CREACIÓN DE LA TABLA CLIENTE
CREATE TABLE tblCliente (
IDCliente VARCHAR(8) PRIMARY KEY,
cliNombre VARCHAR(50) NOT NULL,
cliApellido VARCHAR(50) NOT NULL,
cliDireccion VARCHAR(50),
cliTelefono VARCHAR(9) NOT NULL,
cliEmail VARCHAR(50)
);
GO
-- PASO 4: CREACIÓN DE LA TABLA PEDIDO
CREATE TABLE tblPedido (
IDPedido INT PRIMARY KEY IDENTITY(1,1),
pedFecha DATETIME NOT NULL,
IDCliente VARCHAR(8) NOT NULL,
FOREIGN KEY (IDCliente)
REFERENCES tblCliente(IDCliente)
);
GO
-- PASO 5: CREACIÓN DE LA TABLA DETALLE PEDIDO
CREATE TABLE tblDetallePedido (
IDLibro VARCHAR(8) NOT NULL,
IDPedido INT NOT NULL,
detCantidad INT NOT NULL,
PRIMARY KEY (IDLibro, IDPedido),
FOREIGN KEY (IDLibro)
REFERENCES tblLibro(IDLibro),
FOREIGN KEY (IDPedido)
REFERENCES tblPedido(IDPedido)
);
GO
-- PASO 6: INSERTAR 5 REGISTROS EN CADA TABLA
-- Registros de libros
INSERT INTO tblLibro
(IDLibro, libTítulo, libAutor, libGenero, libPrecio)
VALUES
('LIB-001', 'El señor de los anillos', 'J. R. R. Tolkien', 'Fantasía', 500.00),
('LIB-002', 'Aves sin nido', 'Clorinda Matto de Turner', 'Novela', 75.00),
('LIB-003', 'La Metamorfosis', 'Franz Kafka', 'Novela', 120.00),
('LIB-004', 'Mi planta de naranja-lima', 'José Mauro de Vasconcelos', 'Cuento', 500.00),
('LIB-005', 'Harry Potter', 'J. K. Rowling', 'Ciencia Ficción', 410.00);
-- Registros de clientes
INSERT INTO tblCliente
(IDCliente, cliNombre, cliApellido, cliDireccion, cliTelefono, cliEmail)
VALUES
('CLI-0001', 'Carlos', 'Mesa Suares', 'Pje. Las Lomas 123', '987654351', 'cmeza@gmail.com'),
('CLI-0002', 'Carmen', 'Rubianes Lazo', NULL, '987654351', 'carmens@gmail.com'),
('CLI-0003', 'Maria', 'Camargo León', 'Pje. La Rivera 321', '987654351', 'mariaq@gmail.com'),
('CLI-0004', 'Sandra', 'Peréz Huamán', 'Jr. Ricardo Palma 432', '916403940', 'speres@gmail.com'),
('CLI-0005', 'Max', 'Quispe Mamani', NULL, '987654321', 'mhinojosa@gmail.com');
-- Registros de pedidos
INSERT INTO tblPedido (pedFecha, IDCliente)
VALUES
('2026-10-01T10:00:00', 'CLI-0001'),
('2026-10-02T11:30:00', 'CLI-0002'),
('2026-10-03T14:00:00', 'CLI-0003'),
('2026-10-04T16:00:00', 'CLI-0004'),
('2026-10-05T09:30:00', 'CLI-0005');
-- Registros de detalles de pedidos
INSERT INTO tblDetallePedido (IDLibro, IDPedido, detCantidad)
VALUES
('LIB-001', 1, 1),
('LIB-002', 1, 1),
('LIB-003', 2, 3),
('LIB-004', 3, 1),
('LIB-005', 5, 2);
GO
-- PASO 7: CREACIÓN DE LA VISTA
CREATE VIEW viewReporteLibros AS
SELECT
p.IDPedido,
p.pedFecha,
c.cliNombre,
c.cliApellido,
l.IDLibro,
l.libTítulo,
l.libAutor,
l.libPrecio,
d.detCantidad,
(l.libPrecio * d.detCantidad) AS Subtotal
FROM tblPedido AS p
INNER JOIN tblCliente AS c
ON p.IDCliente = c.IDCliente
INNER JOIN tblDetallePedido AS d
ON p.IDPedido = d.IDPedido
INNER JOIN tblLibro AS l
ON d.IDLibro = l.IDLibro;
GO
-- PASO 8: CREACIÓN DE RESTRICCIONES
-- El precio del libro debe ser mayor que cero
ALTER TABLE tblLibro
ADD CONSTRAINT CK_tblLibro_libPrecio
CHECK (libPrecio > 0);
-- La cantidad de libros debe ser mayor que cero
ALTER TABLE tblDetallePedido
ADD CONSTRAINT CK_tblDetallePedido_detCantidad
CHECK (detCantidad > 0);
GO
```
To embed this project on your website, copy the following code and paste it into your website's HTML: