El diagrama ER (Entidad-Relación), fundamental en el diseño de bases de datos SQL, es una herramienta crucial para representar visualmente los datos y sus relaciones dentro de una base de datos. En este artículo, explicaremos detalladamente cómo identificar las claves primarias, claves externas y claves candidatas en un diagrama ER. Comprender el papel y el método de identificación de estas claves permitirá un diseño de bases de datos más eficiente y preciso.
¿Qué es un diagrama ER?
El diagrama ER (Entidad-Relación) es una representación visual de las entidades (objetos de datos) dentro de una base de datos y las relaciones entre ellas. El uso de diagramas ER permite a los diseñadores de bases de datos comprender claramente la estructura de datos del sistema, previniendo la duplicación y la inconsistencia de datos. Los diagramas ER se componen principalmente de tres elementos básicos: entidades, atributos y relaciones.
Entidades
Una entidad es un objeto que se representa en la base de datos y se refiere a un objeto o evento específico. Por ejemplo, clientes, productos y pedidos son entidades.
Atributos
Un atributo representa las características o información que posee una entidad. Por ejemplo, los atributos de la entidad Cliente podrían ser nombre, dirección y número de teléfono.
Relaciones
Una relación indica la conexión entre entidades. Por ejemplo, la relación entre un cliente y un pedido es “hacer un pedido”.
Definición e identificación de la clave primaria (Primary Key)
La clave primaria (Primary Key) es una clave que se utiliza para identificar de manera única cada registro dentro de una tabla. Una clave primaria debe ser única y no puede contener valores NULL. Configurar correctamente una clave primaria ayuda a mantener la unicidad y la integridad de los datos.
Definición de la clave primaria
Una clave primaria está compuesta por una o más columnas (campos) utilizadas para identificar de manera única un registro en una tabla. Para garantizar la unicidad, cada registro debe tener un valor distinto.
Características de la clave primaria
- Unicidad: Permite identificar de manera única cada registro.
- No NULL: No puede contener valores NULL.
- Simple o compuesta: Puede estar formada por una única columna o por una combinación de varias columnas (clave primaria compuesta).
Método de identificación de la clave primaria
Para identificar una clave primaria, se utilizan los siguientes criterios.
- Confirmación de unicidad: Seleccionar la columna o combinación de columnas que garantice la unicidad.
- Confirmación de no NULL: Seleccionar la columna que no contenga valores NULL.
Definición de una clave primaria en SQL
A continuación se muestra un ejemplo de cómo establecer una clave primaria en SQL.
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
CustomerName VARCHAR(100),
ContactName VARCHAR(100),
Country VARCHAR(50)
);
En este ejemplo, la columna CustomerID
está configurada como clave primaria, identificando de manera única cada registro de cliente.
Definición e identificación de la clave externa (Foreign Key)
Una clave externa (Foreign Key) es una clave que se utiliza para definir una relación entre tablas. La clave externa garantiza la integridad referencial al hacer que una columna en una tabla haga referencia a la clave primaria de otra tabla.
Definición de la clave externa
Una clave externa es una columna o conjunto de columnas en una tabla que hace referencia a la clave primaria o una clave candidata en otra tabla, estableciendo así la relación entre ambas.
Características de la clave externa
- Construcción de relaciones: La clave externa muestra cómo un registro en una tabla está relacionado con un registro en otra tabla.
- Integridad referencial: Las restricciones de clave externa aseguran que los datos referenciados existan. Si los datos referenciados se eliminan, se controlan las actualizaciones o eliminaciones correspondientes en la tabla relacionada.
Método de identificación de la clave externa
Para identificar una clave externa, se utilizan los siguientes criterios.
- Confirmación de la tabla referenciada: Identificar la clave primaria o clave candidata en la tabla referenciada.
- Confirmación de la relación: Revisar la relación entre las tablas relacionadas y configurar la clave externa.
Definición de una clave externa en SQL
A continuación se muestra un ejemplo de cómo establecer una clave externa en SQL.
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
OrderNumber INT,
CustomerID INT,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
En este ejemplo, la columna CustomerID
en la tabla Orders
está configurada como una clave externa que referencia a la columna CustomerID
en la tabla Customers
, indicando a qué cliente pertenece cada pedido.
Definición e identificación de la clave candidata (Candidate Key)
Una clave candidata (Candidate Key) es una columna o conjunto de columnas que puede identificar de manera única los registros en una tabla. Cualquier clave candidata puede ser seleccionada como clave primaria.
Definición de la clave candidata
Una clave candidata está compuesta por una o más columnas que pueden identificar de manera única cada registro en una tabla. Puede haber múltiples claves candidatas en una tabla, pero solo una se selecciona como clave primaria.
Características de la clave candidata
- Unicidad: Identifica de manera única cada registro.
- No NULL: Las columnas que componen una clave candidata no pueden contener valores NULL.
- Multiplicidad: Una tabla puede tener varias claves candidatas.
Método de identificación de la clave candidata
Para identificar una clave candidata, se utilizan los siguientes criterios.
- Confirmación de unicidad: Verificar si las columnas o combinaciones de columnas tienen valores únicos.
- Confirmación de no NULL: Asegurarse de que las columnas que forman la clave candidata no tengan valores NULL.
- Confirmación de minimalidad: Identificar la combinación mínima de columnas que garantiza la unicidad.
Definición de una clave candidata en SQL
A continuación se muestra un ejemplo de cómo definir una clave candidata en SQL.
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
NationalIDNumber VARCHAR(15) NOT NULL,
EmployeeNumber VARCHAR(10) NOT NULL,
EmployeeName VARCHAR(100),
CONSTRAINT UQ_NationalIDNumber UNIQUE (NationalIDNumber),
CONSTRAINT UQ_EmployeeNumber UNIQUE (EmployeeNumber)
);
En este ejemplo, en la tabla Employees
, EmployeeID
está configurada como la clave primaria, mientras que NationalIDNumber
y EmployeeNumber
tienen restricciones de unicidad (UNIQUE), lo que indica que son claves candidatas.
Relación entre la clave primaria y la clave externa
La relación entre la clave primaria y la clave externa es un elemento crucial en el diseño de bases de datos para representar las relaciones entre tablas. Establecer correctamente las claves primarias y externas asegura la integridad y la coherencia de los datos.
Relación básica entre la clave primaria y la clave externa
La clave primaria se utiliza para identificar de manera única los registros dentro de una tabla. Por otro lado, la clave externa se utiliza para hacer referencia a la clave primaria de otra tabla, estableciendo así una relación entre las tablas.
Tipos de relaciones
Con las claves primarias y externas, se pueden establecer los siguientes tipos de relaciones.
- Relación uno a muchos (1:N): Una clave primaria se relaciona con múltiples claves externas.
- Relación muchos a muchos (N:M): Muchas claves primarias se relacionan con muchas claves externas. Este tipo de relación se representa con una tabla intermedia.
Ejemplo de relación
A continuación se muestra un ejemplo de cómo establecer una relación uno a muchos entre las tablas Customers
y Orders
.
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
CustomerName VARCHAR(100),
ContactName VARCHAR(100),
Country VARCHAR(50)
);
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
OrderNumber INT,
CustomerID INT,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
En este ejemplo, CustomerID
en la tabla Customers
está definido como clave primaria, y CustomerID
en la tabla Orders
está configurado como clave externa, lo que muestra qué cliente está relacionado con cada pedido.
Garantizar la integridad referencial
El uso de restricciones de clave externa garantiza la integridad referencial. Por ejemplo, si se elimina la clave primaria referenciada, se controla el proceso de actualización o eliminación de las claves externas relacionadas.
Selección de claves en el diseño de bases de datos
Seleccionar las claves adecuadas es crucial para mantener la integridad de los datos y un buen rendimiento de las consultas. A continuación, se presentan criterios y mejores prácticas para seleccionar claves en el diseño de bases de datos.
Criterios de selección de claves
Al seleccionar una clave, considere los siguientes criterios.
- Unicidad: Verificar si la clave puede identificar de manera única cada registro.
- Estabilidad: Preferir claves que no cambien con el tiempo. Evite las claves que se modifiquen frecuentemente.
- Simplicidad: Seleccionar claves simples y cortas. Las claves complejas son difíciles de entender y afectan el rendimiento de las consultas.
- Clave natural vs. clave sustituta: Decida si utilizar una clave natural que represente datos del mundo real (por ejemplo, número de empleado o dirección de correo electrónico) o una clave sustituta generada por el sistema (por ejemplo, un ID de incremento automático).
Selección de la clave primaria
Al seleccionar una clave primaria, tenga en cuenta lo siguiente.
- Unicidad y restricción no NULL: La clave primaria debe ser única y no debe contener valores NULL.
- Estabilidad: Seleccione una columna que no cambie. Por ejemplo, un número de empleado o número de seguro social puede ser una clave primaria adecuada.
Selección de la clave externa
Al seleccionar una clave externa, considere lo siguiente.
- Claridad en la relación: La clave externa debe tener una relación clara con la clave primaria o candidata de la tabla referenciada.
- Mantenimiento de la integridad referencial: Configurar claves externas para garantizar la integridad referencial y la coherencia de los datos.
Selección de la clave candidata
Al seleccionar una clave candidata, considere lo siguiente.
- Confirmación de unicidad: Asegúrese de que la clave candidata mantenga la unicidad en la tabla.
- Eliminación de redundancias: Evite tener demasiadas claves candidatas y mantenga un diseño simple.
Mejores prácticas
- Uso de claves sustitutas: En muchos entornos prácticos, se utiliza una clave sustituta simple y única como la clave primaria. Por ejemplo, un ID entero con incremento automático.
- Complementar con claves naturales: También es recomendable utilizar claves naturales para mantener la integridad de los datos, configurándolas con restricciones de unicidad (UNIQUE), pero utilizando una clave sustituta como clave primaria.
Métodos de representación de claves en un diagrama ER
En un diagrama ER (Entidad-Relación), se utilizan símbolos o estilos específicos para representar claramente los tipos de claves. A continuación, se explica cómo representar claves primarias, externas y candidatas en un diagrama ER.
Representación de la clave primaria
Una clave primaria se destaca en el diagrama ER como un atributo que garantiza la unicidad dentro de una entidad. Los métodos comunes para representarla son los siguientes.
- Subrayado: Subrayar el atributo que representa la clave primaria.
- Ejemplo:
CustomerID
- Etiqueta PK: Añadir “(PK)” junto al nombre del atributo.
- Ejemplo:
CustomerID (PK)
Representación de la clave externa
Una clave externa se representa en el diagrama ER como un atributo que referencia la clave primaria de otra entidad. Los métodos comunes para representarla son los siguientes.
- Etiqueta FK: Añadir “(FK)” junto al nombre del atributo.
- Ejemplo:
CustomerID (FK)
- Líneas discontinuas: Rodear el atributo de clave externa con líneas discontinuas.
- Ejemplo:
-- CustomerID --
Representación de la clave candidata
Una clave candidata se representa como una clave que puede ser seleccionada como clave primaria. Los métodos comunes para representarla son los siguientes.
- Etiqueta CK: Añadir “(CK)” junto al nombre del atributo.
- Ejemplo:
NationalIDNumber (CK)
- Líneas onduladas: Rodear el atributo de clave candidata con líneas onduladas.
- Ejemplo:
~ NationalIDNumber ~
Ejemplo de un diagrama ER
A continuación se muestra un ejemplo concreto de cómo representar claves en un diagrama ER.
|----------------------|
| Customers |
|----------------------|
| CustomerID (PK) |
| CustomerName |
| ContactName |
| NationalIDNumber (CK)|
|----------------------|
|----------------------|
| Orders |
|----------------------|
| OrderID (PK) |
| OrderNumber |
| CustomerID (FK) |
|----------------------|
En este ejemplo, CustomerID
en la tabla Customers
se representa como clave primaria mediante un subrayado, mientras que CustomerID
en la tabla Orders
se representa como clave externa. Además, NationalIDNumber
en la tabla Customers
se representa como clave candidata con líneas onduladas.
Ejercicios y ejemplos de respuestas
Para afianzar los conceptos, a continuación se proponen algunos ejercicios sobre la identificación de claves primarias, claves externas y claves candidatas en un diagrama ER. Resolver estos ejercicios ayudará a comprender mejor el papel y la importancia de las claves en el diseño de bases de datos.
Ejercicio 1
Considere un diagrama ER con las siguientes entidades:
Entidad Empleados (Employees)
- EmployeeID
- EmployeeName
- DepartmentID
- NationalIDNumber
Entidad Departamentos (Departments)
- DepartmentID
- DepartmentName
Responda las siguientes preguntas:
- ¿Cuál es la clave primaria de la entidad Empleados (Employees)?
- ¿Cuál es la clave primaria de la entidad Departamentos (Departments)?
- ¿Cuál es la clave externa de la entidad Empleados (Employees)?
- ¿Cuál es la clave candidata de la entidad Empleados (Employees)?
Respuestas del ejercicio 1
- La clave primaria de la entidad Empleados (Employees) es
EmployeeID
. - La clave primaria de la entidad Departamentos (Departments) es
DepartmentID
. - La clave externa de la entidad Empleados (Employees) es
DepartmentID
. - La clave candidata de la entidad Empleados (Employees) es
NationalIDNumber
.
Ejercicio 2
Observe el siguiente script SQL e identifique la clave primaria, la clave externa y la clave candidata de cada tabla.
CREATE TABLE Projects (
ProjectID INT PRIMARY KEY,
ProjectName VARCHAR(100),
StartDate DATE,
EndDate DATE
);
CREATE TABLE EmployeeProjects (
EmployeeID INT,
ProjectID INT,
AssignmentDate DATE,
PRIMARY KEY (EmployeeID, ProjectID),
FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID),
FOREIGN KEY (ProjectID) REFERENCES Projects(ProjectID)
);
Responda las siguientes preguntas:
- ¿Cuál es la clave primaria de la tabla Projects?
- ¿Cuál es la clave primaria de la tabla EmployeeProjects?
- ¿Cuáles son las claves externas de la tabla EmployeeProjects?
Respuestas del ejercicio 2
- La clave primaria de la tabla Projects es
ProjectID
. - La clave primaria de la tabla EmployeeProjects es una clave primaria compuesta por
EmployeeID
yProjectID
. - Las claves externas de la tabla EmployeeProjects son
EmployeeID
yProjectID
.
Conclusión
En este artículo, hemos explicado cómo identificar las claves primarias, externas y candidatas en un diagrama ER dentro del contexto de SQL. Los diagramas ER son una herramienta importante en el diseño de bases de datos, y la correcta configuración de cada tipo de clave es esencial para garantizar la unicidad y la coherencia de los datos. Las claves primarias identifican de manera única cada registro, las claves externas establecen relaciones entre tablas, y las claves candidatas son aquellas que podrían seleccionarse como claves primarias. Comprender el papel de estas claves y cómo identificarlas permite aplicar estos conceptos en el diseño de bases de datos, creando sistemas más eficientes y fiables.