Es un modelo de datos que representa la realidad a través de entidades , que son objetos que existen y se distinguen de otros por sus características, que llamamos atributos. Además, estas entidades podrán o no estar relacionadas unas con otras a través de lo que se conoce como relación. Hay que tener en cuenta que se trata solamente de un modelo de representación, por lo que no tiene correspondencia real con ningún sistema de almacenamiento. Se utiliza en la etapa de Análisis y Diseño de una Base de Datos, por lo que habrá que convertirla a otro modelo antes de poder empezar a trabajar con ella.
Una entidad es un objeto que existe en una realidad que queremos representar, por ejemplo, un alumno, que se distingue de otro por sus características como pueden ser: el nombre, los apellidos, el número de expediente, …
Las entidades se representan con un rectágulo.
Dependencia de identificación. Además de la dependencia existencial la entidad débil necesita de la fuerte para poder crear una clave. Por ejemplo, Microsoft Office, Libre Office, Open Office, …
En el contexto de bases de datos relacionales, un atributo clave fuerte es un atributo que por sí solo puede identificar unívocamente a una tupla (registro) en una tabla. Por otro lado, un atributo clave débil es un atributo que, por sí solo, no puede garantizar esta unicidad y necesita apoyo adicional (como otro atributo o un conjunto de atributos).
Esas características que hacen que unas entidades se distingan de otras, son los atributos. El nombre, los apellidos y el número de expediente, fecha de nacimiento serían atributos de la entidad alumno por ejemplo.
Los atributos se representan mediante óvalos unidos a la entidad.
A su vez, podemos relacionar unas entidades con otras a través de lo que se conoce como relación. Por ejemplo, dos entidades alumno y asignatura podrían estar relacionadas entre sí puesto que un alumno cursa una asignatura (o varias). Conviene resaltar que una relación entre dos entidades no expresa obligatoriedad de relación sino posibilidad de relacionarse.
En diseño de bases de datos, los atributos multivaluados generalmente se transforman en una relación o tabla separada para mantener la consistencia y cumplir con las reglas de normalización.
Las relaciones se representan por líneas uniendo entidades.
Si consideramos que dos entidades A y B están relacionadas a través de una relación R, deberemos determinar lo que se conoce como cardinalidad de la relación, que determina cuantas entidades de tipo A se relacionan, como máximo, con cuantas entidades de tipo B. Además, resulta conveniente, en cada caso, calcular cuántas entidades de tipo A se relacionan, cómo mínimo, con cuantas entidades de tipo B (que normalmente será 0 ó 1). De esa manera podremos indicar la obligatoriedad o no de relación entre elementos de las entidades A y B.
En esta relación una entidad de tipo A sólo se puede relacionar con una entidad de tipo B, y viceversa. Por ejemplo, si suponemos dos entidades Curso y Aula, relacionadas a través de una relación Se Imparte, podremos suponer que un Curso se imparte en una Aula y en una Aula sólo se puede impartir un Curso. Se representaría como sigue:
Indica que una entidad de tipo A se puede relacionar con un número indeterminado de entidades de tipo B, pero a su vez una entidad de tipo B sólo puede relacionarse con una entidad de tipo A. Si suponemos una entidad Propietario y otra entidad Vehículo relacionadas a través de una relación Posee, podremos suponer que un Propietario puede poseer varios Vehículos, mientras que cada Vehículo sólo puede pertenecer a un Propietario.
Quedaría representado de la siguiente manera:
Significa que una entidad de tipo A sólo puede relacionarse con una entidad de tipo B, pero una entidad de tipo B puede relacionarse con un número indeterminado de entidades de tipo A. En realidad se trata como una relación uno a muchos pero el sentido de la relación es el inverso.
En este caso, tanto las entidades de tipo A y B, pueden relacionarse con un número indeterminado de entidades del otro tipo. Por ejemplo, si suponemos las entidades Alumno y Asignatura y una relación Cursa, podremos suponer que un Alumno cursa varias asignaturas mientras que una Asignatura la cursan varios Alumnos. Quedaría representado de la siguiente manera:
En este caso, no será necesario que todos los alumnos cursen una asignatura o que una asignatura sea cursada por todos los alumnos para que la relación se establezca. Por tanto, en este caso se establece que entre esas dos entidades existe una relación a la que podríamos llamar cursa.
Se conoce como Diagrama Entidad/Relación (E/R) al diagrama resultante de modelar un mundo real siguiendo el modelo Entidad/Relación. Como resultado, se modelan todas las entidades con sus atributos, así como todas las relaciones existentes entre ellas, junto con su cardinalidad.
También es posible representar otro tipo de relaciones entre objetos de nuestro sistema. La relación de herencia, representada como un triángulo (ver figura), expresa que un objeto es un subtipo de otro objeto. También se suele considerar al subtipo como una especialización del primero o al primero como una generalización del segundo.
En el caso del ejemplo, existen dos tipos de empleados que se relacionan de forma diferente con otros objetos del sistema, pero que a su vez pueden tener gran parte en común. Por ejemplo, trabajan de forma diferente pero muchos de los datos personales que almacenaremos de ambos son comunes. Es por eso que el objeto Empleado se puede considerar una generalización de los dos tipos de trabajadores que hay en el sistema. Todos aquellos atributos y relaciones que tengan en común se podrá representar como atributos y funcionalidad del objeto Empleado y los atributos y relaciones que tengan como trabajadores especializados serán representados en el correspondiente objeto.
Es posible que la misma entidad ocupe ambos lados de una relación. En ese caso estamos frente a lo que se conoce como relaciones reflexivas. La cardinalidad de la relación indicará si todos los elementos de la relación están relacionados reflexivamente o bien sólo algunos están relacionados entre sí. En el caso de la figura podríamos suponer una empresa en la que algunos empleados hacen de supervisor de otros empleados.
Los atributos multivaluados son aquellos atributos que pueden contener una cantidad indeterminada de valores. Un atributo multivaluado es un atributo que puede tener más de un valor asociado para una sola entidad o registro en una tabla. Esto va en contra de las reglas de normalización de bases de datos, específicamente de la Primera Forma Normal (1FN), que requiere que los atributos sean atómicos (es decir, contengan un solo valor por celda).
Los atributos estructurados o compuestos son aquellos atributos que pueden estar compuestos por otros atributos. Normalmente son atributos que pueden descomponerse aunque dependiendo del contexto de la aplicación puede no interesar hacer esa descomposición y tratarlo como un atributo simple.
Un atributo estructurado es un atributo que está compuesto por múltiples subcomponentes que tienen su propio significado independiente. También se conoce como atributo compuesto. Estos subcomponentes pueden ser desglosados para facilitar el almacenamiento y la manipulación de datos en la base de datos.
CREATE TABLE Usuario (
ID_Usuario INT PRIMARY KEY,
Nombre VARCHAR(100),
Direccion VARCHAR(255) -- Atributo estructurado
);
En el diseño de bases de datos relacionales, los atributos estructurados generalmente se descomponen en atributos simples para cumplir con las reglas de normalización.
El atributo Dirección puede ser un atributo estructurado porque está compuesto por varios subcomponentes como Calle, Número, Ciudad, Estado y Código Postal.
"Calle 123, Número 45, Ciudad XYZ, Estado ABC, CP 67890"
CREATE TABLE Usuario (
ID_Usuario INT PRIMARY KEY,
Nombre VARCHAR(100),
Calle VARCHAR(100),
Numero VARCHAR(10),
Ciudad VARCHAR(50),
Estado VARCHAR(50),
Codigo_Postal VARCHAR(10)
);
Flexibilidad en las Consultas: Puedes buscar, ordenar o filtrar datos basados en cualquier subcomponente.
SELECT Nombre
FROM Usuario
WHERE Ciudad = 'XYZ';
Mejoras en la Consistencia: Al tratar cada subcomponente como un atributo independiente, es más fácil evitar errores y mantener los datos consistentes.
Cumplimiento con la Normalización: Se evita almacenar múltiples valores en un solo atributo, asegurando que los datos sean atómicos.
Un atributo estructurado agrupa varios subcomponentes en una única unidad lógica, pero en bases de datos relacionales, es mejor descomponerlo para cumplir con los principios de diseño y mejorar la flexibilidad.
Los atributos derivados (o calculados) son aquellos atributos cuyo valor puede ser deducido realizando algunas operaciones con otros atributos de la misma entidad o de otras entidades. En algunas situaciones se podría considerar redundante (puesto que su valor se puede deducir) pero en otras puede resultar cómodo almacenarlo ya calculado puesto que se puede ahorrar mucho tiempo de cómputo si se trata de un valor de díficil y/o recurrente cálculo.
Es decir, atributo derivado es un atributo que no se almacena directamente en una tabla de base de datos, sino que se calcula o deriva a partir de otros atributos almacenados. Por ejemplo, un atributo derivado podría ser el cálculo de una edad a partir de una fecha de nacimiento o el precio total basado en una cantidad y un precio unitario.
Campo que no puede repetir ninguna ocurrencia de entidad. Es decir identifica unívocamente a una entidad. Puede ser una clave atómica o bien una clave compuesta, es decir la clave está compuesta por un conjunto de atributos.
Se trata de un atributo propio de una relación y que no puede ser cedido a las entidades.
Cada una de las características que tiene una entidad pertenece a un dominio. El dominio representa la naturaleza del dato. En bases de datos, un dominio es el conjunto de valores posibles que un atributo puede tener. Cada atributo en una tabla está asociado a un dominio, que define el tipo de datos permitido y, en algunos casos, las reglas adicionales (como rangos de valores o restricciones). Los dominios garantizan la integridad y consistencia de los datos almacenados.
Edad INTEGER CHECK (Edad BETWEEN 18 AND 65);
Aquí, el dominio define:
Otro ejemplo: Un atributo Correo_Electronico podría tener el dominio de texto que cumpla un formato específico mediante un patrón de expresión regular.
Empleado(ID_Empleado, Nombre, Edad, Departamento)
ID_Empleado | Nombre | Edad | Departamento
1 | Juan Pérez | 30 | Finanzas
2 | Ana Rodríguez | 25 | Marketing
Dominios definen qué valores son válidos para cada atributo, contribuyendo a la integridad de los datos.
Intensión describe la estructura lógica y estática de una tabla.
Extensión es el contenido actual de la tabla y cambia con el tiempo.
NOT NULL
null
lo son por defectoChen; IDEF1X; Bachman; Martin / iE / Crow’s Foot; Min Max / ISO; UML