Brains4Cloud
ESEN
Practicar

Tema 3 de 5

D2 · Datos relacionales en Azure

Objetos de base de datos

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.

Más allá de las tablas

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

Vistas

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.

Procedimientos almacenados

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';
  • Los parámetros (@ProductID, @NewName) lo hacen flexible: la misma acción sirve para cualquier producto.
  • Se ejecuta con EXEC, pasando los valores.
  • En T-SQL, los procedimientos almacenados y los desencadenadores (triggers) son parte de las extensiones propias del dialecto.

Índices

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.

1

Crear el índice: Se indica una columna; el índice guarda una copia ordenada de esos datos con punteros a las filas de la tabla.

2

Estructura en árbol: El índice forma una estructura de árbol que el optimizador de consultas usa para encontrar filas rápido.

3

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);

El coste de los índices

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.

Comparativa de objetos

ObjetoQué esPara quéSe crea con
TablaFilas y columnas de una entidadGuardar los datosCREATE TABLE
VistaTabla virtual sobre un SELECTSimplificar consultas, mostrar un subconjuntoCREATE VIEW
Procedimiento almacenadoInstrucciones SQL con parámetrosEncapsular lógica reutilizableCREATE PROCEDURE
ÍndiceCopia ordenada con punterosAcelerar búsquedasCREATE INDEX

Todos se crean con instrucciones DDL (CREATE), y se eliminan con DROP.

Escenarios de examen

NecesidadObjetoPor qué
Dar a los usuarios un único objeto con pedidos y direcciones de entregaVistaTabla virtual sobre un SELECT con JOIN.
Encapsular la lógica para cambiar el nombre de un producto según su IDProcedimiento almacenadoInstrucciones SQL con parámetros, ejecutables a demanda.
Acelerar búsquedas de productos por nombre en una tabla enormeÍndiceCopia ordenada con punteros a las filas.
Una tabla de 20 filas con consultas lentas por otra causaUn índice probablemente no ayudaCon pocas filas, leer la tabla es igual de rápido.
Una tabla con muchísimas inserciones por segundoCuidado con añadir muchos índicesCada cambio obliga a mantenerlos.
Filtrar una vista por ciudad como si fuera una tablaConsultar la vista con WHERELas vistas se consultan igual que las tablas.

Trampas frecuentes del examen

❓ ¿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?

¿Listo para poner a prueba "Objetos de base de datos"?

Preguntas originales, cada una con su explicación.

Empezar un simulacro