Las bases de datos son un gran pilar de la programación actual, ya que nos permiten almacenar y usar de forma rápida y eficiente cantidades ingentes de datos con cierta facilidad. En la actualidad se usa de forma mayoritaria las bases de datos
relacionales (dominadas por distintos gestores a través del lenguaje SQL, en gran medida).
Pero ahora vamos a dar un pequeño repaso a lo más esencial del modelo entidad-relación, que es y ha sido durante años la mejor forma de representar la estructura de estas bases de datos relacionales (o de representar sus esquemas).
¿Qué es el modelo entidad-relación?
Como ya he comentado este modelo es solo y exclusivamente un método del que disponemos para diseñar estos esquemas que posteriormente debemos de implementar en un gestor de BBDD (bases de datos). Este modelo se representa a través de
diagramas y está formado por varios elementos.
Este modelo habitualmente, además de disponer de un diagrama que ayuda a entender los datos y como se relacionan entre ellos, debe de ser completado con un pequeño resumen con la lista de los atributos y las relaciones de cada elemento.
Elementos del modelo entidad-relación
Entidad
Las entidades representan cosas u objetos (ya sean reales o abstractos), que se diferencian claramente entre sí.
Para poder seguir un ejemplo durante el artículo añadiré ejemplos sobre un taller mecánico, donde se podría crear las siguientes entidades:
Coches (objeto físico): contiene la información de cada taller.
Empleado (objeto físico): información de los trabajadores.
Cargo del empleado (cosa abstracta): información de la función del empleado. Estas entidades se representan en un diagrama con un rectángulos, como los
siguientes.
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.
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 motor).
Una casa (Aunque sea exactamente igual a otra, aun se diferenciara en su dirección).
Atributos
Los atributos definen o identifican las características de entidad (es el contenido de esta entidad). Cada entidad contiene distintos atributos, que dan información sobre esta entidad. Estos atributos pueden ser de distintos tipos (numéricos, texto, fecha...). Siguiendo el ejemplo de antes podemos analizar los atributos de nuestra entidad "Coches", que nos darán información sobre los coches de nuestro supuesto taller. Unos posibles atributos serían los siguientes: número de chasis, matrícula, DNI del propietario, marca, modelo y muchos otros que complementen la información de cada coche.
Los atributos se representan como círculos que descienden de una entidad, y no es necesario representarlos todos, sino los más significativos, como a continuación.
En un modelo relacional (ya implementado en una base de datos) una ejemplo de tabla dentro de una BBDD
podría ser el siguiente.
Número de chasis Matrícula DNI del propietario
5tfem5f10ax007210 4817 BFK 45338600L
6hsen2j98as001982 8810 CLM 02405068K
5rgsb7a19js001982 0019 GGL 40588860J
Este ejemplo es con tres atributos, pero un coche podría tener cientos (si fuese necesario) y seguirían la misma estructura de columnas, tras implementarlo en una BBDD.
información extensiva es portada por los atributos. Gráficamente, se representan mediante
bolitas que cuelgan de las entidades o relaciones a las que pertenecen.
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 univoca.
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, María, 16 años, 2)
(2, Sara, 18 años, 5)
(3, María, 17 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.
Relación
Es una correspondencia o asociación entre dos o más entidades. Cada relación tiene un
nombre que describe su función. Las relaciones se representan gráficamente mediante rombos y
su nombre aparece en el interior.
Las entidades que están involucradas en una determinada relación se denominan
entidades
participantes
. El número de participantes en una relación es lo que se denomina
grado
de la
relación. Por lo tanto, una relación en la que participan dos entidades es una relación
binaria
; si
son tres las entidades participantes, la relación es
ternaria
; etc.
Es un vínculo que nos permite definir una dependencia entre varias entidades, es decir, nos permite exigir que varias entidades compartan ciertos atributos de forma
indispensable.
Por ejemplo, los empleados del taller (de la entidad "Empleados") tienen un cargo (según la entidad "Cargo del empleado"). Es decir, un atributo de la entidad
"Empleados" especificará que cargo tiene en el taller, y tiene que ser idéntico al que ya existe en la entidad "Cargo del empleado".
Las relaciones se muestran en los diagramas como rombos, que se unen a las entidades mediante líneas.
Yo, bajo mi punto de vista, entiendo mejor esto en una tabla (de una implementación en una BBDD), por lo que voy a poner el ejemplo de como se representaría (resaltada la relación, que posteriormente veremos como se haría).
Empleados
Carlos Sánchez 45338600L 001
Pepe Sánchez 02405068K 002
Juan Sánchez 40588860J 002
Cargo del empleado
ID del cargo Descripción
001 Jefe de taller
002 Mecánico
Relaciones de cardinalidad
Podemos encontrar distintos tipos de relaciones según como participen en ellas las entidades. Es decir, en el caso anterior cada empleado puede tener un cargo, pero un mismo cargo lo pueden compartir varios empleados.
Esto complementa a las representaciones de las relaciones, mediante un intervalo en cada extremo de la relación que especifica cuantos objetos o cosas (de cada entidad) pueden intervenir en esa relación.
Uno a uno: Una entidad se relaciona únicamente con otra y viceversa. Por ejemplo, si tuviésemos una entidad con distintos chasis y otra con matrículas deberíamos de determinar que cada chasis solo puede tener una matrícula (y cada matrícula un chasis, ni más en ningún caso).
Uno a varios o varios a uno: determina que un registro de una entidad puede estar relacionado con varios de otra entidad, pero en esta entidad existir solo una vez. Como ha sido en el caso anterior del trabajador del taller.
Los indicadores numéricos indican el primero el número mínimo de registros en una relación y posteriormente el máximo (si no hay límite se representa con una "n").
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 correspondecia
de cardinalidades puede ser:
Uno a uno:
Una entidad de A se relaciona únicamente con una entidad en B y
viceversa. Por ejemplo: El noviazgo, el RFC de cada persona, El CURP personal, El
acta de nacimiento, ya que solo existe un solo documento de este tipo para cada una de
las diferentes personas.
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. Por ejemplo:
Cliente – Cuenta en un banco, Padre-Hijos, Camión-Pasajeros, zoologico- animales,
árbol – hojas.
Uno a varios:
Varios a varios: Una entidad en A se puede relacionar con 0 o muchas
entidades en B y viceversa. Ejemplo: Arquitecto – proyectos, fiesta – personas,
estudiante – materias.
NOTA:
Cabe mencionar que la cardinalidad para cada conjunto de entidades depende del punto de
vista que se le de al modelo en estudio, claro esta, sujetándose a la realidad.
Claves
Llaves primarias.
La distinción de una entidad entre otra se debe a sus atributos, lo cual lo hacen único.
Una llave primaria es aquel atributo el cual consideramos clave para la identificación de los
demás atributos que describen a la entidad. Por ejemplo, si consideramos la entidad ALUMNO
del CBTis123, podríamos tener los siguientes atributos: Nombre Apellido, Semestre,
Especialidad, Dirección, Teléfono, Número de control, de todos estos atributos el que podremos
designar como llave primaria es el número de control, ya que es diferente para cada alumno y
este nos identifica en la institución.
Claro que puede haber más de un atributo que pueda identificarse como llave primaria en este
caso se selecciona la que consideremos más importante, los demás atributos son
denominados llaves secundarias
.
Una clave o llave primaria es indicada gráficamente en el modelo E-R con una línea debajo
del nombre del atributo
aplica un vínculo (exactamente como comentábamos en las relaciones). Estos son los distintos tipos:
Superclave: aplica una clave o restricción a varios atributos de la entidad, para así asegurarse que en su conjunto no se repitan varias veces y así no poder entrar en dudas al querer identificar un registro.
Clave primaria: identifica inequívocamente un solo atributo no permitiendo que se repita en la misma entidad. Como sería la matrícula o el número de chasis de un coche (no puede existir dos veces el mismo).
Clave externa o clave foránea: este campo tiene que estar estrictamente relacionado con la clave primaria de otra entidad, para así exigir que exista previamente ese clave. Anteriormente hemos hablado de ello cuando comentábamos que un empleado
indispensablemente tiene que tener un cargo (que lo hemos representado
numéricamente), por lo cual si intentásemos darle un cargo inexistente el gestor de bases de datos nos devolvería un error.
Diagrama Entidad-Relación
Denominado por sus siglas como: E-R; Este modelo representa a la realidad a través de un
esquema gráfico empleando los terminología de entidades,
atributos y
el enlace que rige la
unión de las entidades esta representada por la
relación
del modelo.
Nuestra representación gráfica es la siguiente: Un rectángulo nos representa a las entidades;
una elipse a los atributos de las entidades, y una etiqueta dentro de un rombo nos indica la
relación que existe entre las entidades, destacando con líneas las uniones de estas y que la llave
primaria de una entidad es aquel atributo que se encuentra subrayado.
Ejemplos de diagramas Entidad - Relación
Relación UNO a UNO
Relación UNO a MUCHOS
El siguiente ejemplo indica que un cliente puede tener muchas cuentas, pero que una cuenta puede llegar a pertenecer a un solo cliente (Decimos puede, ya que existen cuentas registradas a favor de más de una persona).
Paso del modelo E-R al modelo relacional
Una base de datos relacional es un conjunto de relaciones normalizadas. Para representar el esquema de una base de datos relacional se debe dar el nombre de sus relaciones, los atributos de éstas, los dominios sobre los que se definen estos atributos, las claves primarias y las claves ajenas.
Ejemplo de una relación Muchos a Muchos y su transformación. Partiendo de nuestro diagrama E - R
Resumen:
Entidad: objeto del mundo real, que tiene interés para la empresa. Se representa utilizando rectángulos.
Conjunto de Entidades: es la totalidad de las entidades del mismo tipo que comparten las mismas propiedades o atributos. Por ejemplo, cliente, empleado, etc.
Entidad Fuerte: no depende de otra entidad para su existencia. Se representan con un rectángulo.
Entidad Débil: necesitan de otra, por lo que se relacionan con la entidad fuerte con una relación uno a varios. Se representan con un rectángulo con un borde doble.
Atributos o Campos: son las unidades de información que describen propiedades de las entidades. Se representan mediante un eclipse con el nombre en su interior.
Dominio: conjunto de valores permitido para cada atributo. Por ejemplo, el dominio del atributo DNI puede ser el conjunto de cadenas de números y texto de una longitud determinada.
Clave Candidata: es cada una de las superclaves formadas por el mínimo número de campos posibles.
Clave Primaria o Principal: es la clave candidata seleccionada por el diseñador de la BD. Una clave candidata no puede contener valores nulos, ha de ser sencilla de crear y no ha de variar con el tiempo. El o los atributos que forman esta clave se representan subrayados.
Clave Ajena: atributo o conjunto de atributos de una entidad que forman la clave primaria en otra entidad. Éstas representan las relaciones entre tablas.