Clasificación de acuerdo al nivel de abstracción.
Existen diferentes tipos de diseño de datos que se adaptan a lo largo del proceso de la elaboración de la base de datos, es decir, estos diseños son utilizados en las etapas del diseño de bases de datos como por el ejemplo el diseño conceptual, diseño lógico y diseño físico.
1. Modelos de datos conceptuales
Estos modelos son diseños semánticos y autónomos independientemente del tipo de base de datos que se procura crear, los mismos que reciben el nombre de diseños lógicos.
Hoy en día el modelo Entidad Interrelación es el modelo de datos más usado, mientras que otros autores definen que el modelo propuesto por Chen, conocido como el modelo extendido Entidad Relación es el más utilizado en la actualidad.
1.1. Modelos Entidad Relación
Chen plantea como elementos básicos del Modelo Entidad Relación a las entidades, relaciones y atributos:
- Entidad: Una entidad es como un objeto del cual se desea almacenar información en la base de datos. Por ejemplo, si deseamos crear una base de datos para una biblioteca, las entidades vendrían a ser los usuarios, libros, autores de los libros, ejemplares, etc. Las entidades son representadas a través de rectángulos.
- Relación: Es la correspondencia entre entidades. Las relaciones se representan por medio de un rombo con el respectivo nombre en su interior.
- Atributo: Los atributos son las características de una entidad. Los atributos son representados de varias maneras; con un óvalo y el nombre del respectivo atributo en su interior puede ser incorporado directamente con la entidad o con la relación.
1.2. Diseño orientado a objetos
A raíz de que se formaron nuevos métodos de análisis y diseño orientado a objetos esto dio paso al Lenguaje de Modelado Unificado (UML), el mismo que constituye una serie de reglas empleadas al momento de crear cualquier tipo de diagrama.
El modelo orientado a objetos está constituido por los siguientes elementos:
- Clase: Se considera clase a un objeto cualquiera sobre el que se desea almacenar información en la base de datos.
- Atributo: Los atributos vienen hacer las características de una clase, es decir la información que se espera guardar sobre ella.
- Método: Los métodos son las operaciones que se van a aplicar sobre una clase. Por ejemplo, para la clase libro tendríamos como métodos: solicitar y devolver un libro por parte del usuario a la biblioteca.
- Relación: Las relaciones son las respectivas agrupaciones que se dan entre las clases. Existen varios tipos de relaciones en el lenguaje de modelado unificado como son:
asociación, jerarquía o generalización, agregación y composición, cada una de ellas serepresenta de forma distinta.
A continuación, se muestra un ejemplo de un diagrama de clases sobre una biblioteca.
Figura. 3: Diagrama de clases para una biblioteca.
2. Modelos de datos lógicos
Estos modelos son usados para crear un diseño lógico que represente la estructura la base de datos que se va a diseñar. Un diseño lógico parte del diseño conceptual. Existen tres modelos de datos lógicos: el modelo jerárquico, modelo en red y el más usado en la actualidad el modelo relacional.
2.1. Modelo jerárquico
Este modelo usa una estructura en forma de árbol, en la cual el padre puede poseer cualquier número de hijos, pero un hijo solo puede tener un padre.
A continuación, se mostrará el ejemplo de un diagrama de estructura de árbol con dos ejemplos de registros: sucursal y empleados, en donde varios empleados pueden tener muchos hijos.
Figura. 4: Esquema de una base de datos jerárquica.
2.2. Modelo en red
Este modelo maneja una estructura no lineal en la que cada registro hijo puede tener más un nodo padre. La simbología de las entidades son nodos de un grafo y las asociaciones, mediante los arcos.
Codasyl se considera como el modelo en red más extenso. En la figura 5 se observa un ejemplo de la forma de la información en este diseño de datos.
Figura. 5: Esquema de una base de datos en red.
2.3 Modelo relacional
En este modelo se hace uso de las tablas para la forma lógica de los datos y sus relaciones, este modelo es creado por Codd en el año de 1970. Se denomina tupla a cada fila de la tabla y atributo o campo a cada columna de la tabla. El campo principal de una tabla que marca la diferencia entre otros campos es la clave.
En la siguiente figura 6 se mostrará la información que se desea almacenar en la base de datos. Ésta manejará información sobre la sucursal de una empresa y sus empleados.
Figura. 6: Diseño de una base de datos relacional con datos.
3. Modelos de datos físicos
El diseño físico es la última etapa del diseño de una base de datos el cual consiste en crear en un SGBD los elementos que formarán parte de la base de datos. En el caso de una base de datos relacional se debería crear tablas, disparadores, vistas, índices, etc.
Una base de datos relacional está compuesta por una o varias tablas. Para la creación de una tabla mediante el lenguaje de definición de datos se utiliza la instrucción CREATE TABLE. Es necesario definir los atributos por los que estará compuesta una tabla como son: nombre, tipo de datos y restricciones asociadas al atributo.
A continuación, veremos un ejemplo de cómo crear en el SGBD Oracle la base de datos relacional, utilizando el mismo diseño lógico que se muestra en la figura 2, para lo cual se utilizarían las siguientes instrucciones CREATE TABLE:
create table Autor
(Código char (5) primary key,
Nombre varchar2 (30));
create table Libro
(Código char (7) primary key,
Título varchar2(60) not null,
ISBN char (10) unique,
Editorial varchar2(0),
Paginas number (5,0) check (Paginas >0));
create table Ejemplar
(Codlibro char (7) references Libro (Código),
Localización varchar2(60) references Autor (Nombre),
primary key (CodLibro, Localización));
create table Usuario
(Código number (7) primary key check (Codigo >0),
Nombre varchar2(40) not null,
Teléfono char(9) not null),
Dirección varchar2(60));
create table Prestamo
(Codlibro char(8) references Libro (Código),
Código number(6) references Usuario (Código),
Fech_Pres date,
Fech_dev date,
primary key (CodLibro, Código, Fech_Pres, Fech_dev));