Un diagrama o modelo entidad-relación (a veces denominado por sus siglas, E-R "Entity relationship", o, "DER" Diagrama de Entidad Relación) es una herramienta para el modelado de datos de un sistema de información. Estos modelos expresan entidades relevantes para un sistema de información así como sus interrelaciones y propiedades.
El modelo de datos entidad-relación está basado en una percepción del mundo real que consta de una colección de objetos básicos, llamados entidades, y de relaciones entre esos objetos.
Entidad
Representa una “cosa” u "objeto" del mundo real con existencia independiente, es decir, se diferencia unívocamente de cualquier otro objeto o cosa, incluso siendo del mismo tipo, o una misma entidad.
Algunos Ejemplos:
- Una persona. (Se diferencia de cualquier otra persona, incluso siendo gemelos).
- Un automóvil. (Aunque sean de la misma marca, el mismo modelo,..., tendrán atributos diferentes, por ejemplo, el número de bastidor).
- Una casa (Aunque sea exactamente igual a otra, aún se diferenciará en su dirección).
Una entidad puede ser un objeto con existencia física como: una persona, un animal, una casa, etc. (entidad concreta); o un objeto con existencia conceptual como: un puesto de trabajo, una asignatura de clases, un nombre,etc. (entidad abstracta).
Una entidad está descrita y se representa por sus características o atributos. Por ejemplo, la entidad Persona puede llevar consigo las características: Nombre, Apellido, Género, Estatura, Peso, Fecha de nacimiento, etc...
Atributos
Los atributos son las caracteristicas que definen o identifican a una entidad, estas pueden ser muchas, y solo el diseñador utiliza o implementa las que considere mas relevantes. Los atributos son las propiedades que describen a cada entidad en un conjunto de entidades.
Un conjunto de entidades dentro de una entidad, tiene valores específicos asignados para cada uno de sus atributos, de esta forma, es posible su identificación unívoca.
Ejemplos:
A la colección de entidades Alumnos, con el siguiente conjunto de atributos en común, (id, nombre, edad, semestre), pertenecen las entidades:
- (1, Sofia, 38 años, 2)
- (2, Josefa, 19 años, 5)
- (3, Carlos, 20 años, 2)
- ...
Cada una de las entidades pertenecientes a este conjunto se diferencia de las demás por el valor de sus atributos. Nótese que dos o más entidades diferentes pueden tener los mismos valores para algunos de sus atributos, pero nunca para todos.
En particular, los atributos identificativos son aquellos que permiten diferenciar a una instancia de la entidad de otra distinta. Por ejemplo, el atributo identificativo que distingue a un alumno de otro es su número de id.
Para cada atributo, existe un dominio del mismo, este hace referencia al tipo de datos que será almacenado o a restricciones en los valores que el atributo puede tomar (Cadenas de caracteres, números, solo dos letras, solo números mayores que cero, solo números enteros...).
Cuando una entidad no tiene un valor para un atributo dado, este toma el valor nulo, bien sea que no se conoce, que no existe o que no se sabe nada al respecto del mismo.
Relación
Describe cierta dependencia entre entidades o permite la asociación de las mismas.
Ejemplo:
Dadas dos entidades "Habitación 502" y "Mark", es posible relacionar que la
habitacion 502 se encuentra ocupada por el huésped de nombre Mark.
Una relación tiene sentido al expresar las entidades que relaciona. En el ejemplo anterior, Un Huésped (entidad), se aloja (relación) en una habitación (entidad).
Conjunto de relaciones
Consiste en una colección, o conjunto, de relaciones de la misma naturaleza.
Ejemplo:
Dados los conjuntos de entidades "Habitación" y "Huésped", todas las relaciones de la forma habitación-huésped, permiten obtener la información de los huéspedes y sus respectivas habitaciones.
La dependencia o asociación entre los conjuntos de entidades es llamada participación. En el ejemplo anterior los conjuntos de entidades "Habitación" y "Huésped" participan en el conjunto de relaciones habitación-huésped.
Se llama grado del conjunto de relaciones a la cantidad de conjuntos de entidades participantes en la relación.
Restricciones
Son reglas que deben mantener los datos almacenados en la base de datos. No se deben quebrantar a menos que tenga otra relacion de una tabla de uno a muchos.
Correspondencia de cardinalidades
Dado un conjunto de relaciones en el que participan dos o más conjuntos de entidades, la correspondencia de cardinalidad indica el número de entidades con las que puede estar relacionada una entidad dada.
Dado un conjunto de relaciones binarias y los conjuntos de entidades A y B, la correspondencia de cardinalidades puede ser:
- Uno a Uno: Una entidad de A se relaciona únicamente con una entidad en B y viceversa (ejemplo relación médico - paciente).
- Uno a varios: Una entidad en A se relaciona con cero o muchas entidades en B. Pero una entidad en B se relaciona con una única entidad en A (ejemplo vendedor - ventas).
- Varios a Uno: Una entidad en A se relaciona exclusivamente con una entidad en B. Pero una entidad en B se puede relacionar con 0 o muchas entidades en A.
- Varios a Varios: Una entidad en A se puede relacionar con 0 o muchas entidades en B y viceversa (ejemplo gobierno - ciudadanos).
Restricciones de participación
Dado un conjunto de relaciones R en el cual participa un conjunto de entidades A, dicha participación puede ser de dos tipos:
- Total: Cuando cada entidad en A participa en al menos una relación de R.
- Parcial: Cuando al menos una entidad en A NO participa en alguna relación de R.
EJEMPLO GENERAL
EMPRESA - BECAS
Esta base de datos se refiere a la asociación de Becas para los hijos de los trabajadores de determinada empresa.
EMPLEADO | |||
NOMBRE | TIPO | LONGITUD | DESCRIPCIÓN |
DNI_empleado | Integer | 8 | |
Nombre_empleado | Char | 30 | |
Salario | Double | 10 | |
No_Seguriad_social | Integer | 10 | |
Tipo_empleado | Integer | 1 | 1.Director 2.R.en ventas 3.Ingenieros 4.Otros |
Cargo_empleado | Char | 30 |
HIJOS | |||
NOMBRE | TIPO | LONGITUD | DESCRIPCIÓN |
DNI_Hijo | Integer | 8 | |
Nombre_hijo | Char | 30 | |
Fecha_nacimiento | Date | ||
Estudios | Char | 100 |
BECAS | |||
NOMBRE | TIPO | LONGITUD | DESCRIPCIÓN |
Codigo_becas | Integer | 8 | |
Fecha_Concesión | Date | ||
Cuantia | Double |
DPTO | |||
NOMBRE | TIPO | LONGITUD | DESCRIPCIÓN |
Codigo_Dpto | Integer | 8 | |
Nombre_Dpto | Char | 30 | |
Localización | Char | 20 | |
No_empleados | Integer | 5 |
PROYECTOS | |||
NOMBRE | TIPO | LONGITUD | DESCRIPCIÓN |
Codigo_Proyecto | Integer | 8 | |
Nombre_Proyecto | Char | 30 | |
Fecha_inicio | Date |