sql >> Base de Datos >  >> RDS >> Database

¿Qué es una clave candidata en el diseño de bases de datos?

Una clave candidata es un concepto importante en la normalización de bases de datos. Siga leyendo para averiguar qué es una clave candidata y cómo comprobar si un conjunto de atributos es una clave candidata.

La clave candidata, también llamada simplemente clave, es una parte importante del diseño de la base de datos. Es la base teórica para conceptos técnicos como claves primarias y alternativas (únicas). Todo diseñador de base de datos debe saber cómo identificar claves candidatas y cómo elegir la adecuada para su tabla.

El concepto de clave candidata se enseña en todos los cursos universitarios de bases de datos como parte de la teoría de normalización de bases de datos. Los problemas comunes que enfrentará cuando aprenda sobre claves candidatas son verificar si un conjunto de atributos dado es una clave candidata y encontrar todas las claves candidatas para una relación.

Comprender las claves candidatas es importante para comprender las formas normales en las tablas de la base de datos. Este conocimiento te ayudará a recordar las reglas de las formas normales más comunes.

En este artículo, explicaremos el concepto de claves candidatas en términos simples. Además, le mostraremos cómo verificar si un conjunto de atributos es una clave candidata.

Terminología básica de normalización de bases de datos

Antes de leer acerca de las claves candidatas, asegúrese de estar familiarizado con la terminología básica de normalización. Repasemos brevemente los términos más importantes.

Una relación es el nombre teórico de una tabla de base de datos. Una relación (tabla) tiene un nombre y consta de atributos con nombre (columnas).

Una dependencia funcional en una relación (A -> B ) le dice que siempre que dos filas tengan los mismos valores para todos los atributos del conjunto A, también tendrán los mismos valores para todos los atributos del conjunto B.

El cierre de un conjunto de atributos es el conjunto de aquellos atributos que se pueden determinar funcionalmente a partir de este conjunto. Puede revisar el algoritmo para calcular el cierre de atributos aquí.

Superteclas

De manera informal, una clave candidata es un conjunto de atributos que identifican de forma única una fila.

Por definición, una clave candidata es una superclave mínima. ¿Entonces, qué significa esto? Una superclave es un atributo o un conjunto de atributos tal que su cierre son todos los atributos de la relación.

Veamos algunos ejemplos. Aquí tenemos la tabla CourseEditions. Almacena información sobre las ediciones del curso.

Cada año, un curso determinado puede ser impartido por un profesor diferente, con un precio diferente y un límite de plazas diferente. Tenemos así las siguientes dependencias funcionales:

  • id -> curso, año, profesor, precio, plazas – el ID determina todos los demás atributos
  • curso, año -> id, profesor, precio, plazas – el curso y el año determinan la identificación, el profesor, el precio y los lugares.

Ediciones del curso

id curso año profesor precio manchas
1 Bases de datos 2019 Capa de Chris 100 45
2 Matemáticas 2019 Daniel Parr 80 34
3 Bases de datos 2020 Reloj de Jennifer 110 30

¿Cuáles son las superclaves en esta tabla? Primero, todos los atributos forman una superclave, por lo que el conjunto {id, curso, año, profesor, precio, lugares es una superclave. Recuerda que el conjunto de todos los atributos es una superclave en todas las tablas.

¿Hay superteclas más pequeñas en esta tabla? Sí hay. El conjunto {id} es una superclave. Tenemos la dependencia funcional id -> curso, año, profesor, precio, plazas , y por supuesto, tenemos la dependencia trivial id -> id . Una vez que tengamos el id, podemos determinar todos los demás atributos de las dependencias funcionales.

El conjunto {curso, año} es también una superclave. Tenemos la dependencia funcional curso, año -> id, profesor, precio, plazas , y tenemos las dependencias funcionales triviales curso -> curso y año -> año . Una vez que tengamos curso y año , podemos determinar todos los demás atributos de las dependencias funcionales.

El conjunto {id, curso, año, profesor} es también una superclave. Tenemos id , curso y año . Entonces, podemos determinar todos los otros atributos en la tabla con estos tres atributos.

Por otro lado, el conjunto {profesor} no es una superclave. Si conocemos al maestro, no podemos determinar ningún otro atributo que no sea el maestro. El conjunto {profesor, precio} tampoco es una superclave. Una vez que tengamos profesor y precio , no podemos determinar más atributos.

Superteclas mínimas

No todas las superclaves son claves candidatas. Para ser una clave candidata, una superclave debe ser mínima lo que significa que si le quitas algún atributo, ya no será una superclave. Veamos algunos ejemplos.

El conjunto {id} es una superclave, y es mínima. No puede quitarle atributos, porque entonces tendrá un conjunto vacío, y un conjunto vacío no es una superclave. Así, el conjunto {id} es una clave candidata.

El conjunto {curso, año} es también una superclave y una clave candidata. Si elimina alguno de los atributos, el conjunto restante ya no es una superclave. Necesitas ambos curso y año para determinar los otros atributos en el conjunto.

Sin embargo, el conjunto {id, curso, año, profesor} es una superclave pero no una clave candidata. Por ejemplo, si elimina el atributo profesor, el conjunto restante sigue siendo una superclave. De hecho, en este caso, puede eliminar cualquier atributo de {id, curso, año, profesor} , y el conjunto restante seguirá siendo una superclave.

Tenga en cuenta que una superclave mínima no significa la superclave con la menor cantidad de elementos. Ambos {id} y {curso, año} son claves candidatas aunque tengan un número diferente de elementos.

Algoritmo:verificación de que un conjunto de atributos es una clave candidata

Este es el problema común de diseño de bases de datos:¿cómo se verifica si un conjunto de atributos es una clave candidata?

Aquí está el algoritmo para verificarlo:

  • Paso 1:compruebe si el conjunto proporcionado es una superclave. Calcule el cierre de atributos en el conjunto. Si el cierre es el conjunto de todos los atributos, el conjunto es una superclave.
  • Paso 2:compruebe si la superclave es mínima. Elimine cada atributo, uno a la vez. Si el conjunto restante es una superclave, la superclave no es mínima y el conjunto no es una clave candidata. Si no puede eliminar ninguno de los atributos y mantener la propiedad de superclave, el conjunto es una clave candidata.

Por ejemplo, comprobemos si el conjunto {curso, año} es de hecho una clave candidata.

  • Paso 1:calculemos el cierre de {curso, año}. Usando el algoritmo de cierre, concluimos que el cierre es de hecho {id, curso, año, profesor, precio, plazas}. Así, el conjunto {curso, año} es de hecho una superclave.
  • Paso 2. Intentemos eliminar curso del conjunto Nos quedamos con el conjunto {año}. No hay dependencia funcional con solo año como el lado izquierdo. Por lo tanto, el cierre de este conjunto es {year} . De manera similar, cuando eliminamos el atributo año, el cierre del conjunto restante es {curso}. Ni {año} ni {curso} son superclaves, por lo que el conjunto {curso, año} es una superclave mínima y, por lo tanto, una clave candidata.

Si te ha gustado este artículo, consulta otros artículos sobre normalización en nuestro blog.

Si eres un estudiante que toma clases de bases de datos, asegúrate de crear una cuenta académica gratuita en Vertabelo, nuestra herramienta de dibujo de diagramas ER en línea. Le permite dibujar diagramas ER lógicos y físicos directamente en su navegador.

Vertabelo admite PostgreSQL, SQL Server, Oracle, MySQL, Google BigQuery, Amazon Redshift y otras bases de datos relacionales. ¡Pruébalo y verás lo fácil que es empezar!