Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Formas Normales en RMDB

Formas Normales en RMDB

Terminología y conocimientos de formas normales para diseñar esquemas de datos normalizados en un RMDB.

Angel Guevara

June 20, 2017
Tweet

More Decks by Angel Guevara

Other Decks in Programming

Transcript

  1. Formas Normales en RMDB Definición y uso de las Formas

    Normales en una base de datos relacional
  2. Objetivos ➔ Promover la aplicación de normas formales en la

    maquetación de bases de datos relacionales. ➔ Conocer la terminología usada en la esquematización de datos. ➔ Conocer las redundancias y discordancias que pueden existir en bases de datos relacionales sin normalización
  3. Forma Normal Escala de criterios acumulativos para determinar la vulnerabilidad

    de una esquema relacional a inconsistencias lógicas. Seguir las normas formales sirve para: ➔ Evitar la redundancia de los datos. ➔ Disminuir problemas de actualización de los datos en las tablas. ➔ Proteger la integridad de los datos.
  4. Normalización Proceso en el cual se modifica un esquema relacional

    para que cumpla normas formales. Este proceso inicia capturando los requerimientos funcionales del sistema y decidiendo una forma normal a la cual normalizar el esquema.
  5. Tabla Una colección de datos relacionados estructurados en columnas y

    registros. Por lo general las tablas se catalogan en Entidades y Pivotes las segundas siendo asignaciones de 2 o más entidades. Columna También definido como atributo o campo. Es un conjunto de datos del mismo tipo. Sirven para organizar y garantizar la estructura de un registro en una tabla. Registro También definido como fila o tupla. Representa un elemento único que sigue la estructura de columnas de la tabla.
  6. Llave También conocida como clave, índice o identificador. Son columnas

    o tuplas de columnas que sirven para identificar un registro dentro de una tabla o identificar un registro en una tabla externa. Llave Compuesta También conocida como superclave o super llave es una llave que se compone de 2 o más columnas sin ordenamiento diferenciadas por la unicidad de las columnas. Toda llave compuesta es una llave.
  7. Llave Candidata Llave que permite diferenciar los registros de cada

    tabla de forma única. Ejemplo ➔ El nombre de usuario al ser único puede ser usado para diferenciar un registro de usuarios. ➔ El nombre y apellido también pueden actuar como llave candidata compuesta.
  8. Llave Primaria Una llave candidata escogida para representar el registro.

    Comúnmente se elige la llave candidata con la menor cantidad de columnas que no se espera se actualicen de forma regular. Ejemplo El nombre de usuario puede ser actualizado y esto implica actualizar todos los registros externos relacionados. Nombre y apellido no se espera que varíen pero al ser dos columnas alfanuméricas es preferible crear una columna numérica id.
  9. Llave Foránea Son llaves que permiten a un registro referenciar

    registros externos mediante una llave primaria externa. Las llaves foráneas no necesitan ser únicas en la tabla referencial pero deben serlo en la tabla referenciada. Las llaves foranes compuestas también se conocen como dependencias multivaluadas.
  10. Redundancia También conocida como dependencia funcional se refiere a información

    que se puede derivar a partir de otros datos Ejemplo Si se sabe la fecha de nacimiento de un usuario se puede deducir la edad. Las redundancias pueden traducirse fallos lógicos al tener más de una forma de obtener la información.
  11. 1FN ➔ Las columnas deben de ser atómicas, es decir

    indivisibles y simples. ➔ Cada tabla requiere tener una llave primaria. Existen otros criterios como el no poder guardar un registro con llave primaria nula los cuales son obligatorias en las RMDB comerciales. Atomicidad de Columnas
  12. ¿Cómo buscarías si un número telefónico ya está guardado? ¿Que

    pasa si quieres guardar un cuarto teléfono? ¿Cómo evitas que se guarden valores nulos? ¿Cómo editar/borrar un sólo teléfono sin editar los demás? ¿Cómo evitas que se repitan los teléfonos? ¿Qué tamaño necesita tener la columan telefono?
  13. Ejemplo normalizado ¿Dónde agregarías una columna para diferenciar los tipos

    de teléfono? ¿cómo evitarías que se repitan teléfonos? ¿Cuál es la llave primaria de la tabla Teléfono del cliente?
  14. En la práctica Permite que el editar un dato de

    un registro este no afecte a otros datos dentro del mismo registro. La 1FN es la regla más fácil de aprender e implementar, también es un buen masomenometro sobre qué tantas modificaciones se deben realizar a un esquema para ser normalizado.
  15. 2FN Toda columna que no sea parte de la clave

    depende única y completamente de la clave primaria. Es decir ➔ No existen redundancias de columnas en la misma tabla ➔ Las columnas dependen de la totalidad de la clave primaria y no sólo de una parte. Definición por Llave Primaria
  16. ¿Qué pasa si alguien cambia de lugar de trabajo? ¿Qué

    pasa si alguien gana o pierde una habilidad?
  17. Ejemplo normalizado ¿Dónde añadirías antigüedad laboral? ¿Donde añadirías experiencia con

    la habilidad? ¿Cuál es la llave primaria de Habilidades de los empleados?
  18. En la práctica Esta regla permite actualizar los datos de

    un registro sin que esto afecte registros dentro de esa misma tabla. La 2FN necesita un buen entendimiento de lo que son las llaves candidatas y primarias ya que crear columnas auto incrementales en tablas aunque no se requieren dificulta el poder reconocer una dependencia parcial.
  19. 3FN Independencia Transitiva No debe haber redundancias transitivas entre columnas

    no primarias. Es decir ningún atributo no primario de la tabla es dependiente transitivamente de una clave primaria externa.
  20. ¿Qué pasa si se descubre que alguna fecha de nacimiento

    es incorrecta y se tiene que corregir? ¿Donde guardar datos del ganador como su lugar de nacimiento? ¿Este esquema cumple 2FN?
  21. Ejemplo Normalizado ¿Cuál es la llave primaria de Ganadores del

    torneo? ¿Dónde se guardaría el puntaje o tiempo del ganador del torneo? ¿Dónde se guardaría la el lugar de nacimiento del ganador?
  22. En la práctica La 3FN permite que al actualizar una

    tabla este cambio no afecte la información existente en otras tablas evitando que la misma información diverga dependiendo de que tabla se está observando. Con esta regla se puede identificar en la tabla correcta en la cual guardar información.
  23. Un esquema que cumple 3FN se considera normalizado y es

    común detener el estudio de formas normales en este punto. Ya que las reglas 3.5FN, 4FN y 5FN cubren casos muy particulares difíciles de encontrar y la regla 6FN puede ser demasiado costosa de alcanzar.
  24. 3.5 FN Boycee-Codd: Mínima Determinación Las columnas de la llave

    primaria son las mínimas para determinar la llave. Es decir no existen redundancias de columnas o transitivas en las llaves primarias. ~90% de los esquemas que cumplen 3FN cumplen también 3.5FN
  25. Suponiendo que cada advisor sólo da un major ¿Qué pasa

    si se borra el registro de estudiante 456? ¿Cómo se va a saber que Darwin imparte Biology? ¿Cómo se valida que Shakespeare de clase de Literature si no tiene alumnos asignados?
  26. Ejemplo normalizado ¿Cuales son las llaves primarias de ambas tablas?

    ¿Cómo se asocia un Advisor a un Major sin que tenga asignado un estudiante? ¿Cómo evitas que un Student ingrese 2 veces el mismo Major? Por ejemplo enlistandose con EINSTEN y BOHR siendo que ambos imparten física.
  27. En la práctica Un esquema 3FN siempre puede convertirse en

    3.5FN. Sin embargo esto no siempre es práctico ya que no existe una forma esquematizada que responda correctamente la última pregunta de la diapositiva anterior. Por lo tanto sólo es práctico llegar a la 3.5FN si se pueden usar otras restricciones externas como triggers sql o validaciones en un lenguaje de programación que use el sql.
  28. 4FN Independencia Primaria Multivaluada No deben existir redundancias multivaluadas en

    la llave primaria donde los datos redunden en asignación muchos a muchos ~80% de los esquemas que cumplen 3FN cumplen también 4FN.
  29. ¿Qué pasa si alguna pizzeria agrega una nueva pizza o

    área de envio a su catálogo? Teniendo una ubicación ¿hay que filtrar redundancias de establecimientos que reparten en esa ubicación?
  30. ¿Cuál es la llave primaria de ambas tablas? ¿Dónde agregaría

    un tiempo estimado de envío? ¿Dónde agregaría un costo por pizza y costo por envío? Escribe una query que te diga que variedades de pizza se pueden pedir en shelbyville
  31. En la práctica En el ejemplo anterior el obtener la

    lista de reparto de pizzas de restaurantes por áreas implica utilizar una sentencia SQL la cual podría resultar en una carga de tiempo de ejecución para las consultas en la base de datos y añadir complejidad a toda consulta relacionada. Es conveniente crear tablas `view` con estas sentencias cuando lo permite la base de datos.
  32. 5FN Independencia Primaria Multivaluada Transitiva Cada dependencia por unión (join)

    es implicada por llaves candidatas (primarias). ~80% de los esquemas que cumplen 4FN cumplen también 5FN.
  33. El psiquiatra ofrece tratamiento para una aseguradora y condición si

    tanto el psiquiatra y la aseguradora estan capacitados para tratar condición. ¿Qué pasa si entra un nuevo doctor que no tenga asociada aún ninguna aseguradora? ¿Qué pasa si se descubre una nueva condición? ¿Qué pasa si un doctor aprende a tratar una nueva condición? ¿Como sabes que aseguradora ofrece más cobertura de condiciones?
  34. ¿Dónde se agregaría los años de experiencia que tiene un

    doctor tratando determinada condición? ¿Dónde se agregarían la cantidad de visitas que tiene derecho un cliente de una aseguradora por condición? ¿Cómo sería la consulta SQL que re creé la tabla no normalizada?
  35. En la práctica En el ejemplo anterior se cambio una

    tabla por 3 y para poder generar la lista de condiciones que atiende cada doctor y aseguradora se requiere una sentencia SQL compleja que relacione las 3 tablas con `join` simultáneamente. Al igual que la 4FN esto puede impactar en el tiempo de ejecución y se recomienda crear `view` cuando sea posible.
  36. 6FN Llave y Dominio También conocida como DKNF(domain-key normal form).

    Todas las restricciones son de dominio o clave ~5% de los esquemas que cumplen 5FN cumplen 6FN
  37. Restricción de Dominio A diferencia de las restricciones de clave

    donde cada valor apunta a un registro único en una tabla, las restricciones de dominio especifica un rango permitido para valores de una columna el cual se asocia a un registro de una tabla. Ejemplo catalogar personas en ‘alta’, ‘promedio’ y ‘baja’ dependiendo de su estatura.
  38. ¿Qué pasa si quiero dividir ‘Millonaire’ en 3 subgrupos? ¿Existe

    relación entre ser ‘Billionaire’ e ‘Evil’? ¿Qué pasas si se actualiza el valor ‘Net Worth in Dollars’?
  39. ¿Qué pasa si quiero dividir ‘Millonaire’ en 3 subgrupos? ¿Qué

    pasas si se actualiza el valor ‘Net Worth in Dollars’? ¿Cómo sería la consulta SQL para listar los usuarios y su ‘welthiness status’?
  40. Costo, Beneficio y Aplicación La 6FN es difícil de alcanzar

    en la práctica incluso para programadores experimentados. Mientras que 6FN elimina todas las redundancias en la mayoría de las bases de datos, es la FN más costosa de alcanzar. El uso más común es en bases de datos que manejan un alto flujo de información como data warehouses y big data donde las anomalías generan un impacto acumulativo por lo que el costo de implementar 6FN resulta menor. Algunos sistemas 6FN son demasiado complejos para ser analizados por un humano y se recurre a inteligencia artificial.
  41. El Factor Humano Debido a que la norma 6FN es

    ya bastante difícil de alcanzar y resuelve casi todas las redundancias imaginables por un humano no se ha visto la necesidad de explorar más allá de esta forma normal. Además como ya se dijo los sistemas que más usan esta forma normal son basados en inteligencia artificial La opinión de este autor que si alguna vez se llega a encontrar una 7FN o superior esta no será escrita por un humano si no por una inteligencia artificial para el uso exclusivo de otras inteligencias artificiales