Ejemplos de Tablas en Bases de Datos
Ejemplos de Tablas en Bases de Datos
Introducción
En el módulo 2, conoceremos lo que es un modelo de datos, y aprenderemos sobre los componentes que posee un sistema administrador de base
de datos (DBMS, por sus siglas en inglés). Luego, ampliaremos sobre modelos de datos existentes como el de red, el jerárquico y, finalmente, el
modelo relacional. Además del modelo relacional, analizaremos qué es un diagrama de entidad-relación, cuáles son las reglas de Codd, y qué es
una dependencia funcional. Por último, profundizaremos en las diferentes formas normales y la normalización de base de datos, proceso que nos
servirá para mejorar la calidad de nuestras bases de datos.
Creemos las entidades, atributos y relaciones de nuestra base de datos:
Video de inmersión
Unidad 1. Sistemas de bases de datos
Tema 1. Modelo de datos y sistemas de base de datos
De acuerdo con lo que establece Millán (2012):
Los modelos de datos están integrados por una serie de conceptos para describir los datos, sus relaciones y restricciones, y son útiles
para representar, de manera abstracta, el mundo real. Su propósito es, además de facilitar la descripción de los datos y sus relaciones,
permitir la representación de los datos y hacerlos comprensibles. Por esta razón, los modelos de datos facilitan el diseño de bases de
datos. Para especificar la estructura y las restricciones, se usa un lenguaje de definición de datos (Data Definition Language, DDL, por
sus siglas en inglés), y para especificar la manipulación de los datos se utiliza el lenguaje de manipulación de datos (Data Manipulation
Language - DML, por sus siglas en inglés). Un DML ofrece mecanismos para recuperar datos de la base de datos vigente y actualizar
datos. Algunas de las utilidades que tiene un modelo de datos son facilitar la especificación de los tipos y la forma en que los datos
están organizados en una base de datos, y servir de base para desarrollar metodologías de diseño y lenguajes de alto nivel para
consultar y manipular dichos datos. (p. 17)
Un modelo de datos debe tener lo siguiente:
Los autores identifican, al igual que en [Codd80], cuatro componentes lógicas que integran un modelo de base de datos: un conjunto de
elementos atómicos y de relaciones entre estos elementos, denominado espacio de datos, una especificación de restricciones
aplicadas a las relaciones en el espacio de datos, denominada restricciones de definición de tipo, un conjunto de operaciones para
crear y destruir elementos y modificar las relaciones entre estos, denominada operaciones de manipulación, y un lenguaje de
predicados para identificar de la base de datos elementos individuales por medio de sus propiedades lógicas. (Millán, 2012, p. 18)
Sistema de gestión de base de datos
☰ Calidad
La información que se proporcione debe ser fidedigna y no debe contener errores de procesamiento.
☰ Oportuna
☰ Cantidad
Su presentación se debe orientar al usuario, y debe mostrar mayor nivel de detalle a un operario y menor detalle a un gerente, para que cada nivel
pueda tomar decisiones oportunas.
☰ Relevante
Componente Definición
Compilador DDL Procesa las definiciones de los esquemas y almacena las descripciones de
los esquemas en el catálogo.
Compilador de consultas Analiza las consultas sintácticamente, los nombres de elementos y objetos.
Traduce a formato interno.
Optimizador de consultas Reconfigura, reordena, elimina redundancias y usa algoritmos e índices para
mejorar la ejecución de la consulta. Genera código ejecutable.
Precompilador DML Extrae los comandos DML y los envía al compilador DML. Envía el resto del
programa al compilador del lenguaje host.
Compilador DML Compila y genera código objeto que le pasa al procesador de DB runtime.
Compilador de
Compila el programa y lo prepara para enlazar la transacción.
lenguaje host
Procesador de BD runtime Recibe comandos y los ejecuta, accede al diccionario de datos y se comunica
con el sistema operativo (SO) para entrada/salida (E/S). Administra el buffer
en la memoria de procesamiento, que se comparte o no con SO.
Administración de
Funciona con el procesador de BD para poder comunicarse con el SO y
datos almacenados realizar E/S.
Fuente: elaboración propia
Para comprender mejor cada uno de estos componentes y sus relaciones, podemos observar, en la siguiente gráfica, cómo es su interacción:
Figura 2: Componentes del DBMS
Este último punto es muy importante. Si no contamos con un buen sistema de seguridad con respecto a datos y hardware, se puede producir
pérdida o degradación de la información. También, es importante proteger la información almacenada en términos de integridad, protegerla de
modificaciones inadecuadas.
Medidas de control
Control de acceso: sirve para restringir el acceso con la creación de cuentas y contraseñas.
Control de flujo: sirve para evitar que cierta información llegue a usuarios no autorizados. Esto se realiza otorgándoles a los usuarios
diferentes perfiles o privilegios, según la información que estén autorizados a ver.
Cifrado de datos: se realiza con algoritmos de cifrado, con clave, para disfrazar un mensaje.
Seguridad y DBA
Respaldo y recuperación
En todo sistema de base de datos, es vital contar con una copia de los datos originales, para poder recuperarlos en caso de que ocurra una pérdida
parcial o total de la información.
Las copias de seguridad pueden almacenarse en diferentes dispositivos, cada uno de los cuales posee ventajas y desventajas. Al momento de
seleccionar uno, hay que tener en cuenta diferentes aspectos, como, por ejemplo, facilidad de traslado, duplicidad de información, seguridad de los
datos.
Hay diferentes estrategias de backups o respaldos, pero, a la hora de seleccionar una, debemos tener en cuenta la capacidad del almacenamiento
disponible, si pensamos en duplicar datos. Lo usual es hacer una copia inicial y luego hacer copia de las modificaciones que van ocurriendo. Este
tipo de resguardo se denomina «incremental», ya que cada copia no posee la totalidad de los datos, sino que contiene la diferencia de aquellos
datos modificados.
Tipos de respaldo
Es un tipo de copia de seguridad rápida. Como característica negativa, exige que la base de datos no se esté usando en el momento de la copia, lo
cual, muchas veces, no es factible en los sistemas que poseen una alta disponibilidad para el usuario.
☰ Control de cambios
Este tipo de respaldo consiste en copiar los archivos que solo han sido modificados. Varios sistemas de archivos cuentan con un bit de archivo
para cada archivo, que nos permite identificar si el archivo fue modificado o no, luego de la copia anterior. Si ha sido modificado, se resguarda, en
caso contrario, no. Otra forma de saber si el sistema de archivos ha sido modificado es mirando la fecha de creación o modificación del archivo.
Es similar a la anterior, pero toma las diferencias binarias entre el backup anterior y el actual. La ventaja de este tipo de backup es que, al trabajar a
nivel de byte, ahorra espacio y no depende del sistema operativo.
Se basa en los cambios del archivo, y crea estos cambios accesibles al usuario. Este tipo de copia de seguridad está integrada al ambiente
informático.
Las unidades de cambio que maneja el sistema de bloques se basan en unidades de cambio relativamente grandes (bloques de 8 ks, 4 ks, 1
k).
Sí debemos tener en cuenta que este tipo de copia de seguridad suele tardar más tiempo. A fin de copiar un archivo en uso, es muy importante que
la copia de seguridad entera represente un único paso, lo cual es todo un desafío cuando se está copiando un archivo en continua modificación. En
estos casos, el archivo de base de datos está bloqueado para evitar cambios, pero debemos implementar un método para asegurar que el snapshot
original es preservado con tiempo de sobra para ser copiado, incluso cuando se mantengan los cambios.
La operación de recuperación de la información se realiza de manera inversa a la operación de backup o resguardo, y se realiza de acuerdo con la
técnica de backup que se haya implementado.
Verdadero.
Falso.
Es de vital importancia tener siempre copias de resguardo de los datos. Cuanto mayor sensibilidad y disponibilidad tengan los datos, más
imprescindible se hace tener no solo las copias de los datos, sino también mecanismos para recuperar y restaurar dichos datos.
Modelo jerárquico
El modelo jerárquico es una aplicación particular del modelo de red. Los datos se representan como colección de registros, pero con estructura
padre/hijo. Las relaciones también son punteros o enlaces, y permiten las relaciones de uno a uno y de uno a muchos. Como restricción, podemos
mencionar que todo hijo tiene un solo padre, y que un padre puede tener uno o más hijos.
Modelo relacional
Normalización
El modelo relacional tiene base en el concepto de relación matemática, más precisamente en la teoría de conjuntos:
Intuitivamente, las relaciones se asocian con tablas nombradas cuyas columnas representan atributos que también tienen asociado un
nombre. Las filas de las tablas se denominan tuplas. Los valores que toman esas tuplas se extraen de conjuntos de constantes,
llamados dominios. Todas las tablas constituyen la estructura de la base de datos que se representa en un esquema de base de datos
(nivel intencional) y su contenido en una instancia de base de datos (nivel extensional). La propuesta inicial del modelo de datos
relacional caracteriza las relaciones como la estructura fundamental para describir y organizar los datos y el álgebra relacional para
manipularla.
Para diseñar un modelo de datos relacional, se utiliza una serie de normas o reglas denominadas formas normales, que establecen el fundamento
teórico de la normalización.
La definición del problema es el proceso por el cual se determina la organización de una base de datos, incluidos su estructura, contenido y las
aplicaciones que se han de desarrollar.
Durante mucho tiempo, el diseño de bases de datos se consideró una tarea para expertos: más un arte que una ciencia. Sin embargo, se ha
progresado mucho en el diseño de bases de datos, y este se considera ahora una disciplina estable, con métodos y técnicas propios.
La aceptación de las bases de datos en la industria y el gobierno, en el plano comercial, se ha incrementado. Además, existe una pluralidad de
aplicaciones técnicas y científicas. Estos dos factores han provocado que el diseño de bases de datos tenga hoy un rol esencial en el empleo de los
recursos de información, en la mayor parte de las organizaciones. El diseño de bases de datos ha pasado a constituir parte de la formación general
de los informáticos, en el mismo nivel que la capacidad de construir algoritmos mediante un lenguaje de programación convencional (Costal Costa,
2017).
Captura de requerimientos
Para definir correctamente el problema, lo primero que debemos hacer es realizar un diseño conceptual que parta de las especificaciones de los
requisitos del usuario. El resultado será el esquema conceptual de la base de datos, que corresponderá a un modelo entidad-relación (E/R). Un
esquema conceptual es una descripción de alto nivel de la estructura de la base de datos, independientemente del DBMS que se vaya a utilizar
para manipularla.
Un modelo conceptual es un lenguaje que se utiliza para describir esquemas conceptuales. El objetivo del diseño conceptual es describir el
contenido de los datos de la base de datos (DB), y no las estructuras de almacenamiento que se necesitarán para manejar esta información.
El modelo relacional representa un sistema de bases de datos en un nivel de abstracción un tanto alejado de los detalles de la máquina subyacente.
De hecho, el modelo relacional puede considerarse un lenguaje de programación más bien abstracto, que se orienta, de manera específica, a las
aplicaciones de bases de datos.
Podemos asemejar una relación a un archivo, una tupla a un registro y un atributo a un campo. Sin embargo, estos parecidos son aproximados en
el mejor de los casos. Una relación no debe pensarse como un solo archivo, sino como un archivo disciplinado, gracias a lo cual se simplifican
considerablemente las estructuras de datos con las que debe interactuar el usuario, que, asimismo, facilita los operadores necesarios para manejar
dichas estructuras.
El modelo entidad-relación (E/R) tiene base en una representación del mundo real en que los datos se describen como entidades, relaciones y
atributos. El principal concepto del modelo E/R es la entidad, que es una «cosa» en el mundo real con existencia independiente. Una entidad puede
ser un objeto físico (una persona, un auto, una casa o un empleado), o un objeto conceptual (una compañía, un puesto de trabajo o un curso
universitario). En nuestro ejemplo de la sección anterior, podemos definir dos entidades: alumnos y cursos. Cada entidad tiene propiedades
específicas, llamadas «atributos», que la describen. Por ejemplo, un curso tiene un nombre, un cupo máximo, un profesor.
Una entidad particular tiene un valor para cada uno de los atributos, y cada uno de ellos posee un dominio, que corresponde al tipo del atributo. Por
ejemplo, matrícula tiene como dominio al conjunto de los enteros positivos, y nombre tiene como dominio al conjunto de caracteres. Para todo
conjunto de valores de una entidad, debe existir un atributo o combinación de atributos que identifique a cada entidad de forma única. Este atributo
o combinación de atributos se denomina «llave (primaria)». Por ejemplo, el número de matrícula es una buena llave para la entidad alumno, pero no
así el nombre, porque pueden existir dos personas con el mismo nombre.
Una relación se puede definir como una asociación entre entidades. Por ejemplo, la entidad libro puede estar relacionada con la entidad persona por
medio de la relación “está pedido”. La entidad curso puede estar relacionada con la entidad alumno mediante la relación «tiene». Siguiendo con la
relación mencionada, “Curso-tiene-Alumno”, también surge la necesidad de indicar la cardinalidad de la relación. En este caso, tenemos que un (1)
curso puede tener muchos (N) alumnos. Según lo que venimos detallando, podemos tener un modelo entidad-relación como el que se presenta en
la figura 5.
Vemos, entonces, que las entidades se indican con un rectángulo, la relación con un rombo y enumerando las diferentes cardinalidades, y, por
último, los atributos se indican con elipses o círculos. Siempre debemos indicar el nombre para cada elemento (entidad, atributo, relación).
Columnas.
Tablets.
Tablas.
Entidades.
Columnas.
Pilares.
Renglón.
Tuplas.
Quíntupla.
El modelo relacional representa la segunda generación de los DBMS. En él, todos los datos están estructurados a nivel lógico (como tablas
formadas por filas y columnas), aunque a nivel físico pueden tener una estructura completamente distinta. Un punto fuerte del modelo relacional es
la sencillez de su estructura lógica. Sin embargo, detrás de esa simple estructura, hay un fundamento teórico importante del que carecen los DBMS
de la primera generación, lo que constituye otro punto a su favor.
Codd se dio cuenta de que existían bases de datos en el mercado que decían ser relacionales, pero vio que esas bases de datos solo guardaban la
información en las tablas, que no estaban realmente normalizadas. Frente a esto, publicó las doce reglas que un verdadero sistema relacional
debería tener. Ya sabemos que, en la práctica, es muy difícil que se apliquen todas las reglas. Mientras más reglas apliquen a un sistema, más
«relacional» podrá considerarse.
La clave primaria no puede tener valores en blanco o nulos en ninguno de sus componentes (norma básica de integridad).
Para todos los valores de clave foránea, es fundamental que exista un valor de clave primaria concordante. La combinación de estas reglas
asegura la integridad referencial.
Siendo a y b atributos de una misma relación T, se dice que b es funcionalmente dependiente de a si, para el mismo valor de a, tiene
asociado un único valor de b, o, lo que es lo mismo, en todas las tuplas de T en las que el atributo a toma el mismo valor v1, el atributo
b toma también un mismo valor v2.
Los atributos a y b pueden ser simples o compuestos (formados por la agregación de varios atributos). Los atributos funcionalmente
dependientes pueden o no formar parte de la clave primaria de la tabla, de una clave candidata o de una clave foránea de otra tabla.
Claramente, a → b no implica b → a. Pueden repetirse los valores del atributo b para distintos valores de a (Universidad Autónoma del
Estado de Hidalgo, 2017, [Link]
Consideremos el ejemplo de una tabla que contiene datos de comprobantes. Podemos observar, claramente, que el atributo nombre cliente
depende funcionalmente del ID cliente.
a →b.
debemos observar que, para cada atributo de la relación, haya una evidente repetición de valores que nos haga pensar en redundancia de
datos.
La relación debe tener, por lo menos, tres atributos.
Debe observarse que dos de los atributos sean independientes entre sí funcionalmente.
El tercer atributo establece una dependencia funcional con los otros dos.
Dependencia de reunión
Una relación R satisface la dependencia de reunión (DR)*(A, B, Z) si y solo si R se puede construir con la reunión de sus proyecciones A, B, Z,
siendo A, B, Z subconjuntos de atributos de R.
Características
Los atributos (datos) responden a una mecánica interna de funcionalidad que podríamos definir como procesos internos. Estos procesos dan el
estado de asociación y dependencia de los atributos, y generan cierta definición de cómo se asocian estos entre sí. Las colecciones de atributos
asociados semánticamente con un fin común permiten individualizar las entidades que conforman la estructura lógica. La aplicación de las formas
normales permite que el entendimiento que se está realizando del problema se represente en un modelo normalizado de solución.
Terminología
Entidad.
Atributo.
Instancia.
Dominio.
Entidad
Se denomina entidad al contenedor de una colección de atributos que están fuertemente relacionados entre sí por una interpretación semántica,
que determina a la entidad misma. Por ejemplo, si estás observando un problema que involucra personas, terminarás infiriendo que debés asociar
todas las características o los atributos de las personas en una entidad que las represente.
Una entidad comparte los mismos principios de definición que una relación, pero solo en el diseño de la estructura, sin hacer hincapié en sus
características físicas y de almacenamiento.
Atributo
Se denomina atributo a cada componente de una entidad que califica y establece una propiedad dentro de ella. En una entidad, los atributos tienen
un nombre único y no poseen un orden específico.
Instancia
Se denomina instancia a una ocurrencia de valores o al conjunto de valores que conforman un mismo grupo. Una instancia dentro de una entidad
encuentra correspondencia con una tupla dentro de la relación. Las instancias son combinaciones ordenadas de valores irrepetibles. Una instancia
de valores tiene una única posibilidad de existir dentro de la entidad. Las instancias no tienen orden.
Dominio
El dominio, en el diseño lógico, es la caracterización conceptual del atributo, la definición de lo que queremos que represente ese atributo al que le
estamos asignando el dominio. Esta definición está ligada al nombre propio del atributo y no al tipo de dato de este. Eso será motivo de análisis en
una instancia posterior del modelo, en el diseño físico. Por este motivo, se recomienda establecer un nombre de atributo lo suficientemente
representativo del dominio al que se quiere asignar, para que esto sea adecuado para su encasillamiento. Por ejemplo, si para una entidad
personas establecemos un atributo de nombre fecha, su contenido puede ser amplio: fecha de nacimiento, de defunción, de ingreso o casamiento, o
cualquier otra fecha que se le pueda atribuir a la persona; pero si el atributo se denomina fecha nacimiento, en él, solo se podrá almacenar este
concepto.
Formas normales
La dependencia funcional brinda la base conceptual para las siguientes formas normales:
Si bien las formas normales son seis, los casos más comunes de normalización se suscitan en el rango que va de la primera forma normal hasta
Boyce-Codd.
comprobante
01-100 01/03/
01 María
1 Tarjeta 1 Mapa 2,5 10 55
17 Paz
01-100 01/03/
01 María Paz 1 Tarjeta 2 Hoja 1 30 55
17
02-101 21/03/
02 Juan 2 Contado 3 Sobre 4 10 40
17 Casas
01-102 03/04/
10 Ana
3 Débito 1 Mapa 4,5 10 60
17 Godoy
01-102 03/04/
10 Ana Godoy 3 Débito 2 Hoja 1,5 10 60
17
Fuente: elaboración propia
Punto de venta y
comprobante
01-100
01-100
02-101
01-102
01-102
Fuente: elaboración propia.
Punto de Número de
venta comprobante
01 100
01 100
02 101
01 102
01 102
Fuente: elaboración propia.
Para lograr que la columna Punto de venta y comprobante posea dominio simple, se debe dividir en dos columnas: una para el punto de venta y
otra para el número de comprobante.
Tabla 6: 1FN aplicada (dominio simple de los atributos)
Pto. de N.° de Fecha ID Nombre ID Forma ID Nombre Precio/unidad Cant. Total
01 100 1/3/
01 María Paz 1 Tarjeta 1 Mapa 2,5 10 55
17
01 100 1/3/
01 María Paz 1 Tarjeta 2 Hoja 1 30 55
17
02 101 21/3/
02 Juan 2 Contad o 3 Sobre 4 10 40
17 Casas
01 102 3/4/
10 Ana Godoy 3 Débito 1 Mapa 4,5 10 60
17
01 102 3/4/
10 Ana Godoy 3 Débito 2 Hoja 1,5 10 60
17
Fuente: elaboración propia.
Atributos monovalentes
Ahora, deberíamos fijar nuestra atención en el concepto de atributos monovalentes. Todavía no se puede denominar relación, pues sigue sin
respetar algunas restricciones necesarias para serlo. Otra forma de expresarlo sería evitar los grupos repetitivos, para que la información se
exprese una sola vez.
Tabla 7: Identificando grupos repetitivos
Pto. de N.° de Fecha ID Nombre
ID Forma ID
Nombre Precio/unidad Cant. Total
01 100 1/3/
01 María Paz 1 Tarjeta 1 Mapa 2,5 10 55
17
01 100 1/3/
01 María
1 Tarjeta 2 Hoja 1 30 55
17 Paz
02 101 21/3/
02 Juan 2 Contado 3 Sobre 4 10 40
17 Casas
01 102 3/4/
10 Ana
3 Débito 1 Mapa 4,5 10 60
17 Godoy
01 102 3/4/
10 Ana
3 Débito 2 Hoja 1,5 10 60
17 Godoy
Fuente: elaboración propia.
Observá que, para los comprobantes 100 y 102, se repiten datos. Esto es porque en ambos casos hay dos productos detallados. Estos valores que
se repiten no respetan la definición de monovalentes. Por lo tanto, se debe operar algún cambio para que los valores se presenten una sola vez.
Las columnas que contienen valores repetidos son las que se resaltan con fondo amarillo. La acción que se debe aplicar es la separación de las
columnas que contienen el grupo repetitivo en una tabla y las columnas que no contienen el grupo repetitivo en otra tabla.
Tabla 8: Comprobantes con datos repetitivos
Punto de venta Número de Fecha ID cliente Nombre cliente ID pago Forma pago Total
comprobante
01 100 1/3/17 01 María Paz 1 Tarjeta 55
01 100 1/3/17 01 María Paz 1 Tarjeta 55
02 101 21/3/17 02 Juan Casas 2 Contado 40
01 102 3/4/17 10 Ana Godoy 3 Débito 60
01 102 3/4/17 10 Ana Godoy 3 Débito 60
Fuente: elaboración propia.
1 Mapa 2,5 10
2 Hoja 1 30
3 Sobre 4 10
1 Mapa 4,5 10
2 Hoja 1,5 10
Fuente: elaboración propia.
También, siguen duplicadas las filas en la tabla comprobantes. La forma que tenemos para relacionar detalle comprobantes con comprobantes es
estableciendo una clave foránea en detalle comprobantes que apunte a comprobantes. Para crear la FK en detalle de comprobantes, primero
debemos tener declarada una clave primaria en comprobantes. Para ello, en la tabla o entidad comprobantes, no debe haber filas duplicadas.
Eliminemos las filas duplicadas de comprobantes para poder declarar la PK.
Aquí está la tabla de comprobantes sin filas duplicadas. Para establecer la PK, se debe elegir la mínima combinación irrepetible de valores que
garanticen la unicidad. Los atributos de punto de venta y número de comprobante proporcionan esa condición de unicidad; entonces, serán la PK
de comprobantes.
Al tener definida la PK de comprobantes, ya podemos establecer la FK en detalle comprobantes. La FK en detalle de comprobantes tiene que ser
una estructura del mismo tipo que la PK de comprobantes.
Tabla 11: Detalle de comprobantes sin datos repetitivos y establecimiento de clave foránea
Punto Número de ID producto Nombre Precio Cantidad
de comprobante producto unitario
venta
01 100 1 Mapa 2,5 10
01 100 2 Hoja 1 30
02 101 3 Sobre 4 10
01 102 1 Mapa 4,5 10
01 102 2 Hoja 1,5 10
FK
FK establecida, redundancia controlada. Ya tenemos establecida la relación entre ambas relaciones (dejaron de ser tablas). Lo único que falta es
definir la PK de la tabla de detalle de comprobantes. Debemos establecer una combinación irrepetible de valores de atributos que permita identificar,
de forma inequívoca, cada tupla de la relación detalle comprobantes. La combinación resaltada tiene características de unicidad. Esta será la PK de
detalle comprobante.
Tabla 12: Detalle de comprobantes y establecimiento de clave primaria
PK
ID cliente
Nombre producto
Nombre cliente Precio unitario
ID pago Cantidad
Forma pago
Cuando hacemos referencia a que todos los atributos no claves dependen por completo de la clave primaria, es importante entender que la
expresión atributos no claves está expresada en su más amplio espectro. Entonces, los atributos tienen que no pertenecer ni a la clave primaria ni
a ninguna clave candidata que pueda existir. Expresar atributos no claves equivale a decir atributos no primarios. Los atributos no claves deben
depender por completo de la PK. Esto no se cumple cuando hay atributos no claves que dependen de una parte de la clave. Esta, entonces,
indudablemente debe ser compuesta. Si la clave fuese simple, no hay posibilidad de encontrar esta situación.
Se deben despejar los atributos que dependen funcionalmente de ID producto a una nueva relación que las contenga. Para ello, la nueva relación
(que llamaremos productos) debe tener los mismos atributos que se encuentran resaltados en la relación detalle comprobantes.
Ahora, debemos retirar los atributos de la relación detalle comprobante que causan que la 2FN no se cumpla y declarar la PK en la relación
productos.
Observá que el precio sigue estando en detalle comprobantes. Esto es porque este atributo representa el valor en el momento en que se realizó la
compra. Observá que la clave foránea que vincula detalle comprobantes con productos ya se encuentra declarada. Esto hace que ambas tablas
mantengan una relación denominada integridad referencial.
PK
01 100 1 2,5 10
01 100 2 1 30
02 101 3 4 10
01 102 1 4,5 10
01 102 2 1,5 10
FK FK
PK
3 Sobre 4
1 Mapa 4,5
2 Hoja 1,5
Fuente: elaboración propia.
Comprobantes
Detalle comprobantes
Productos
Comprobante Comprobante
Nombre
producto
Fecha ID producto
Precio
unitario
ID cliente
Nombre
producto
Nombre cliente Precio unitario
ID pago Cantidad
Forma pago
Atributos no primarios: es atributo no clave, que no forma parte de ninguna combinación de claves candidatas posibles.
La dependencia transitiva ocurre cuando dos atributos no primarios —que, por lo tanto, no forman parte de ningún tipo de clave— tienen una
dependencia funcional entre sí más fuerte que la que se produce con la PK de la relación. Entonces, dependen entre sí uno del otro y, por ende,
dependen transitivamente de la PK.
Tenemos que observar dos o más atributos no claves (no primarios) que tengan una dependencia funcional entre sí más fuerte que la que posee
con la PK de la relación. Esta situación solo se presenta en la relación comprobantes, entre los atributos ID cliente y Nombre cliente, por un lado,
e ID pago y Forma pago, por otro.
Ambos atributos dependen uno del otro y no forman parte de ninguna clave.
Tabla 18: Relación comprobantes, identificando atributos no primarios con dependencia entre sí
PK
Se deben desagregar de esta relación los atributos que causan que no se alcance la 3FN. Para ello, se deben crear dos relaciones en las que se
colocan los juegos de atributos que tiene dependencia funcional como sigue. Estos dos atributos tienen DF entre sí y luego dependen de forma
transitiva de la PK. Declará la PK de las nuevas relaciones para poder establecer las FK desde la relación que estamos analizando. Entre estos
otros dos, también existe la misma situación. Ahora debe eliminar las columnas nombre cliente y forma pago, y establecer las FK para que la
información quede integrada.
Tabla 19: Relación comprobantes, identificando no primarios con dependencia entre sí
PK
01 100 01/03/17 01 1 55
02 101 21/03/17 02 2 40
01 102 03/04/17 10 3 60
FK FK
Comprobantes
Detalle comprobantes
Productos
Comprobante Comprobante
Nombre
producto
Fecha ID producto
Precio
unitario
ID cliente
Nombre producto
Nombre
Precio
cliente unitario
ID pago Cantidad
Forma pago
Clientes
Forma pagos
PK ID cliente Pk PK ID pago pk
Nombre cliente
Forma pagos
Fuente: elaboración propia.
Definición formal: cuando un determinante es una llave candidata, una relación R está en FNBC. Una tabla se considera en esta forma si y solo si
cada determinante o atributo es una llave candidata.
PK
¿Qué sucede si el cliente tiene más de un teléfono o dirección de correo electrónico? Podríamos tener una tabla como la siguiente.
Tabla 25: Relación clientes con más de un teléfono
PK
Como podemos observar, en este caso, se rompen las reglas de la normalización, desde la FN1 que indica que los campos deben ser atómicos.
Una solución podría ser repetir las filas.
Tabla 26: Relación clientes con más de un teléfono
PK
Sin embargo, en este caso, si bien logramos la atomicidad de los campos, estamos rompiendo con otra FN, ya que estamos repitiendo los datos de
ID cliente, nombre cliente y teléfono o correo electrónico, según corresponda. Lo que podemos observar es que tanto el teléfono como el correo son
de dependencias multivaluadas con clientes, lo que nos lleva a una FN4 en la que se eliminan las dependencias multivaluadas.
Tabla 27: Relación clientes
PK
PK
ID cliente Teléfono
01 156145579
01 4895233
02 153467367
10 155908786
10 155908786
Fuente: elaboración propia.
01 mpaz@[Link]
01 mpaz@[Link]
02 jcasas@[Link]
10 anag@[Link]
10 [Link]@[Link]
Fuente: elaboración propia.
Existen 6 formas normales y son exclusivas, es decir, es necesario no estar en la forma normal anterior, para considerarse de la siguiente.
Existen 4 formas normales y son inclusivas, es decir, la siguiente forma incluye a la anterior.
Microactividad
Caso 1: Viviendas
Los municipios desean mantener información actualizada de las viviendas ubicadas en zonas urbanas. Se desea diseñar una base de datos que
incluya las características de las viviendas, su ubicación, propietarios y personas que las habitan, etc.
Esta información se utilizará con fines administrativos (impuestos y otros) y estadísticos. Inicialmente solo se considerará información de las
viviendas de manera individual, sin hacer distinción entre pisos que forman parte de un bloque o viviendas unifamiliares.
A finales de año, el ayuntamiento de cada municipio debe cobrar a cada propietario un impuesto por las viviendas que son de su propiedad en la
actualidad. Así, emite un recibo para cada vivienda donde figura el número de registro catastral de la vivienda, la dirección donde se ubica la
vivienda (calle, número y piso), el número o cantidad de metros cuadrados y el DNI y nombre del propietario (aunque la propiedad de una vivienda
puede ser compartida por varias personas, a efectos de cobro de impuestos consideramos sólo a uno de ellos), además del importe de impuesto.
Este recibo se le remitirá a la dirección del propietario, que por supuesto no tiene por qué coincidir con la de la vivienda de la que debe pagar el
impuesto. El importe del impuesto de cada vivienda depende de múltiples factores que deben considerarse en su cálculo. Entre ellos están el
municipio y el barrio o zona urbana donde se ubica la vivienda, los m2 de la vivienda y el precio de tasación de la vivienda.
A estos efectos, cada provincia consta de una serie de municipios, de los que hay que mantener su nombre, el área y perímetro y la provincia a la
que pertenecen; además para identificar cada municipio se utiliza un código único a nivel regional. Y a su vez, cada municipio está dividido en una
serie de barrios o zonas urbanas claramente delimitadas. A la hora de calcular el impuesto debe usarse el precio medio del m2 en esa zona urbana.
El propietario puede realizar el pago del impuesto de dos maneras: en efectivo, dirigiéndose al ayuntamiento una vez que le ha llegado la
notificación de que tiene que pagar, o a través de la cuenta bancaria que el propietario haya indicado al ayuntamiento; en este último caso la
notificación sólo le indica al propietario que se le va a cobrar el impuesto y en el recibo figurará la cuenta de cargo.
No es nuestro objetivo en este momento mantener información de los impuestos pagados o de los morosos. Esto se abordará más adelante. Por
otra parte, cada cierto tiempo desde la Junta de Municipal solicita una serie de informes destinados a distintas consejerías. La Consejería de
Vivienda y Urbanismo suele solicitar: 1) una lista de todas las zonas urbanas, indicando el precio medio del m2, su nombre, área, perímetro,
coordenadas geográficas y el municipio y provincia al que pertenecen, ordenados por provincia y municipio, 2) el mismo listado ordenado por el
precio medio del m2 en cada zona urbana y 3) un listado de las viviendas vacías. La Consejería de Bienestar Social por otra parte, solicita un listado
de las viviendas habitadas por una única persona de 70 años o más y los datos del barrio donde se ubican
Consigna: según la información dada por el cliente, armar el gráfico de entidad relación.
Caso 2: Tráfico
La Dirección General de Tráfico (DGT) desea mantener cierta información del parque de vehículos nacional con el fin de realizar una adecuada
gestión de las infracciones de tráfico que se comenten. En una primera fase se desea recopilar información acerca de las marcas y modelos que
existen en el mercado, por lo que desde las distintas casas de coches se les remite la siguiente información: nombre de la marca y dirección social
en España. Asimismo, para cada marca se recogen los nombres de modelos de vehículos disponibles y la potencia de cada uno. Es de señalar que
cada marca se codifica con un número y que asociado al nombre del modelo existe siempre un código que depende de la marca.
Cuando un vehículo nuevo se matricula se registra la información de la marca y el modelo del coche, bastidor, fecha de matriculación, así como los
datos del propietario. De éste deben conocerse: nif (número de identificación fiscal), apellidos, nombre, fecha de nacimiento y domicilio completo
(calle, número, municipio, provincia y código postal). Hay que tener en cuenta que en la DGT se desea mantener información actualizada del
propietario, por lo que si en algún momento se produce un cambio de propietario debe actualizarse éste en la base de datos, sin perder información
de la historia de los propietarios anteriores junto con las fechas que indican el período de propiedad, por si acaso se necesitan para tramitar multas
antiguas. Por otra parte, cuando una persona comete una infracción y se le impone una multa, el agente toma nota de una serie de datos.
En primer lugar los datos de la persona infractora: nif, nombre, apellidos, fecha de nacimiento y domicilio completo (calle, nº, municipio, provincia y
código postal). Si en la infracción ha intervenido un vehículo, se necesitan, además, los datos de su matrícula, marca y modelo del vehículo. Hay
que señalar que las multas se imponen a personas, no a vehículos, ya que, por ejemplo, podría imponerse una multa a un peatón o a un ocupante
de un vehículo. Aunque también es cierto que en la mayoría de las infracciones interviene un vehículo.
También deben constar en la multa la fecha, el número de registro personal del agente que ha puesto la multa, el artículo que ha infringido la
persona infractora, el lugar exacto donde ha ocurrido la infracción (carretera, kilómetro concreto y dirección) y el importe de la multa. Aunque existe
una guía de los artículos con sus descripciones, en este momento no se desea todavía almacenar esta información en la base de datos.
Cada infracción cometida se identifica con un número de expediente único y da lugar a una única multa. Semanalmente a la Dirección Central de
Tráfico se le envían informes donde consta información del nº de infracciones que se han cometido en esa semana, agrupadas por carretera e
importe y un ranking de los artículos que más se han infringido.
Además, la unidad de tráfico a la que pertenece ha generado una lista de las multas impuestas por sus agentes y el estado en que se encuentran
los expedientes (multa pendiente, pagada, recurrida, etc.). Esta información es importante porque de vez en cuando los agentes tienen que declarar
en relación con alguna de las infracciones en que han intervenido, para lo cual se les debe enviar además una carta a su domicilio. También cada
cierto tiempo se obtienen estadísticas para los medios de comunicación sobre las características de las personas que cometen más infracciones
(por tramos de edad, sexo, municipio y/o provincia de residencia, etc.) y de los vehículos implicados (marcas, modelos, etc.).
Consigna: según la información dada por el cliente, armar el gráfico de entidad relación.
Video de habilidades
Es importante saber normalizar nuestros modelos de datos. En este módulo lo que buscamos es poder saber cómo separar y organizar los datos en
tablas con atributos y que este modelo que se plantea cumpla al menos con la tercer forma normal, que es hasta donde llegan la mayoría de los
diagramas entidad relación.
En el video vemos con desde el ejemplo de pedido proveedor y producto llegamos a armar el DER.
Preguntas de habilidades
Verdadero
Falso
Justificación
Cuál de las formas normales dice que un registro no puede contener grupo de datos repetitivos.
FN1
FN2
FN3
FN4
Justificación
Si una relación está en FN1 y no tiene claves compuestas quiere decir que también está en ….
FN1
FN2
FN3
FN4
Justificación
En la FN3 los atributos deben depender solo de la clave y de ningún otro atributo de la relación.
Verdadero
Falso
Justificación
Cuando una entidad tiene clave compuesta indica que existe una relación de muchos a muchos
Verdadero
Falso
Justificación
Cierre
Aprendimos sobre el modelo de datos y sus componentes. Es de suma importancia que como futuro profesional en el área tengas claro todo lo
estudiado ya que será de suma importancia para que puedas manipular los datos de forma correcta y ordenada.
Glosario
Referencias
Costal Costa, D. (2017). Introducción al diseño de bases de datos. Recuperado de [Link]
[Link]
Millán, M. E. (2012). Fundamentos de bases de datos. Notas de referencia. Cali, Colombia: G&G Editores.
Universidad Autónoma del Estado de Hidalgo, (2017). Diseño de base de datos. Recuperado de
[Link]