En un modelo Entidad-Relación, las entidades fuertes y entidades débiles son conceptos esenciales para estructurar correctamente los datos en una base de datos. A continuación, explico sus diferencias y ejemplos:
Una entidad fuerte es una entidad que puede ser identificada de manera única mediante su propia clave primaria, sin depender de otra entidad.
- Tiene un identificador único o clave primaria propia (atributo clave).
- Es independiente y no necesita de otra entidad para existir.
- Entidad: Cliente
- Atributos: ClienteID (clave primaria), Nombre, Dirección.
- ClienteID es suficiente para identificar de forma única a cada cliente, sin depender de otras entidades.
Una entidad débil es una entidad que no tiene un identificador único propio y depende de una entidad fuerte para su identificación. Su existencia está subordinada a una entidad fuerte, con la que mantiene una relación de dependencia.
- No tiene una clave primaria propia.
- Se identifica mediante una combinación de:
- Un atributo parcial (propio de la entidad débil).
- La clave primaria de la entidad fuerte asociada.
- Está conectada a una entidad fuerte mediante una relación que suele tener cardinalidad 1 a N.
- Generalmente, se denota con un doble rectángulo en los diagramas E/R.
- Entidad Débil: DetallePedido
- Atributos: NúmeroDetalle (atributo parcial), Cantidad, PrecioUnitario.
- Relación con una entidad fuerte: Pedido (entidad fuerte con clave primaria PedidoID).
- Clave primaria compuesta de PedidoID (clave de Pedido) + NúmeroDetalle.
- Entidad Fuerte: Pedido
- Clave primaria: PedidoID.
- Atributos: Fecha, Total.
- Entidad Débil: DetallePedido
- Atributos: NúmeroDetalle, Cantidad, PrecioUnitario.
- Relación: Un pedido puede tener muchos detalles.
- Clave primaria de DetallePedido: ( \text{(PedidoID, NúmeroDetalle)} ).
-- Tabla de entidad fuerte: Pedido
CREATE TABLE Pedido (
PedidoID INT PRIMARY KEY,
Fecha DATE,
Total DECIMAL(10, 2)
);
-- Tabla de entidad débil: DetallePedido
CREATE TABLE DetallePedido (
PedidoID INT,
NumeroDetalle INT,
Cantidad INT,
PrecioUnitario DECIMAL(10, 2),
PRIMARY KEY (PedidoID, NumeroDetalle),
FOREIGN KEY (PedidoID) REFERENCES Pedido(PedidoID)
);
En este ejemplo:
- Pedido es una entidad fuerte con clave primaria PedidoID.
- DetallePedido es una entidad débil cuya existencia depende de Pedido y utiliza su clave primaria para identificarse.