1. Conversión a modelo relacional
Uno de los pasos más importantes a la hora de crear una base de datos es el análisis y diseño de ésta, el cual hemos realizado en el punto anterior. Para ello estudiamos todos sus elementos para extraer la información de una manera ordenada y poder plasmarla en una base de datos.
El siguiente paso consiste en convertir el modelo entidad relación en un modelo relacional, ya que el primero consiste en un modelo conceptual de alto nivel y es necesario convertirlo en un esquema que sea compatible con un sistema gestor de bases de datos.
2. Fases
El paso del modelo conceptual al relacional se realiza mediante una serie de pasos que nos ofrecerán una serie de ventajas:
- Independencia física: el modo de almacenamiento no influye en la definición de los datos
- Indpendencia lógica: las operaciones sobre los datos no afectan a los tratamientos
- Flexibilidad: para ofrecer distintos esquemas externos
- Uniformidad: que facilita el empleo de los datos
- Sencillez: es fácil de comprender y utilizar
2.1. Transformación de entidades y atributos
2.1.1. Entidades
Cada entidad del modelo entidad-relación generará una tabla.
Ejemplo
- Nombre: cadena de 20 caracteres
- Apellidos: cadena de 30 caracteres
- Dni: cadena de 9 caracteres
- Dirección: cadena de 40 caracteres
- Teléfonos: cadena de 10 caracteres
- Edad: número de tres dígitos
- Fecha nacimiento: fecha
- Nombre: cadena de 10 caracteres
- Código: cadena de 5 caracteres
- NIF: cadena de 8 caracteres
- Nombre: cadena de 10 caracteres
- Dirección: cadena de 40 caracteres
Las tablas en este caso serán las entidades:
- Clientes
- Productos
- Proveedores
2.1.2. Atributos
Una vez tenemos claras las tablas, debemos pasar a distinguir las columnas de las que se compondrán las tablas. Para ello, tenemos que fijarnos en los atributos que tienen las entidades:
- Cada atributo simple se convertirá en una columna
- Uno de los atributos, concretamente la clave principal, se convertirá en clave principal de la tabla
- Cada atributo multivaluado se convertirá en otra tabla cuya clave principal será la unión de la clave primaria de la otra tabla y el atributo
- Cada atributo compuesto se convertirá en tantas columnas como atributos lo compongan
Ejemplo
Si observamos el ejemplo anterior, obtenemos que las entidades contendrán los siguientes atributos:
- Clientes: nombre, apellidos, dni, dirección, fecha_nacimiento, edad
- Productos: nombre, código
- Proveedores: nombre, nif, dirección
Las claves primarias serán: dni para la tabla Clientes, código para la tabla Productos y nif para la tabla Proveedores. Además, al ser teléfono un atributo multivaluado, se creará otra tabla nueva llamada Teléfonos con dos campos: dni y teléfono, y cuya clave primaria serán, también, ambos campos.
Otro elemento importante en el que tenemos que hacer hincapié es el de los tipos, ya que en el modelo entidad-relación nos los darán, y seremos nosotros los encargados de pasarlos a los tipos del sistema gestor de base de datos.
Si tuviéramos algún atributo compuesto como el que se muestra en la figura:
El proceso sería sencillo:
- Primero identificamos las entidades y las transformamos en tablas (Usuario)
- Después observamos los atributos y nos daremos cuenta de que son todos compuestos, por lo que cogeremos los atributos en los que se componen.
2.2. Transformación de relaciones
La transformación de relaciones tiene especial relevancia debido a que va unida a las cardinalidades de éstas.
2.2.1. Relaciones 1:1
El primer caso que veremos será el de las relaciones 1:1, la cual relacionará cada ocurrencia de una entidad con la otra ocurrencia de la otra entidad y viceversa. En este caso se seleccionará una de las entidades y se le añadirá, como clave ajena, la clave primaria de la otra entidad, aunque se le deberá añadir una restricción a la clave foránea para que sea única.
Ejemplo
Si observamos el ejemplo siguiente:
observamos que la relación es 1:1, con lo que debemos seleccionar una de las entidades (vamos a seleccionar departamento), y pasarle, como clave ajena, la clave primaria de la tabla director. De este modo, quedará de la siguiente manera:
2.2.2. Relaciones 1:N
El segundo caso es el de las relaciones 1:N, es decir, aquellas en las que cada ocurrencia de una entidad se relaciona con más de una de la otra entidad, pero las ocurrencias de cada entidad sólo se relacionan con una de la primera entidad. La solución pasará por añadir, a la entidad que se encuentra al lado del N del vínculo, la clave primaria de la otra entidad como una clave ajena.
Ejemplo
Ponemos un ejemplo para que se vea mejor:
Observamos que la relación es 1:N, por lo que debemos insertar, en la tabla ALUMNO, una nueva columna que se corresponderá con la clave primaria de la tabla CURSO:
2.2.3. Relaciones N:M
El tercer caso es el de las relaciones N:M, es decir, aquel en el que cada ocurrencia de una entidad se corresponde con varias de la otra entidad y viceversa. Este caso se resuelve mediante la creación de una tabla intermedia cuyas columnas serán las claves primarias de ambas entidades y cuya clave primaria serán los atributos que sean claves primarias de ambas tablas.
Ejemplo
Como ejemplo:
Observamos que la relación es N:M, por lo que creamos una nueva tabla con el nombre de la relación (ASISTE) y cuyas columnas serán DNI y CÓDIGO:
3. Ejemplos de diseño
3.1. Gabinete de abogados
Dado el siguiente esquema entidad-relación y el listado de dominios, generaremos el modelo relacional:
DOMINIOS:
- num expediente: número 4 dígitos
- fecha inicio: fecha
- fecha fin: fecha
- estado: cadena de 10 caracteres
- dni: cadena de 9 caracteres
- nombre: cadena de 20 caracteres
- apellidos: cadena de 20 caracteres
- dirección: cadena de 30 caracteres
- fecha nacimiento: fecha
- número colegiado: número de 5 dígitos
- casos ganados: número de 5 dígitos
3.1.1. Fase 1
Primero transformamos las entidades en tablas y los atributos en columnas:
El atributo compuesto (período), tal y como hemos explicado, se descompondrá en los dos de los que se compone (fecha inicio y fecha fin).
3.1.2. Fase 2
El siguiente paso es transformar las relaciones. Para ello, la relación corresponder, al ser 1:N, hará que se pase la clave primaria de la tabla cliente a la tabla asunto como clave ajena. Además, la relación llevar, al ser N:M, se convertirá en una tabla con las columnas dni y num_expediente, es decir, las claves primarias de ambas tablas:
3.2. Videoclub
Dado el siguiente esquema entidad-relación y el listado de dominios generaremos el modelo relacional:
DOMINIOS:
- número: número de 4 dígitos
- nombre: cadena de 30 caracteres
- dirección: cadena de 30 caracteres
- teléfono: cadena de 10 caracteres
- director favorito: cadena de 30 caracteres
- título: cadena de 30 caracteres
- género: cadena de 10 caracteres
- director: cadena de 30 caracteres
- actor: cadena de 30 caracteres
- año: número de 4 dígitos
- estanterías: número de 2 dígitos
- total películas: número de 2 dígitos
- fecha compra: fecha
- num serie: cadena de 10 dígitos
- ubicación: cadena de 10 dígitos
3.2.1. Fase 1
Primero transformamos las entidades en tablas y los atributos en columnas:
Como se puede observar, los atributos multivaluados directores y actores se convierten en tablas cuyos atributos son: el propio atributo y la clave primaria de la tabla con la que se relacionan.
3.2.2. Fase 2
Ahora convertimos las relaciones:
En el caso de la relación sacar, como es N:M, se convierte en una tabla cuyas columnas son las claves primarias de las tablas con las que se relaciona. Sin embargo, en el caso de la relación guardar, al ser 1:N, el atributo num serie se introducirá en la tabla películas (parte N) como clave ajena. |