Brains4Cloud
ESEN
Practicar

Tema 1 de 5

D2 · Datos relacionales en Azure

Conceptos de datos relacionales

El modelo relacional es la forma más extendida de guardar datos transaccionales: inventarios, comercio electrónico, datos de clientes. El examen pregunta sus características, qué es la normalización y para qué sirven las claves. Son conceptos que aparecen también en SQL y en los servicios de Azure.

Por qué existe el modelo relacional

En los primeros sistemas, cada aplicación guardaba los datos en su propia estructura. Para usar esos datos había que conocer a fondo esa estructura, y eran ineficientes, difíciles de mantener y de optimizar. El modelo relacional resolvió ese problema con una forma estándar de representar y consultar datos que puede usar cualquier aplicación.

Su gran ventaja son las tablas: una forma intuitiva, eficiente y flexible de guardar información estructurada. Sirve para cualquier información con elementos relacionados que deben organizarse en una estructura coherente y basada en reglas.

Tablas, filas y columnas

En una base de datos relacional, las entidades del mundo real se modelan como tablas. Una entidad es cualquier cosa sobre la que se quiere guardar información, normalmente objetos y eventos importantes.

Tabla

Una colección de entidades: Cliente, Producto, Pedido, LíneaDePedido.

Fila

Una instancia de la entidad: un cliente concreto, un pedido concreto.

Columna

Un atributo: correo, precio, fecha del pedido.

Las tablas relacionales son un formato de datos estructurados: todas las filas de una tabla tienen las mismas columnas.

Tipos de datos y NULL

Cada columna guarda datos de un tipo concreto. Los tipos disponibles dependen del sistema de base de datos, aunque el ANSI (American National Standards Institute) define tipos estándar que admite la mayoría.

ColumnaTipo de dato adecuado
Email (Cliente)Texto, de longitud fija o variable
Price (Producto)Numérico decimal
Quantity (Pedido)Numérico entero
OrderDate (Pedido)Fecha y hora

NULL

No todas las columnas necesitan valor. Una columna MiddleName puede quedar vacía (NULL) para clientes sin segundo nombre o cuyo segundo nombre se desconoce. La columna sigue existiendo en todas las filas.

Proceso de diseño de esquemas que minimiza la duplicación de datos y refuerza su integridad. Hay reglas formales complejas (las «formas normales»), pero en la práctica se resume así:

1

Separar cada entidad en su propia tabla.

2

Separar cada atributo diferenciado en su propia columna.

3

Identificar de forma única cada instancia (fila) con una clave principal.

4

Usar columnas de clave externa para enlazar entidades relacionadas.

Ejemplo: de hoja de cálculo a tablas

Una empresa registra sus ventas en una hoja de cálculo:

OrderNoCustomerNameCustomerAddressProductNameUnitPriceQty
1Jane Smith42 Oak St SeattleWidget A9.992
1Jane Smith42 Oak St SeattleWidget B4.491
2Bob Jones18 Pine Ave PortlandWidget A9.995
3Jane Smith42 Oak St SeattleGadget X24.993

Problemas

Los datos del cliente y del producto se repiten en cada artículo vendido, y la dirección mezcla calle y ciudad en una sola celda.

Tras normalizar

Tablas Cliente, Producto, Pedido y LíneaDePedido, cada atributo en su columna. Cambiar la dirección de Jane solo exige modificar una fila.

  • Separar atributos en columnas obliga a cada valor a tener el tipo correcto: precios decimales, cantidades enteras.
  • También da más granularidad para consultar: filtrar fácilmente los clientes de una ciudad concreta.

Clave principal (primary key)

Un identificador u otro valor que identifica de forma única cada instancia de la entidad. Ejemplo: el ID de cliente.

Clave externa (foreign key)

Cuando una entidad referencia a otra, guarda la clave principal de la entidad relacionada. Ejemplo: el pedido guarda el ID del cliente.

Así, la dirección del cliente se guarda una sola vez y cada pedido la consulta a través de la tabla Cliente.

Integridad referencial y claves compuestas

Integridad referencial

Un sistema de gestión de bases de datos relacionales (RDBMS) puede garantizar que el valor de una clave externa tenga una clave principal correspondiente en la tabla relacionada. Así impide, por ejemplo, pedidos de clientes inexistentes.

Clave compuesta

Una clave (principal o externa) puede basarse en una combinación única de varias columnas. La tabla LíneaDePedido usa OrderNo + ItemNo para identificar cada línea de un pedido.

Escenarios de examen

SituaciónConceptoPor qué
Cambiar la dirección de un cliente en un solo sitioNormalizaciónCada entidad en su tabla, sin duplicados.
Identificar de forma única cada productoClave principalValor único por fila.
Guardar en cada pedido a qué cliente perteneceClave externaReferencia a la clave principal de Cliente.
Impedir pedidos de clientes que no existenIntegridad referencialLa clave externa debe existir en la tabla relacionada.
Identificar una línea de pedido por número de pedido y de líneaClave compuestaCombinación única de varias columnas.
Filtrar clientes por ciudad sin buscar dentro de un textoAtributos en columnas separadasMás granularidad para consultar.
Un cliente sin segundo nombreValor NULLLa columna existe pero no tiene valor.

Trampas frecuentes del examen

❓ ¿La normalización busca duplicar datos para que las consultas sean más rápidas?

No. Busca minimizar la duplicación y reforzar la integridad. Desnormalizar es lo que se hace en análisis.

❓ ¿Una clave externa identifica de forma única las filas de su propia tabla?

No. Eso es la clave principal; la externa referencia la clave principal de otra tabla.

❓ ¿Una clave puede estar formada por varias columnas?

Sí: es una clave compuesta, como OrderNo + ItemNo.

❓ ¿Si una columna admite NULL, la tabla deja de tener esquema fijo?

No. La columna sigue existiendo; solo puede quedar sin valor.

❓ ¿Qué impide registrar un pedido para un cliente que no existe?

La integridad referencial que aplica el RDBMS sobre la clave externa.

❓ ¿Los tipos de datos son idénticos en todos los sistemas de bases de datos?

No. Dependen del sistema, aunque ANSI define tipos estándar que la mayoría admite.

¿Entendiste este tema?

Pon a prueba lo que acabas de aprender

En una base de datos de ventas, la tabla Pedido tiene una columna CustomerID que apunta al ID de la tabla Cliente. ¿Qué es CustomerID en la tabla Pedido?

¿Listo para poner a prueba "Conceptos de datos relacionales"?

Preguntas originales, cada una con su explicación.

Empezar un simulacro