-- 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
```

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: