Tema 3 de 5
Una base de datos relacional no son solo tablas. Las vistas simplifican consultas, los procedimientos almacenados guardan lógica y los índices aceleran búsquedas. El examen pide identificar cada objeto por su descripción, y saber que los índices tienen un coste.
Contenido
Además de tablas, una base de datos relacional contiene otras estructuras que ayudan a organizar los datos, encapsular acciones programadas y acelerar el acceso. Las tres que entran en el examen son:
Vista
Una ventana sobre los datos
Procedimiento almacenado
Lógica guardada en la base
Índice
Búsquedas más rápidas
Una vista es una tabla virtual basada en el resultado de una consulta SELECT: una ventana sobre filas concretas de una o más tablas.
CREATE VIEW Deliveries
AS
SELECT o.OrderNo, o.OrderDate,
c.FirstName, c.LastName, c.Address, c.City
FROM [Order] AS o JOIN Customer AS c
ON o.Customer = c.ID;
-- La vista se consulta y filtra igual que una tabla
SELECT OrderNo, OrderDate, LastName, Address
FROM Deliveries
WHERE City = 'Seattle';La vista Deliveries reúne pedidos y clientes en un solo objeto, así es fácil saber la dirección de entrega de cada pedido sin escribir el JOIN cada vez.
Un procedimiento almacenado define instrucciones SQL que se ejecutan a demanda. Sirve para encapsular en la base de datos la lógica de acciones que las aplicaciones necesitan hacer con los datos.
CREATE PROCEDURE RenameProduct
@ProductID INT,
@NewName VARCHAR(20)
AS
UPDATE Product
SET Name = @NewName
WHERE ID = @ProductID;
-- Ejecutar el procedimiento con sus parámetros
EXEC RenameProduct 201, 'Spanner';Un índice ayuda a buscar datos en una tabla. Es como el índice al final de un libro: una lista ordenada de referencias con la página donde aparece cada una. Sin índice habría que leer todo el libro.
Crear el índice: Se indica una columna; el índice guarda una copia ordenada de esos datos con punteros a las filas de la tabla.
Estructura en árbol: El índice forma una estructura de árbol que el optimizador de consultas usa para encontrar filas rápido.
Consulta: Si una consulta filtra por esa columna en el WHERE, el sistema usa el índice en vez de recorrer la tabla fila a fila.
CREATE INDEX idx_ProductName
ON Product(Name);Ventajas
En tablas con muchas filas, los índices mejoran mucho el rendimiento de las consultas. Se pueden crear varios por tabla: por ejemplo, otro sobre Price para buscar por precio.
Costes
Ocupan espacio, y cada INSERT, UPDATE o DELETE obliga a mantener los índices de la tabla, lo que ralentiza esas operaciones.
Tablas pequeñas
En una tabla con pocas filas, usar el índice probablemente no es más eficiente que leer la tabla entera, y el optimizador lo ignora. Hay que equilibrar consultas más rápidas frente al coste de las demás operaciones.
| Objeto | Qué es | Para qué | Se crea con |
|---|---|---|---|
| Tabla | Filas y columnas de una entidad | Guardar los datos | CREATE TABLE |
| Vista | Tabla virtual sobre un SELECT | Simplificar consultas, mostrar un subconjunto | CREATE VIEW |
| Procedimiento almacenado | Instrucciones SQL con parámetros | Encapsular lógica reutilizable | CREATE PROCEDURE |
| Índice | Copia ordenada con punteros | Acelerar búsquedas | CREATE INDEX |
Todos se crean con instrucciones DDL (CREATE), y se eliminan con DROP.
| Necesidad | Objeto | Por qué |
|---|---|---|
| Dar a los usuarios un único objeto con pedidos y direcciones de entrega | Vista | Tabla virtual sobre un SELECT con JOIN. |
| Encapsular la lógica para cambiar el nombre de un producto según su ID | Procedimiento almacenado | Instrucciones SQL con parámetros, ejecutables a demanda. |
| Acelerar búsquedas de productos por nombre en una tabla enorme | Índice | Copia ordenada con punteros a las filas. |
| Una tabla de 20 filas con consultas lentas por otra causa | Un índice probablemente no ayuda | Con pocas filas, leer la tabla es igual de rápido. |
| Una tabla con muchísimas inserciones por segundo | Cuidado con añadir muchos índices | Cada cambio obliga a mantenerlos. |
| Filtrar una vista por ciudad como si fuera una tabla | Consultar la vista con WHERE | Las vistas se consultan igual que las tablas. |
❓ ¿Una vista guarda una copia de los datos?
No. Es una tabla virtual basada en el resultado de un SELECT sobre las tablas subyacentes.
❓ ¿Se puede filtrar una vista con WHERE?
Sí. Se consulta y filtra igual que una tabla.
❓ ¿Más índices siempre significa mejor rendimiento?
No. Aceleran las consultas, pero ocupan espacio y ralentizan INSERT, UPDATE y DELETE.
❓ ¿Un índice ayuda siempre, aunque la tabla tenga pocas filas?
No. Con pocas filas el optimizador suele ignorarlo porque leer la tabla es igual de eficiente.
❓ ¿Un procedimiento almacenado puede recibir parámetros?
Sí. Los parámetros permiten reutilizar la misma lógica con distintos valores.
❓ ¿Qué objeto se parece al índice de un libro?
El índice: referencias ordenadas con punteros a las filas.
¿Entendiste este tema?
Pon a prueba lo que acabas de aprender
Los usuarios necesitan consultar pedidos junto con la dirección del cliente sin escribir cada vez una consulta con JOIN. ¿Qué objeto debe crear el administrador?
Preguntas originales, cada una con su explicación.
Empezar un simulacroInicia sesión para guardar tu progreso.