Está en la página 1de 21

Tema 9

Curso de Bases de Datos SQL

Diseño de bases de datos


relacionales:
características y dominios
Índice
Esquema 3

Ideas clave 4
9.1. ¿Cómo estudiar este tema? 4
9.2. Características de los buenos diseños
relacionales 4
9.3. Dominios atómicos y la primera forma normal
(1FN) 6
9.4. Descomposición mediante dependencias
© Universidad Internacional de La Rioja (UNIR)

funcionales 6

Lo + recomendado 13

+ Información 17

Test 19
© Universidad Internacional de La Rioja (UNIR)

D I S E Ñ O D E B A S E S D E D AT O S Y M O D E L O E - R

Descomposición
Visión general del
El modelo E-R mediante dependencias
proceso de diseño
funcionales
Dominio atómico: los Dependencias funcionales:
Esquemas grandes: elementos del dominio son
indivisibles. - Definición.
- Características.
- Tipos:
- Situaciones donde puede 1FN: dominios atómicos.
funcionar. o Trivial.
o Completa.
o Transitiva.
Esquemas pequeños:
- Características. 2FN:
- Reglas para su construcción. - Cumple la 1FN.
- Dependencia funcional
completa de la clave.
primaria.
3FN:
- Cumple la 3FN.
- No hay dependencias
funcionales transitivas.
FNBC:
- Cumple la 3FN.
- Gestiona dependencias
parciales de claves
primarias multiatributo.

Tema 9. Esquema
Esquema

Curso de Bases de Datos SQL


3
Ideas clave

9.1. ¿Cómo estudiar este tema?

Para estudiar este tema deberás leer las páginas 219-231 de: Silberschatz, A., Korth, H.
F. y Sudarshan, S. (2006). Fundamentos de bases de datos (5a. ed.). Madrid: McGraw-Hill
España.
Disponible a través de la Biblioteca Virtual de UNIR.
Además se deberán leer las ideas clave expuestas a continuación.

E
n este tema vamos a profundizar en el diseño de BD relacionales, revisando
algunas características que deben tener los buenos diseños, lo cual incluye
el estudio más profundo de las reglas de normalización.

A continuación, te presentamos un resumen del contenido del manual de estudio


citado de Silberschatz y Korth (2006).

9.2. Características de los buenos diseños


relacionales

P
ara diseñar una BD relacional necesitamos generar un conjunto de
relaciones a partir del modelo entidad-relación, de tal forma que
© Universidad Internacional de La Rioja (UNIR)

almacenemos la información sin redundancias y su recuperación sea


eficiente. Para ello, tal como dijimos en temas anteriores, será necesario hacer una
primera fase para recopilar la información de la empresa. Después, tendremos dos
alternativas de diseño: esquemas grandes y esquemas pequeños.

Curso de Bases de Datos SQL


4
Tema 9. Ideas clave
Esquemas grandes

En nuestro ejemplo de la entidad bancaria, hemos separado la información del


préstamo y de los clientes, haciendo el nexo entre ellos con una relación prestatario.

Con esta solución, para saber el importe del préstamo de un cliente es necesario
hacer una reunión natural. Entonces, podríamos plantearnos tener una única
relación donde tuviéramos el identificador del cliente, el número de préstamo y su
importe, ahorrando así el tener que hacer la operación de reunión y, por tanto,
haciendo más eficiente la recuperación de información. Sin embargo, se nos está
escapando la opción de que un préstamo tenga varios titulares… ¿qué ocurre en ese
caso?

Con el diseño alternativo que estamos planteando, necesitamos repetir el importe


del préstamo para cada uno de los titulares, lo cual supone repetir información, con
los problemas asociados que ya conocemos. Esta situación ocurre porque la relación
entre clientes y préstamos es de varios a varios.

Otra posible opción para cambiar el diseño inicial sería combinar las tablas de
préstamos y sucursales, de tal forma que el préstamo tuviera un campo para indicar
en qué sucursal se ha concedido. En este caso, no tenemos el problema de la
redundancia, ya que la relación es uno a varios y, por tanto, no genera repetición de
tuplas en la tabla conjunta. Sin embargo, en este caso podemos tener un problema
con los valores nulos, si el préstamo se asocia a la sucursal antes de saber el importe.

Con estos ejemplos, comprobamos que la cardinalidad de las relaciones y las


claves primarias de las tablas implicadas son muy importantes para la toma de
© Universidad Internacional de La Rioja (UNIR)

decisiones.

En concreto, se observa que, para que la unión de tablas sea correcta, el atributo de
reunión debe ser clave primaria en los esquemas que se combinan. En esta situación,

Curso de Bases de Datos SQL


5
Tema 9. Ideas clave
decimos que cada libro solo tiene un autor y que cada autor solo puede escribir un
libro.

Esquemas pequeños

Al contrario que en el caso anterior, lo que buscamos ahora es decidir si tenemos que
dividir un esquema. Tendremos que observar los datos y buscar patrones, lo que
resulta ciertamente difícil cuando nuestra BD es moderadamente grande. Por lo que
necesitaremos una forma de indicar un conjunto de reglas que nos permitan hacer el
proceso de forma sencilla: las dependencias funcionales, que estudiaremos en este
tema.

9.3. Dominios atómicos y la primera forma normal


(1FN)

E
n el modelo entidad-relación podemos tener entidades con atributos
multivalorados y compuestos que, como vimos en temas anteriores,
seguían reglas particulares en el paso a tablas de la BD. En concreto, un
atributo multivalorado se convierte en una nueva tabla y un atributo compuesto
genera atributos solo para aquellos del último nivel.

La formalización de esa idea son los dominios atómicos: los elementos del dominio
son unidades indivisibles. Esto nos lleva a la primera forma norma (1FN): los dominios
de todos los atributos de la relación son atómicos.
© Universidad Internacional de La Rioja (UNIR)

9.4. Descomposición mediante dependencias


funcionales

Curso de Bases de Datos SQL


6
Tema 9. Ideas clave
E
ste concepto se basa en dos ideas fundamentales: la clave y la dependencia
funcional. Como ya conocemos el primero de ellos, aprenderemos ahora
qué son las dependencias funcionales.

Dependencias funcionales

Las dependencias funcionales son restricciones de la BD que exigen que las relaciones
cumplan determinadas propiedades, en concreto, identificar de manera unívoca el
valor de determinados atributos.

Dada la relación R, 𝛼 ⊆ 𝑅 y 𝛽 ⊆ 𝑅; entonces 𝛼 → 𝛽, si para cualesquiera tuplas 𝑡1


y 𝑡2 de R, donde 𝑡1 [𝛼] = 𝑡2 [𝛼], se cumple 𝑡1 [𝛽] = 𝑡2 [𝛽].

Como vemos, esto permite hacer implicaciones más generales que las de las claves.
En este caso, decimos que 𝛽 depende funcionalmente de 𝛼 o que 𝛼 determina a 𝛽.

Veamos el siguiente esquema, considerado como esquema grande en el apartado


anterior:

prestatario_prestamo(id_cliente, numero_prestamo, importe)

Como vemos, se cumple la dependencia funcional (id_cliente, numero_prestamo) →


(id_cliente, numero_prestamo, importe).

Las dependencias funcionales se utilizan tanto para comprobar que las


relaciones son legales como para especificar las restricciones que se debe
© Universidad Internacional de La Rioja (UNIR)

cumplir en una relación.

Decimos que una dependencia funcional es trivial cuando la satisfacen todas las
relaciones, por ejemplo: 𝐴 → 𝐴.

Curso de Bases de Datos SQL


7
Tema 9. Ideas clave
También ocurre para 𝐴𝐵 → 𝐴 y, en general, para todas las implicaciones donde el
antecedente incluya a A y el consecuente sea únicamente A. De forma genérica, una
dependencia funcional es trivial si 𝛼 → 𝛽 y 𝛽 ⊆ 𝛼.

Una dependencia funcional será completa si son los valores de todo el conjunto los
que determinan un valor y no un subconjunto de ellos.

Finalmente, decimos que una dependencia funcional es transitiva cuando tenemos


que:

𝐴 → 𝐵 𝑦 𝐵 → 𝐶, 𝑝𝑜𝑟 𝑙𝑜 𝑞𝑢𝑒 𝐴 → 𝐶

Llamamos cierre del conjunto de dependencias funcionales F (𝐹 + ) al conjunto de


todas las dependencias funcionales que pueden inferirse a partir del conjunto de
dependencias F.

Segunda forma normal (2FN)

La segunda forma normal (2FN), además de verificar la 1FN, elimina las dependencias
parciales para que los datos dependan de la clave primaria completa, es decir, que
sea una dependencia funcional completa. Esto permite que se añadan nuevos
atributos sin que otras relaciones se vean afectadas.

Si una tabla no cumple al 2FN, podemos estudiar cómo dividir sus atributos para
generar un conjunto de tablas legales.

Por ejemplo, en la siguiente tabla vemos que la clave primaria es el conjunto de


© Universidad Internacional de La Rioja (UNIR)

atributos {id_trabajador, cod_area} que determinan el número de horas que cada


trabajador ha trabajado en cada área. Sin embargo, el atributo nombre_trabajador
solo depende de id_trabajador, no de cod_area.

Curso de Bases de Datos SQL


8
Tema 9. Ideas clave
Figura 1. Clave primaria y atributos.
Fuente: Elaboración propia.

Para resolverlo, bastaría con tener una tabla de trabajadores y otra para el registro
horario:

Figura 2. Tabla trabajadores.


Fuente: Elaboración propia.
© Universidad Internacional de La Rioja (UNIR)

Figura 3. Tabla registro_horario.


Fuente: Elaboración propia.

Curso de Bases de Datos SQL


9
Tema 9. Ideas clave
De forma similar, podríamos encontrarnos con una tabla que combine los datos de
los cursos, los alumnos y las calificaciones, como la que mostramos a continuación:

Figura 4. Tabla que no está en 2FN.


Fuente: Elaboración propia.

En este caso, necesitaremos hacer una revisión más detallada para darnos cuenta de
que la situación se repite en dos atributos: nombre_curso y nombre_alumno. Por tanto,
necesitamos tres tablas para conseguir que nuestra BD está en 2FN:

Figura 5. Tablas que conformarían la BD en 2FN.


Fuente: Elaboración propia.

Tercera forma normal (3FN)


© Universidad Internacional de La Rioja (UNIR)

La tercera forma normal (3FN), además de cumplir la 2FN, elimina las dependencias
funcionales transitivas cuando dichos atributos no son clave primaria. Para
ejemplificar esta situación, vamos a revisar los valores de una tabla que muestra
información sobre el resultado de un torneo.

Curso de Bases de Datos SQL


10
Tema 9. Ideas clave
Figura 6. Tabla torneo.
Fuente: Elaboración propia.

De nuevo, la forma de resolver la transitividad es dividir la información en dos tablas:

Figura 7. Tablas que resultan de dividir la tabla torneo.


Fuente: Elaboración propia.

Forma normal de Boyce-Codd (FNBC)

Es una de las formas normales más deseables, ya que es un poco más estricta que la
3FN. Por tanto, una BD está en la forma normal de Boyce-Codd (FNBC) si está en 3FN
y, además, no existen dependencias funcionales no triviales de los atributos que no
pertenecen a la clave primaria.

Si una tabla R no está en FNBC, queda alguna dependencia funcional no trivial:


© Universidad Internacional de La Rioja (UNIR)

𝛼 → 𝛽, donde 𝛼 no es superclave de R.

Entonces, se debe sustituir por dos tablas:


 La primera, el esquema (𝛼 ∪ 𝛽).
 La segunda, (𝑅 − (𝛽 − 𝛼)).

Curso de Bases de Datos SQL


11
Tema 9. Ideas clave
Si nos fijamos en el esquema grande que habíamos probado con la relación entre
préstamos y clientes (id_cliente, numero_prestamo, importe), vemos que no está
en FNBC porque encontramos la dependencia funcional numero_prestamo → importe,
donde numero_prestamo no es superclave.

Entonces, tal como vimos, tendríamos que:


 Crear un esquema que incluya (numero_prestamo, importe), que sería (𝛼 ∪ 𝛽).
 Y el que incluya (id_cliente, numero_prestamo), que sería (R – (β - α))

La comprobación del cumplimiento de esta forma normal es muy exigente


computacionalmente, por lo que es habitual utilizar la 3FN.
© Universidad Internacional de La Rioja (UNIR)

Curso de Bases de Datos SQL


12
Tema 9. Ideas clave
Lo + recomendado

Lecciones magistrales

Ejemplo diagrama E-R: gestión de vuelos

Para continuar practicando el proceso de diseño de base de datos, en esta lección


magistral presentamos un problema de gestión de vuelos que hemos adaptado de
Sosa, M. y López, M. (2007). Diseño de bases de datos relacionales. Santa Fe: El Cid
Editor. Para ello, partimos de un enunciado concreto y vamos generando el diagrama
entidad-relación para contemplar todos los detalles indicados en el enunciado.

Accede a la lección magistral a través del aula virtual


© Universidad Internacional de La Rioja (UNIR)

Curso de Bases de Datos SQL


13
Tema 9. Lo + recomendado
No dejes de leer

Formas normales

Sampol.90. (Octubre de 2017). Cómo normalizar una base de datos sin morir en el
intento [Blog post]. Platzi blog.

Aunque el concepto de normalización de BD es ya clásico, aún se siguen presentando


artículos y ejemplos para facilitar su comprensión, lo cual da una idea de la
importancia de este proceso. Como en esta reciente entrada de blog sobre
normalización, que se presenta de forma comprensible y concisa.

Accede a la entrada a través del aula virtual o desde la siguiente dirección web:
https://platzi.com/blog/normalizar-una-base-de-datos-y-no-morir-en-el-intento/
© Universidad Internacional de La Rioja (UNIR)

Curso de Bases de Datos SQL


14
Tema 9. Lo + recomendado
No dejes de ver

Normalización formal

Hemos intentado resumir las ideas del material de estudio con un lenguaje más
sencillo. En dicho material (que se tendrá en cuenta para el examen) tienes un
desarrollo más formal y extenso. No obstante, hemos incluido aquí un vídeo en el
que se explica la normalización con una perspectiva más formal.

Accede al vídeo a través del aula virtual o desde la siguiente dirección web:
https://www.youtube.com/watch?v=-5QMUXKPd40&t=3s
© Universidad Internacional de La Rioja (UNIR)

Curso de Bases de Datos SQL


15
Tema 9. Lo + recomendado
Normalización de ejemplo típico

En este vídeo se explica el concepto de normalización, así como diferentes formas


normales sobre un ejemplo típico de compra venta.

Accede al vídeo a través del aula virtual o desde la siguiente dirección web:
https://www.youtube.com/watch?v=0I_0lHj4GP4
© Universidad Internacional de La Rioja (UNIR)

Curso de Bases de Datos SQL


16
Tema 9. Lo + recomendado
+ Información

A fondo

Cuarta forma normal

Accede a la entrada a través del aula virtual o desde la siguiente dirección web:
Database Normalization: 4th Normal Form - MariaDB Knowledge Base

Quinta forma normal

Accede a la entrada a través del aula virtual o desde la siguiente dirección web:
Database Normalization: 5th Normal Form and Beyond - MariaDB Knowledge Base
© Universidad Internacional de La Rioja (UNIR)

Curso de Bases de Datos SQL


17
Tema 9. + Información
Webgrafía

Reglas de Codd

En la web de Jorge Sánchez podemos encontrar numeroso material de estudio,


manuales e información relacionada con la gestión de bases de datos. Con el
siguiente enlace accedemos a una explicación de las reglas de Codd, que se
propusieron para definir qué es un SGBD relacional. Es un conocimiento importante
que aumenta tu cultura sobre BD, por lo que recomendamos su lectura.

Accede a la página web a través del aula virtual o desde la siguiente dirección web:
https://jorgesanchez.net/manuales/gbd/modelo-relacional.html

Ejercicios de normalización

En el siguiente URL encuentras un ejemplo de normalización, utilizando las primeras


tres formas normales.

Accede a la página web a través del aula virtual o desde la siguiente dirección web:
© Universidad Internacional de La Rioja (UNIR)

A Complete Guide to Database Normalization in SQL | by Emily Burns | Towards Data Science

Curso de Bases de Datos SQL


18
Tema 9. + Información
Test
1. Las decisiones de diseño sobre BD deben:
A. Minimizar el número de reuniones naturales.
B. Evitar redundancia de información.
C. Ser eficientes en la recuperación de datos.
*D. Todas las anteriores son correctas.

2. ¿Cuándo un dominio es atómico?


A. Cuando los elementos del dominio se presentan como unidades indivisibles.
B. Cuando no se tienen varios valores para dicho atributo en la misma tupla.
C. Cuando los caracteres que forman parte del valor no tienen significados
parciales.
*D. Todas las anteriores son correctas.

3. Las dependencias funcionales son:


A. Sinónimos de las claves primarias.
*B. Conceptos más amplios que las claves, que permiten establecer relaciones
ente valores de atributos aunque éstos no sean clave.
C. Sinónimos de claves externas.
D. Ninguna de las anteriores es correcta.

4. Una dependencia funcional puede ser:


A. Trivial, si se cumple en todas las relaciones.
B. Completa, si la dependencia se establece en relación a un conjunto de
valores en el antecedente y no a un subconjunto de ellos.
© Universidad Internacional de La Rioja (UNIR)

C. Transitiva, si sigue la misma norma que el concepto matemático que ya


conocemos.
*D. Todas las anteriores son correctas.

Curso de Bases de Datos SQL


19
Tema 9. Test
5. Normalizar es:
A. Simplificar el diseño para que pueda ser entendido por el cliente.
B. Evitar que se repita cualquier dato en la BD.
*C. Eliminar las redundancias en la BD.
D. Todas las anteriores son correctas.

6. La primera forma normal (1FN) hace referencia a:


*A. Dominios atómicos.
B. Eliminación de dependencias transitivas.
C. Eliminación de atributos multivalorados.
D. Todas las anteriores son correctas.

7. La segunda forma normal hace referencia a:


A. Dominios atómicos.
*B. Eliminación de dependencias parciales de la clave primaria.
C. Eliminación de atributos multivalorados.
D. Eliminación de dependencias transitivas.

8. La tercera forma normal hace referencia a:


A. Dominios atómicos.
B. Eliminación de dependencias parciales de la clave primaria.
C. Eliminación de atributos multivalorados.
*D. Eliminación de dependencias transitivas.

9. La FNBC:
A. Relaja las restricciones de la 3FN.
B. Relaja las restricciones de la 2FN.
© Universidad Internacional de La Rioja (UNIR)

*C. Es más estricta que la 3FN.


D. Ninguna de las anteriores es correcta.

Curso de Bases de Datos SQL


20
Tema 9. Test
10. Si tenemos libro (titulo,ejemplar, precio, f_edicion,autor):
*A. titulo → autor sí es una dependencia funcional.
B. precio → f_edicion sí es una dependencia funcional.
C. precio → f_edicion alguna veces es una dependencia funcional.
D. titulo → autor no es una dependencia funcional.
© Universidad Internacional de La Rioja (UNIR)

Curso de Bases de Datos SQL


21
Tema 9. Test

También podría gustarte