El documento describe la conversión de un modelo entidad-relación a una base de datos. En el primer caso, las entidades se convierten en tablas y las relaciones en campos clave foránea o tablas de detalle normalizadas. En el segundo caso, se aplica la misma conversión y también la propagación de claves para eliminar relaciones de uno a muchos.
1. DISEÑO DE BASE DE DATOS EMPLEANDO
MODELOS ENTIDAD-RELACION
Caso I
Dado el siguiente modelo E-R
pertenece
suministro
cuenta_
contable
descripcion
stockactualcodsuministro
subcta
cuenta
Ingresoproveedor
ruc razon
direccion
CodProveedor
clase
descripcion
medida
fecha
tipocambioMoneda
Numero
Convertiremos los conjuntos de entidades en relaciones:
PROVEEDOR(Codproveedor, ruc, razon, direccion)
SUMINISTRO(codsuministro,descripcion, medida, stockactual)
CUENTA_CONTABLE(cuenta, subcta, clase, descripcion)
Ahora veamos la conversión de las interrelaciones:
INGRESO(numero, codproveedor, codsuministro, fecha, moneda, tipocambio)
PERTENECE(codsuministro, cuenta)
Aquí podemos aplicar la propagación de claves entre conjuntos de entidades que mantengan una
interrelación muchos a uno o uno a uno. En este caso, la interrelación:
• Entre Suministro y Cuenta_contable se cumple la condición de muchos a uno, de modo
que se puede eliminar la interrelación pertenece y propagar la clave de
Cuenta_Contable a la entidad Suministro.
2. PROVEEDOR(Codproveedor, ruc, razon, direccion)
SUMINISTRO(codsuministro, descripcion, medida, stockactual, cuenta)
CUENTA_CONTABLE(cuenta, subcta, clase, descripcion)
INGRESO(numero, codproveedor, codsuministro, fecha, moneda, tipocambio)
Aquí podemos ver que la relación ingreso contiene atributos que pueden normalizarse,
aplicamos las reglas de normalización y obtenemos la siguiente estructura.
PROVEEDOR(Codproveedor, ruc, razon, direccion)
SUMINISTRO(codsuministro, descripcion, medida, stockactual, cuenta)
CUENTA_CONTABLE(cuenta, subcta, clase, descripcion)
INGRESO(numero, fecha, codprovedor, moneda, tipocambio)
DETA_INGRESO(numero, codsuministro,cantidad, precio)
Nota que podemos adicionar otros atributos propios de la tabla DETA_INGRESO.
La representación final sería la siguiente:
codsuministro
descripcion
medida
stockactual
cuenta
Codproveedor
Ruc
Razon
Direccion
Cuenta
Subcta
Clase
Descripcion
Proveedor Cuenta_contable
Suministro
Numero
Fecha
Moneda
Tipocambio
codigo
Numero
codsuministro
Cantidad
Precio
Ingreso
Deta_ingreso
3. Caso II
Dado el siguiente modelo E-R
tienelibro especialidad
registro
paginas
codlibro nombrecodespecialidad
pertenece Editorial
nombre direccion
telefono
codeditorial
escrito_por autor
nombre
email
codautor
titulo
alumno presta
nombre
ciclo
codalumno
escuela
fecha_
presta
fecha_
devolucion
Convertiremos los conjuntos de entidades en relaciones:
ALUMNO(Codalumno, Nombre, Escuela ,Ciclo)
LIBRO(CodLibro, Registro, Titulo, Paginas)
ESPECIALIDAD(Codespecialidad, Nombre)
AUTOR(CodAutor, Nombre, email)
EDITORIAL(codEditorial, Nombre, Dirección, Teléfono)
Recordemos que Presta es una entidad compuesta:
PRESTA(codalumno, codlibro, Fecha_préstamo, Fecha_devolución, observacion)
Ahora veamos la conversión de las interrelaciones:
TIENE(codLibro, codespecialidad)
ESCRITO_POR(Codlibro, Codautor)
PERTENECE(Codlibro, Codeditorial)
4. Aquí podemos aplicar la propagación de claves entre conjuntos de entidades que mantengan una
interrelación muchos a uno o uno a uno. En este caso, la interrelación:
• Entre Libro y Editorial se cumple esa condición, de modo que podemos eliminar la
interrelación pertenece y propagar la clave de Editorial a la entidad Libro.
• Del mismo modo la interrelación Libro y Especialidad es de Muchos a uno, por lo tanto
se elimina la interrelación Tiene y se propaga la clave de Especialidad a la entidad
Libro.
ALUMNO(Codalumno, Nombre, Escuela ,Ciclo)
LIBRO(Codlibro, registro, titulo, paginas, codeditorial, codespecialidad)
ESPECIALIDAD(codespecialidad, Nombre)
AUTOR(Codautor, Nombre, email)
EDITORIAL(codeditorial, Nombre, Dirección, Teléfono)
PRESTA(Codalumno, codlibro,Fecha_presta,Fecha_devolución, observación)
ESCRITO_POR(Codlibro, Codautor)
Nota, que igual al ejemplo anterior puedes normalizar la tabla PRESTA, quedando la siguiente
estructura, también nota que puedes agregar un campo número el cual va a servir de su clave
primaria.
ALUMNO(Codalumno, Nombre, Escuela ,Ciclo)
LIBRO(Codlibro, registro, titulo, paginas, codeditorial, codespecialidad)
ESPECIALIDAD(codespecialidad, Nombre)
AUTOR(Codautor, Nombre, email)
EDITORIAL(codeditorial, Nombre, Dirección, Teléfono)
PRESTA(numero, Codalumno, Fecha_presta,Fecha_devolución, observación)
DETA_PRESTA(numero, codlibro)
ESCRITO_POR(Codlibro, Codautor)
Su representación sería la siguiente: