Modelo Relacional
z
Modelo relacional mediante integración de vistas de usuario.
z Este método se centra en utilizar reportes e informes que debiese generar el sistema, para modelar la estructura relacional de la base de datos.
z No da una visión completa de la organización, pero puede ser útil para modelar pequeños sistemas transaccionales, de los cuáles sus funcionalidades se conocen claramente.
z
Pasos a seguir:
z Analizar documentos o reportes que generará el sistema.
z Por cada documento, identificar los campos de datos.
z Utilizar notación textual del modelo relacional, para identificar cada vista con sus campos.
z Normalizar las vistas.
z Integrar las distintas vistas, utilizando los atributos comunes entre ellas y la lógica del negocio.
Modelo Relacional
z
Para realizar una correcta integración es necesario considerar las siguientes actividades:
z Corregir problemas de sinónimos y homónimos.
z Corregir dependencias transitivas generadas por la integración.
z Representar adecuadamente generalizaciones producidas por la integración.
RUT: 77.019.370-2 FACTURA Nº 003480 IMPORTADORA PAGANINI
Importación de productos Pedro Montt 234, Valparaíso
Señores: Rut:
Dirección:
Valparaíso, de de 200
Cod Cant Descripcion P. Unit Val. Total
NETO:
IVA:
TOTAL:
Modelo Relacional
Factura(numFactura, fecha, nomCliente, rutCliente, dirCliente, codProducto, desProducto, cantidad, valorUniProd, totalProducto, netoFatura, ivaFactura, totalFactura)
Es necesario normalizar
z
Integración de vistas:
Factura(numFactura, fecha, nomCliente, rutCliente, dirCliente, codProducto, desProducto, cantidad, valorUniProd,
totalProducto, netoFatura, ivaFactura, totalFactura) DespachoProducto(numDespacho, fecha, codCliente, nomCliente, dirCliente, codProducto, cantidad, dirEnvio, rutReceptor, nomReceptor)
= Homónimos
= Sinónimos
Modelo Relacional
z
Integración de vistas:
Factura(numFactura, fechaFactura, nomCliente, rutCliente, dirCliente, codProducto, desProducto, cantidad, valorUniProd, totalProducto, netoFatura, ivaFactura, totalFactura)
DespachoProducto(numDespacho, fechaDespProd, rutCliente, nomCliente, dirCliente, codProducto, cantidad, dirEnvio, rutReceptor, nomReceptor)
z
Normalización.
z El proceso de normalización se suele utilizar cuando se realizan modelos relacionales de forma intuitiva o mediante vistas de usuario.
z El proceso de normalización tradicional cuenta con 5 pasos o niveles conocidos como formas normales.
z Existen dos formas normales adicionales, la de Boyce Codd y la de Dominio Clave.
z Una relación se considera como correctamente normalizada, si se le han aplicado las tres primeras formas normales.
z Las relaciones resultantes del proceso de normalización, deben poseer lo que se denomina dependencias funcionales.
Modelo Relacional
z
Diagramas de dependencia.
z Expresan de manera formal la dependencia que existe entre atributos de una relación.
atributoDeterminante Æ atributoDeterminado rutCliente Æ nombreCliente
z Las dependencias suelen tener un solamente un sentido; si consideramos A y B como dos atributos donde B depende de
z
Primera Forma Normal (1FN).
z Para poder llegar a la primera forma normal es necesario eliminar los atributos repetitivos de las relaciones no normalizadas.
z Los atributos repetitivos, son aquellos elementos que pueden tener diversos valores en una misma tupla de la relación.
z Es necesario indicar la clave primaria de la relación.
Modelo Relacional
z
Primera Forma Normal (1FN).
z
Pasos a Seguir:
z Enmarcar los conjuntos de atributos repetitivos entre “{}”.
z Crear una nueva relación por cada grupo repetitivo con sus atributos. La clave primaria de las nuevas relaciones estará formada por la clave primaria de la relación original, más un atributo del conjunto de atributos repetitivos que pueda servir como identificador. En caso que no exista un atributo
identificador, es necesario crear uno.
z En la relación original, se conservan aquellos atributos que no están asociados a conjuntos repetitivos.
z
Primera Forma Normal (1FN).
Factura(numFactura, fechaFactura, nomCliente, rutCliente, dirCliente, {codProducto, desProducto, cantidad, valorUniProd, totalProducto}, netoFatura, ivaFactura, totalFactura)
Factura(numFactura, fechaFactura, nomCliente, rutCliente, dirCliente, netoFatura, ivaFactura, totalFactura)
Detalle(numFactura, codProducto, desProducto, cantidad, valorUnitProd, totalProducto)
Modelo Relacional
z
Primera Forma Normal (1FN).
Factura numFactura fecha nomCliente rutCliente dirCliente netoFactura ivaFactura totalFactura
Detalle numFactura codProducto desProducto cantidad valorUnitProd totalProducto
z
Segunda Forma Normal (2FN).
z Una relación se encuentra en segunda forma normal cuando se eliminan sus dependencias parciales.
z Las dependencias parciales indican que parte de la clave primaria de una relación determina funcionalmente a un atributo no clave
z
Pasos a Seguir:
z Crear una relación con la clave primaria compuesta y los atributos completamente dependientes de esta.
z Por cada dependencia parcial, crear una nueva relación, cuya clave primaria es la parte de la clave compuesta que genera la dependencia parcial y que además contenga todos los atributos determinados por ella.
Modelo Relacional
z
Segunda Forma Normal (2FN).
Factura(numFactura, fechaFactura, nomCliente, rutCliente, dirCliente, netoFatura, ivaFactura, totalFactura)
Detalle(numFactura, codProducto, desProducto, cantidad, valorUnitProd, totalProducto)
numFactura, codProducto Æ desProducto numFactura, codProducto Æ cantidad numFactura, codProducto Æ valorUnitProd numFactura, codProducto Æ totalProducto codProducto Æ desProducto
codProducto Æ valorUnitProd
Detalle
z
Segunda Forma Normal (2FN).
Detalle(numFactura, codProducto, desProducto, cantidad, valorUnitProd, totalProducto)
Detalle(numFactura, codProducto, cantidad, totalProducto) Producto(codProducto, desProducto, valorUnitProd)
Modelo Relacional
z
Segunda Forma Normal (2FN).
Factura(numFactura, fechaFactura, nomCliente, rutCliente, dirCliente, netoFatura, ivaFactura, totalFactura)
Detalle(numFactura, codProducto, cantidad, totalProducto) Producto(codProducto, desProducto, valorUnitProd)
z
Segunda Forma Normal (2FN).
Modelo Relacional
z
Tercera Forma Normal (3FN).
z Una relación se encuentra en tercera forma normal, cuando se han eliminado sus dependencias transitivas.
z Las dependencias transitivas indica la existencia de atributos no clave que determinan funcionalmente a otros atributos no clave.
z
Pasos a Seguir:
z Crear una nueva relación cuya clave primaria es el atributo no clave que determina a los otros atributos no clave.
z Incluir el atributo clave de la nueva relación, como clave foránea en la relación original.
z
Tercera Forma Normal (3FN).
Factura(numFactura, fechaFactura, nomCliente, rutCliente, dirCliente, netoFatura, ivaFactura, totalFactura)
Detalle(numFactura, codProducto, cantidad, totalProducto) Producto(codProducto, desProducto, valorUnitProd)
numFactura Æ fechaFactura numFactura Æ nomCliente numFactura Æ rutCliente numFactura Æ dirCliente numFactura Æ netoFactura numFactura Æ ivaFactura numFactura Æ totalFactura rutCliente Æ nomCliente rutCliente Æ dirCliente
Factura
Modelo Relacional
z
Tercera Forma Normal (3FN).
Factura(numFactura, fechaFactura, nomCliente, rutCliente, dirCliente, netoFatura, ivaFactura, totalFactura)
Factura(numFactura, fechaFactura, netoFatura, ivaFactura, totalFactura)
Cliente(rutCliente, nomCliente, dirCliente)
z
Tercera Forma Normal (3FN).
Cliente(rutCliente, nomCliente, dirCliente)
Factura(numFactura, fechaFactura, netoFatura, ivaFactura, totalFactura, rutCliente)
Detalle(numFactura, codProducto, cantidad, totalProducto) Producto(codProducto, desProducto, valorUnitProd)
Modelo Relacional
z
Tercera Forma Normal (3FN).
Factura numFactura fecha rutCliente netoFactura ivaFactura totalFactura
Detalle numFactura codProducto cantidad totalProducto
Producto codProducto desProducto valorUnitProd Cliente
rutCliente nomCliente dirCliente
z
Forma Normal de Boyce-Codd (FNBC).
z Una relación se encuentra en FNBC, cuando se han eliminado las dependencias de Boyce-Codd.
z Las dependencias de Boyce-Codd indican la existencia de atributos no clave que determinan funcionalmente a atributos que componen la clave.
z
Pasos a Seguir:
z Crear una nueva relación por cada atributo determinante que esté generando la dependencia de Boyce-Codd, que incluya el atributo de la clave determinados por este. El atributo determinante es la clave de la nueva relación.
z En la relación original se quita el atributo dependiente que conforma la clave candidata.
Modelo Relacional
z
Forma Normal de Boyce-Codd (FNBC).
DirEntrega(ciudad, direccion, codPostal)
ciudad, direccion Æ codPostal codPostal Æ ciudad
DirEntrega(direccion, codPostal) CodPostal(codPostal, ciudad)
z
Forma Normal de Boyce-Codd (FNBC).
CodPostal codPostal ciudad DirEntrega
direccion codPostal
Modelo Relacional
z
Cuarta Forma normal (4FN).
z Una relación se encuentra en cuarta forma normal, cuando se han eliminado las dependencias multivaluadas que pudiesen existir.
z Una dependencia multivaluada se produce cuando existen tres atributos en los cuales dos de ellos no tienen relación entre sí, pero dependen de un mismo atributo.
z Una dependencia multivaluada se identifica de la siguiente manera “A1 ÆÆ A2”, donde el atributo A1 multidetermina al atributo A2.
z
Cuarta Forma normal (4FN).
z
Pasos a Seguir:
z Crear una nueva relación para cada dependencia múltiple.
z Para cada nueva relación se establece como clave primaria los atributos de la dependencia múltiple.
Transportista(rut, tipoVehículo, tipoCarga)
rut ÆÆ tipoVehículo tipoVehículo ÆÆ tipoCarga
Modelo Relacional
z
Cuarta Forma normal (4FN).
z
Quinta Forma normal (5FN).
z Una relación se encuentra en quinta forma normal o forma normal de Proyección-Unión, si se encuentra en 4FN y las únicas dependencias que existen son las denominadas dependencias de JOIN de una tabla con sus proyecciones, relacionándose entre sí mediante la clave primaria, o cualquier clave alternativa.
z Se dice que hay dependencia de JOIN entre una tabla y sus proyecciones, si es posible obtener la tabla original por medio de la unión de dichas proyecciones.
z La 5FN se emplea cuando existe mucha información redundante en una tabla, o cuando se hace inmanejable, debido a la existencia de muchos atributos.
Modelo Relacional
z
Quinta Forma normal (5FN).
z Una relación se encuentra en quinta forma normal o forma normal de Proyección-Unión, si se encuentra en 4FN y las únicas dependencias que existen son las denominadas dependencias de JOIN de una tabla con sus proyecciones, relacionándose entre sí mediante la clave primaria, o cualquier clave alternativa.
z Se dice que hay dependencia de JOIN entre una tabla y sus proyecciones, si es posible obtener la tabla original por medio de la unión de dichas proyecciones.
z La 5FN se emplea cuando existe mucha información redundante en una tabla, o cuando se hace inmanejable, debido a la existencia de muchos atributos.
z
Quinta Forma normal (5FN).
z Una relación se encuentra en quinta forma normal o forma normal de Proyección-Unión, si se encuentra en 4FN y las únicas dependencias que existen son las denominadas dependencias de JOIN de una tabla con sus proyecciones, relacionándose entre sí mediante la clave primaria, o cualquier clave alternativa.
z Se dice que hay dependencia de JOIN entre una tabla y sus proyecciones, si es posible obtener la tabla original por medio de la unión de dichas proyecciones.
z La 5FN se emplea cuando existe mucha información redundante en una tabla, o cuando se hace inmanejable, debido a la existencia de muchos atributos.
Modelo Relacional
z
Quinta Forma normal (5FN).
Persona(rut, datPers1, datPers2, datPers3, datPrev1, datPrev2, datLab1 , datLab2 , datLab3 , datLab4)
DatPersPer(rut, datPers1 , datPers2 , datPers3) DatPrevPer(rut, datPrev1, datPrev2)
DatLabPer(rut, datLab1 , datLab2 , datLab3 , datLab4)
z
Quinta Forma normal (5FN).
Modelo Relacional
z
Forma Normal de Dominio Clave (FNDC).
z Existe solamente de manera teórica.
z No existe una metodología para llegar a ella.
z Se basa en la siguiente definición: “una relación está en FNDC si y sólo si, cada restricción de la relación es una consecuencia lógica de las restricciones de las claves y de los dominios”.
z
Integración de vistas:
DespachoProducto(numDespacho, fechaDespProd, rutCliente, nomCliente, dirCliente, codProducto, cantidad, dirEnvio, rutReceptor, nomReceptor)
DespachoProducto(numDespacho, fechaDespProd, rutCliente, nomCliente, dirCliente, {codProducto, cantidad}, dirEnvio, rutReceptor, nomReceptor)
Modelo Relacional
z
Integración de vistas:
DespachoProducto(numDespacho, fechaDespProd, rutCliente, nomCliente, dirCliente, {codProducto, cantidad}, dirEnvio, rutReceptor, nomReceptor)
DespachoProducto(numDespacho, fechaDespProd, rutCliente, nomCliente, dirCliente, dirEnvio, rutReceptor, nomReceptor)
Detalle(numDespacho, codProducto, cantidad) 1FN
z
Integración de vistas:
Detalle(numDespacho, codProducto, cantidad)
2FN numDespacho, codProducto Æ cantidad
Modelo Relacional
z
Integración de vistas:
DespachoProducto(numDespacho, fechaDespProd, rutCliente, nomCliente, dirCliente, dirEnvio, rutReceptor, nomReceptor) Detalle(numDespacho, codProducto, cantidad)
numDespacho Æ fechaDespProd numDespacho Æ rutCliente numDespacho Æ nomCliente numDespacho Æ dirCliente numDespacho Æ dirEnvio numDespacho Æ rutReceptor numDespacho Æ nomReceptor rutCliente Æ nomCliente rutCliente Æ dirCliente rutReceptor Æ nomReceptor
DespachoProducto
z
Integración de vistas:
DespachoProducto(numDespacho, fechaDespProd, rutCliente, dirEnvio, rutReceptor)
Cliente(rutCliente, nomCliente, dirCliente) Receptor(rutReceptor, nomReceptor)
DespachoProducto(numDespacho, fechaDespProd, rutCliente, nomCliente, dirCliente, dirEnvio, rutReceptor, nomReceptor)
3FN
Modelo Relacional
z
Integración de vistas:
DespachoProducto(numDespacho, fechaDespProd, rutCliente, dirEnvio, rutReceptor)
Cliente(rutCliente, nomCliente, dirCliente) Receptor(rutReceptor, nomReceptor)
3FN
z Integración de vistas:
DespachoProducto numDespacho fechaDespProd rutCliente dirEnvio rutReceptor
Cliente rutCliente nomCliente dirCliente
Receptor rutReceptor nomReceptor Detalle
numDespacho codProducto cantidad
Modelo Relacional
z Integración de vistas:
DespachoProducto numDespacho fechaDespProd rutCliente dirEnvio rutReceptor
Cliente rutCliente nomCliente dirCliente
Receptor rutReceptor nomReceptor Detalle
numDespacho codProducto cantidad
z
Pasos a seguir:
z Analizar documentos o reportes que generará el sistema.
z Por cada documento, identificar los campos de datos.
z Utilizar notación textual del modelo relacional, para identificar cada vista con sus campos.
z Normalizar las vistas.
z Integrar las distintas vistas, utilizando los atributos comunes entre ellas y la lógica del negocio.
Modelo Relacional
z
Para realizar una correcta integración es necesario considerar las siguientes actividades:
z Corregir problemas de sinónimos y homónimos.
z Corregir dependencias transitivas generadas por la integración.
z Representar adecuadamente generalizaciones producidas por la integración.
z Integración de vistas:
Modelo Relacional
z Integración de vistas:
z Integración de vistas:
Modelo Relacional
z Integración de vistas:
DespachoProducto numDespacho fechaDespProd rutCliente dirEnvio rutReceptor
Factura numFactura fecha rutCliente netoFactura ivaFactura totalFactura
DetalleFactura numFactura codProducto cantidad totalProducto
Producto codProducto Cliente
rutCliente nomCliente dirCliente
Receptor rutReceptor
DetalleDespProd numDespacho
z
Para realizar una correcta integración es necesario considerar las siguientes actividades:
z Corregir problemas de sinónimos y homónimos.
z Corregir dependencias transitivas generadas por la integración.
z Representar adecuadamente generalizaciones producidas por la integración.
Modelo Relacional
z Integración de vistas:
DespachoProducto numDespacho fechaDespProd rutCliente dirEnvio rutReceptor
Factura numFactura fecha rutCliente netoFactura ivaFactura totalFactura
DetalleFactura numFactura codProducto cantidad totalProducto
Producto codProducto desProducto valorUnitProd Cliente
rutCliente nomCliente dirCliente
Receptor rutReceptor nomReceptor
DetalleDespProd numDespacho codProducto cantidad
z Integración de vistas:
DespachoProducto numDespacho fechaDespProd rutCliente dirEnvio rutReceptor
Factura numFactura fecha rutCliente netoFactura ivaFactura totalFactura
DetalleFactura numFactura codProducto cantidad totalProducto
Producto codProducto desProducto valorUnitProd Cliente
rut dirCliente
DetalleDespProd numDespacho codProducto cantidad Persona
rut nombre