Home Bases de Datos El Modelo Relacional Primera forma normal

PostHeaderIcon Primera forma normal

Usar puntuación: / 1
MaloBueno 

Una relación está en 1FN si los valores de cada atributo son atómicos, es decir, toman un único valor del dominio correspondiente.

Una tabla estará en 1FN si cada intersección de fila y columna tiene un único valor.

Si una relación no está en 1FN, hay que eliminar los campos repetidos, es decir, aquellos que tienen más de un valor.

Para eso existen dos formas:

  • Repetir los atributos con un solo valor para cada valor del grupo repetitivo.
  • Crear otra relación, heredando ésta la clave primaria de la relación en la que se encontraban.

Veamos un ejemplo para entenderlo mejor

Supongamos un centro educativo en donde un alumno puede realizar varios cursos

COD_ALUMNO NOMBRE CURSOS
111 LUIS MARTÍN

WORD

EXCEL

POWER POINT

112 MARÍA HERNÁNDEZ WORD
113 PEDRO TOLEDO PATCHWORK
114 LAURA ORTEGA

ELECTRICIDAD

ELECTRÓNICA

115 JUANA FERNÁNDEZ

REPARACIÓN DE EQUIPO

REDES LOCALES

BASES DE DATOS

Como podemos observar en la tabla, el campo cursos tiene varios valores, al igual que el campo teléfono. La clave principal es el código de alumno (COD_ALUMNO)

El término correcto es MULTIEVALUADO

Como se comentó anteriormente, existen dos soluciones:

La primera es separar cada campo repetido en distintas filas. Esta solución es válida si es existe un único campo multievaluado

COD_ALUMNO NOMBRE CURSO
111 LUIS MARTÍN WORD
111 LUIS MARTÍN EXCEL
111 LUIS MARTÍN POWER POINT
112 MARÍA HERNÁNDEZ WORD
113 PEDRO TOLEDO PATCHWORK
114 LAURA ORTEGA ELECTRICIDAD
114 LAURA ORTEGA ELECTRÓNICA
115 JUANA FERNÁNDEZ REPARACIÓN DE EQUIPOS
115 JUANA FERNÁNDEZ REDES LOCALES
115 JUANA FERNÁNDEZ BASES DE DATOS

La segunda opción sería crear una tabla nueva con los cursos y una relación entre alumnos y cursos. Quedaría:

Tabla ALUMNOS: {(COD_ALUMNO: numérico),(NOMBRE:Texto)}

COD_ALUMNO NOMBRE
111 LUIS MARTÍN
112 MARÍA HERNÁNDEZ
113 PEDRO TOLEDO
114 LAURA ORTEGA
115 JUANA FERNÁNDEZ

Tabla CURSOS: {(NOMBRE:Texto)}

WORD
EXCEL
POWER POINT
PATCHWORK
ELECTRICIDAD
ELECTRÓNICA
REPARACIÓN DE EQUIPOS
REDES LOCALES
BASES DE DATOS

Tabla MATRÍCULA: {(ALUMNO: numérico),(CURSO: texto)}

ALUMNO CURSO
111 WORD
111 EXCEL
111 POWER POINT
112 WORD
113 PATCHWORK
114 ELECTRICIDAD
114 ELECTRÓNICA
115 REPARACIÓN DE EQUIPOS
115 REDES LOCALES
115 BASES DE DATOS

Particularmente me parece mejor la segunda opción, fundamentalmente porque en caso de haber más de un campo multievaluado sería imposible separarlos en registros diferentes (más que ser imposible, no saldría rentable porque generaría una enorme cantidad de registros).

Vamos a dejar como ejercicio la misma tabla de antes con dos campos multievaluados: el curso y el teléfono.

COD_ALUMNO NOMBRE CURSOS TELÉFONOS
111 LUIS MARTÍN

WORD

EXCEL

POWER POINT

111111111

222222222

112 MARÍA HERNÁNDEZ WORD

333333333

444444444

113 PEDRO TOLEDO PATCHWORK 555555555
114 LAURA ORTEGA

ELECTRICIDAD

ELECTRÓNICA

666666666

777777777

115 JUANA FERNÁNDEZ

REPARACIÓN DE EQUIPO

REDES LOCALES

BASES DE DATOS

888888888

999999999

La solución a este ejercicio la puedes encontrar haciendo click aquí

 

Escribir un comentario


Código de seguridad
Refescar

PostHeaderIcon Más Comentado

PostHeaderIcon Últimos Comentarios

mod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_counter
mod_vvisit_counterHoy282
mod_vvisit_counterAyer427
mod_vvisit_counterEsta semana282
mod_vvisit_counterLa semana pasada5382
mod_vvisit_counterEste mes15566
mod_vvisit_counterEl mes pasado29418
mod_vvisit_counterTodos los días1623202

We have: 46 guests, 2 bots online
Hoy es: Jun 18, 2018