Cuando hablamos de crear una base de datos, no podemos olvidarnos del modelo de base datos; este concepto determina en muchos casos el tipo de base de datos que vamos a emplear. En esta entrada vamos a explicar en qué consisten los modelos de bases de datos y qué tipos hay.
¿Qué es un modelo de base de datos?
Un modelo de base de datos es la estructura lógica que adopta la base de base datos, incluyendo las relaciones y limitaciones que determinan cómo se almacenan y organizan y cómo se accede a los datos. Así mismo, un modelo de base de datos también define qué tipo de operaciones se pueden realizar con los datos, es decir, que también determina cómo se manipulan los mismos, proporcionando también la base sobre la que se diseña el lenguaje de consultas.
En general, prácticamente todos los modelos de base de datos pueden representarse a través de un diagrama de base de datos (en esta entrada veremos algunos).
Tipos de modelos de bases de datos
Tal y como ocurre con las bases de datos, existen diferentes tipos de modelos de bases de datos, como vamos a ver en los próximos puntos. Qué modelo elegir para nuestra base de datos dependerá, por un lado, del sistema de gestión de bases de datos que estemos usando, puesto que este debe se compatible con el modelo de datos (lo habitual es que los SGBD estén desarrollados para emplear un modelo de base de datos en concreto, aunque hay algunos compatibles con múltiples modelos).
Modelo de base de datos relacional
El modelo de base de datos relacional es uno de los más comunes. Este modelo es el que emplean las bases de datos relacionales y ordena los datos en tablas (relaciones) compuestas por columnas y filas.
Cada columna alberga un atributo de la entidad (nombre, dirección, fecha de nacimiento…); a los atributos de una relación se los llama dominio. Escogiendo un atributo en concreto o una combinación de varios tenemos una clave primaria, a la que se puede hacer referencia en otras tablas, en las que será un clave externa.
En cada fila (tupla) se incluyen datos sobre una instancia específica de la entidad (por ejemplo, un cliente específico).
Además, el modelo también representa el tipo de relaciones entre las tablas, que pueden ser uno a uno, uno a muchos o muchos a muchos.
Podéis ver la estructura del modelo relacional de base de datos en el ejemplo:
Modelo jerárquico
Si vamos a emplear una base datos jerárquica, el modelo de datos que emplearemos será el jerárquico, que se caracteriza por presentar los datos en una estructura de árbol invertido, donde cada registro tiene un único nodo raíz, del que surgen otros nodos (registros); los nodos en un mismo nivel son nodos padre, cada nodo padre tiene el mismo nodo raíz, y puede tener nodos hijos, pero los nodos hijos solo pueden tener un nodo padre. Este modelo se emplea poco actualmente.
En este modelo, los registros de un mismo nivel se clasifican en un orden específico.
Su estructura se vería como en el siguiente ejemplo:
Modelo de red
El modelo en red de base de datos parte del modelo jerárquico, pero aquí se permiten las relaciones de uno a muchos o de muchos a muchos entre registros vinculados, teniendo registros principales múltiples. El modelo se crea a través de conjuntos de registros relacionados; cada uno de estos conjuntos consiste en un registro propietario o principal y uno o más registros miembros o secundarios. Además, un registro puede ser miembro o secundario en diferentes conjuntos. Es decir, que en este modelo se permite que los nodos hijos tengan más de uno nodo padre, de manera que se pueden representar relaciones más complejas.
Aquí podéis ver un ejemplo de este modelo de base de datos de red.
Modelo orientado a objetos
El modelo de la base de datos orientada a objetos define la base de datos como una colección de objetos utilizados en la programación orientada a objetos (es decir, que emplear lenguajes como C++ o Java, por ejemplo). Este modelo de base de datos utiliza tablas también, pero no solo se limita a ellas y permite almacenar información muy detallada sobre cada objeto.
Los objetos se dotan de un conjunto de características propias, que a su vez les diferencian de objetos similares. Los objetos similares pueden agruparse en una clase y cada objeto de esta es una instancia. Las clases intercambian datos entre sí a través métodos (mensajes).
Modelo relacional de objetos
El modelo relacional de objetos combina en un modelo híbrido el modelo de base de datos relacional y el orientado a objetos, de manera que funciona de manera similar al relacional, pero incorpora funciones del modelo orientado a objetos, como los propios objetos, las clases, la herencia y el poliformismo. Además, permite una mejor escalabilidad y se pueden almacenar un gran volumen de datos dentro de las clases.
Modelo entidad-relación
El modelo entidad-relación es básicamente el paso previo a uno modelo de bases datos relacional, puesto que se trata de un diagrama elaborado a través de unos elementos básicos y su relación entre ellos:
- Entidades (son los objetos que se representan en la base de datos).
- Atributos (son el contenido de la entidad, sus características). A los atributos se les asigna un clave para distinguirlos de los demás registros.
- Relación (el vínculo que define la dependencia entre varias entidades).
- Cardinalidad (es la participación entre entidades, que pueden ser uno a uno, uno a varios o varios a varios).
En el diagrama las entidades se representan con un rectángulo, las relaciones con un rombo y los atributos con un óvalo. Lo vemos en un ejemplo:
Modelo de archivo invertido
El modelo de archivo invertido, también llamado de índice invertido, contiene datos que se usan como claves en una tabla de consulta, los valores en la tabla se emplear como punteros a la localización de cada instancia. Actualmente se emplea como índice de las bases modernas de datos, ya que se trata de tablas de consulta en las que se introduce un contenido mínimo.
Modelo plano
El modelo de bases de datos plano, los datos se estructura en dos dimensiones (de hay lo de estructura plana), en la que todos los objetos en una columna concreta tienen valores del mismo tipo y todos los objetos de la misma fila están relacionados entre ellos.
Por ejemplo, en una base de datos que recoja solo el nombre de usuario y la contraseña, cada fila recogerá el nombre y la contraseña correspondiente para cada usuario.
Este modelo tabular de base de datos es el precursor del modelo relacional.
Modelo multidimensional
El modelo de base de datos multidimensional está pensado para la creación de aplicaciones específicas OLAP (procesamiento analítico en línea). Este modelo de base de datos se puede visualizar como un cubo de datos en el que se representan diferentes dimensiones de los datos disponible; las dimensiones de los cubos se corresponden con la de la tabla y el valor almacenado en cada celda equivale al valor de la métrica.
Este modelo combina el modelo relacional con el jerárquico y permite extraer datos de forma selectiva y eficaz. Sin embargo, tiene un inconveniente, y es que no se puede modificar su estructura, lo que obliga a diseñarlos desde cero cuando hay que introducir cambios.
Modelo semiestructurado
Cuando los datos no encajan en el formato de tablas, filas y columnas, sino que se organizan meditante etiquetas con las que se los puede agrupar y crear jerarquías (como ocurre con los datos de una página web), estamos hablando de datos semiestructuradors.
Para ordenador estos datos en una base de datos, podemos recurrir al modelo semiestructurado. En este modelo no hay separación entre los datos y el esquema y resulta útil para describir sistemas o describir interacciones entre bases de datos no que se acogen al mismo esquema.
Modelo de contexto
El modelo de contexto se puede usar cuando se necesita incorporar elementos de otros modelos de bases de datos. Puede adoptar elementos de modelos orientados a objetos, semiestructurados y en red.
Modelo asociativo
En modelo asociativo los datos se dividen en entidad y asociación, de manera que una entidad es todo lo que existe de manera independiente y una asociación es algo que solo existen en relación a algo más. Así, los datos se estructuran en dos grupos:
- Elementos, donde cada uno tiene un identificador único, un nombre y un tipo.
- Enlaces, donde cada tiene un identificador único e identificadores únicos de una fuente, verbo u objeto. La información almacenada está relacionada con la fuente y cada uno de los tres identificadores pueden hacer referencia a un enlace o a un elemento.
Modelos de bases de datos NoSQL
Ya hemos visto un modelo de bases de datos NoSQL, también llamadas bases de datos no relacionales, el modelo de base de datos orientado a objetos, pero existen otros:
- Modelo de base de datos gráfico, similar al de red, pero más flexible, puesto que permite que cualquier nodo se pueda conectar a cualquier otro.
- Modelo multivalor, que nace del modelo relacional, pero en el que los atributos pueden contener una lista de datos en vez de un solo punto de datos.
- Modelo de documentos, empleado para almacenar y administrar documentos o datos semiestructurados, en vez de datos atómicos (como hacen las bases relacionales).
Ventajas y desventajas de los modelos de datos
A la hora de hablar de ventajas y desventajas de los modelos de datos, tenemos que pensar en cada uno de los modelos que hemos visto, puesto que cada uno cuenta con una serie de beneficios e inconvenientes que debemos tener en cuenta al elegir qué base tipo de base de datos vamos a diseñar y crear. Por ejemplo, puede que para un modelo de base de datos para un inventario nos interese usar un modelo relacional en vez de uno no relacional.
Pero en vez de ir modelo a modelo, vamos a agrupar las ventajas y las desventajas en torno a modelos de bases de datos SQL (como las relacionales) y modelos de bases de datos NoSQL (como pueden ser las orientadas a objetos).
Ventajas modelos SQL:
- Portabilidad entre plataformas.
- Madurez. Llevan empleándose mucho tiempo y su uso está muy extendido, lo que ha generado mucha información y herramientas en torno a ellas.
- Atomicidad (si una operación no cumple los criterios para ejecutarse, no se ejecuta).
- Estándares definidos por el lenguaje SQL, lo que crea criterios de uniformidad de la información.
- Escritura simple que facilita la compresión de las operaciones.
Desventajas del modelo SQL:
- Tienen dificultades para crecer cuando aumenta el volumen de los datos a almacenar.
- Si es necesario introducir cambios en la base de datos, es necesario modificar toda la estructura.
- Complejidad en la instalación, ya que estos modelos se ven condicionados por el sistema operativo en el que deben funcionar.
- Interfaz compleja.
- Se pueden implementar características de forma patentada, que pueden bloquear al proveedor.
Ventajas modelos NoSQL:
- Pueden gestionar y manejar grandes volúmenes de datos, por lo que se puede utilizar para aplicaciones Big Data.
- Facilita la administración de la base de datos, puesto que cuenta con capacidades de distribución de datos y reparación automática.
- Son versátiles, puesto que permiten el crecimiento en el volumen de datos, así como introducir cambios sin necesidad de modificar la estructura.
- Son muy escalables.
- Son económicas gracias a su adaptabilidad y flexibilidad.
Desventajas del modelo SQL:
- Poca madurez y uso minoritario.
- Algunos de estos modelos no tienen atomicidad.
- Su uso relativamente reciente tiene como consecuencia la falta de estandarización en el lenguaje que emplean y una falta de información sobre las herramientas que emplean y sus características.
- Muchas de estas bases de datos carecen de interfaz gráfica.
¿Cómo realizar un modelado de datos?
El primer paso antes de diseñar una base de datos es modelar los datos que vamos a almacenar en ella. El modelado de datos puede adoptar diferentes enfoques (conceptual, empresarial, lógico o físico) y consiste en la realización de una serie de tareas previas:
- Identificar tipos de entidades
- Identificar atributos
- Aplicar convenciones de nomenclatura
- Identificar relaciones
- Aplicar modelos de modelos de datos
- Asignar claves
- Normalizar para reducir la redundancia de datos
- Desnormalizar para mejorar el rendimiento
Escribe aquí tu comentario