Normalización - script

From Ibbddunq

Revision as of 20:41, 8 May 2009 by Carlos (Talk | contribs)

Motivación

En el curso vimos una forma de llegar al esquema de una BD relacional: arrancar por un MER y traducirlo. Hay otras formas, p.ej. armar una bolsa con todos los atributos que quiero y después ir separándolos en tablas.

P.ej. te dicen ... (o bien artista y trailer, o bien funcion / formaParte / acto).

¿Es correcta esta base? Si les preguntan por qué no, ¿qué dirían, cómo lo justificarían? A partir de estos atributos, ¿cómo armarían un esquema de BD que tenga la misma info y que esté bien?

Hoy vamos a hablar de

  • criterios de calidad de esquemas de BD, que se suman a las anomalías y restricciones de integridad que vimos al estudiar MR.
  • cómo transformar un esquema en otro que sí cumpla con las restricciones de calidad adicionales.

O sea, estas restricciones también las vamos a garantizar sin necesidad de programa.

Si armamos primero el MER y después lo traducimos a MR con las reglas que vimos, la BD que resulta cumple las restricciones que vamos a ver; o sea, una buena manera de armar un esquema de MR, es armarlo en MER y después pasarlo; o hacerlo directamente en MR, pero pensar en "cómo sería el MER de esta parte" ante dudas.

Un poco para verificar que una traducción MER -> MR quedó OK,


Criterios

Se pueden ver de dos formas

1. evitar anomalías de actualización (pág 401-402). Ejemplo: meter ARTISTA y TRAILER en una misma tabla.

  • de inserción: no sabés qué insertar (trailer no asignado) y/o tenés que meter algunos valores iguales que otra fila, (2do artista d un trailer).
  • de eliminación: se va el que vivía en un trailer.
  • de modificación: si cambio un dato de un trailer (ponele que tenía el modelo mal), lo tengo que cambiar en todos los artistas que vivan en el mismo trailer.

2. pautas, que vienen a atacar los mismos problemas

  • no mezclar atributos de distintas entidades en la misma tabla.
  • que no quede info repetida excepto FKs.

Otro menos importante: no abusar de los null

(acá ver si hablamos de tuplas espurias al joinear)


Dependencias funcionales

Definición:

  X -> Y si t1(X) = t2(X) => t1(Y) = t2(Y)

¿A qué les suena? Claro que sí, a clave.

Las 6 reglitas.

Las 3 FNs + FNBC.

¡fin!

Personal tools