Menú Cerrar
base de datos

Introducción a las formas normales

Seguimos con nuestro curso escrito de base de datos. Algo muy importante que se les escapa a los diseñadores de base de datos es que no hay una única forma para diseñar las bases de datos. ¿No sabes a qué me refiero con formas? ¡No te preocupes! En esta entrada te voy a explicar las formas normales establecidas para diseñar una base de datos, con ejemplos para ilustrar cada forma.

Antes de continuar con las formas normales, necesitas saber qué es una base de datos, las relaciones, el modelo entidad relación, cuáles son las llaves y para qué sirven, las opciones que tienes al momento de manejar el comportamiento de la base de datos ante cambios.

Si ya sabes todo lo mencionado anteriormente, sigamos con las formas normales para diseñar una base de datos.

¿Qué son las formas normales de diseño de bases de datos?

Las formas normales son técnicas para prevenir anomalías en las tablas de nuestra base de datos. Dependiendo de su estructura, una tabla puede estar en primera forma normal, segunda forma normal, tercera forma normal, cuarta formal normal o quinta forma normal.

En la siguiente figura se presenta una ilustración de las formas normales.

formas normales
Las diferentes formas normales

Formas normales

1FN Primera Forma Normal

Una relación se encuentra en primera forma normal si y solo si por cada renglón cada columna contiene valores atómicos. Una relación se encuentra en esta forma si cumple estas reglas:

  • Las celdas de las tablas poseen valores simples y no se permiten grupos ni arreglos repetidos como valores.
  • Todos los ingresos en cualquier columna o atributo son del mismo tipo.
  • Cada columna tiene un nombre único, el orden de las columnas es irrelevante.
  • Dos filas o renglones de una misma tabla no deben ser idénticas.

Generalmente las relaciones cumplen con estas características, así que podemos decir que la mayoría de las relaciones se encuentran en la 1FN.

2FN Segunda Forma Normal

La segunda forma normal consiste en dividir los atributos para establecer quién depende de quién. Una relación está en 2FN si y solo si está en 1FN y los atributos no primos dependen de la llave primaria. En este caso la relación cumple con las reglas de la 1FN y todos sus atributos que no son llaves dependen por completo de la llave primaria. De acuerdo con esta definición, cada tabla que tiene un atributo único como clave, está en 2FN.

3FN Tercera Forma Normal

Para definir la 3FN primero hay que hablar de la dependencia transitiva. La dependencia transitiva afirma que: en una tabla bidimensional que tiene por lo menos 3 atributos (X, Y, Z), X determina a Y, Y determina a Z pero Z no determina a X.

Una relación está en la 3FN si y solo si está en 2FN y todos sus atributos no primos dependen no transitivamente de la llave primaria. Consiste en eliminar la dependencia transitiva que queda en una segunda forma normal. En pocas palabras, una relación está en tercera forma normal si está en segunda forma normal y no existen dependencias transitivas entre los atributos.

Por dependencias transitivas se refiere a que existe más de una forma de llegar a referencias a un atributo de una relación.

Reglas de normalización

La normalización es un conjunto de técnicas para diseñar la estructura lógica de los datos de un sistema de información en el modelo relacional. Fue desarrollada por Edgar Frank Codd en 1972. Es una estrategia de diseño de abajo a arriba: se parte de los atributos y estos se van agrupando en relaciones (tablas) según su afinidad.

A continuación, veremos las diferentes reglas de normalización.

Regla 1: La regla de la información

Toda la información en un RDBMS está explícitamente representada de una sola manera por valores en una tabla. Si algo no existe en una tabla, no existe en la base de datos. Los nombres de tablas, vistas, columnas, y los datos de las columnas deben estar almacenados en tablas dentro de las bases de datos. Las tablas que contienen la información constituyen el Diccionario de Datos.

Regla 2: La regla del acceso garantizado

Cada ítem de datos debe ser lógicamente accesible al ejecutar una búsqueda que combine el nombre de la tabla, su clave primaria, y el nombre de la columna. Esto significa que dado un nombre de tabla, dado el valor de la clave primaria, y dado el nombre de la columna requerida, deberá encontrarse uno y solamente un valor. Por esta razón la definición de claves primarias para todas las tablas es prácticamente obligatoria.

Regla 3: Tratamiento sistemático de los valores nulos

La información inaplicable o faltante puede ser representada a través de valores nulos.


Regla 4: La regla de la descripción de la base de datos

La descripción de la base de datos es almacenada de la misma manera que los datos ordinarios. Es decir, en tablas y columnas, y debe ser accesible a los usuarios autorizados. La información de tablas, vistas, permisos de acceso de usuarios autorizados, debe ser almacenada exactamente de la misma manera.

Regla 5: La regla del sub-lenguaje Integral

Debe haber al menos un lenguaje que sea integral para soportar la definición de datos, manipulación de datos, definición de vistas, restricciones de integridad, y control de autorizaciones y transacciones.

Regla 6: La regla de la actualización de vistas

Todas las vistas que son teóricamente actualizables, deben serlo por el sistema mismo.

Regla 7: La regla de insertar y actualizar

La capacidad de manejar una base de datos con operandos simples aplica no solo para la recuperación o consulta de datos, sino también para la inserción, actualización y borrado de datos.

Regla 8: La regla de independencia física

El acceso de usuarios a la base de datos a través de terminales o programas de aplicación, debe permanecer consistente lógicamente cuando quiera que haya cambios en los datos almacenados.

Regla 9: La regla de independencia lógica

Los programas de aplicación y las actividades de acceso por terminal deben permanecer lógicamente inalteradas cuando quiera que se hagan cambios según los permisos asignados en las tablas de la base de datos.

Regla 10: La regla de la independencia de la integridad

Todas las restricciones de integridad deben ser definibles en los datos y almacenables en el catálogo, no en el programa de aplicación. Las reglas de integridad son:

  1. Ningún componente de una clave primaria puede tener valores en blanco o nulos.
  2. Para cada valor de llave foránea, deberá existir un valor de clave primaria concordante.

Regla 11: La regla de la distribución

El sistema debe poseer un lenguaje de datos que pueda soportar que la base de datos esté distribuida físicamente en distintos lugares sin que esto afecte o altere a los programas de aplicación.

Regla 12: Regla de la no-subversión

Si el sistema tiene lenguajes de bajo nivel, estos lenguajes de ninguna manera pueden ser usados para violar la integridad de las reglas y restricciones expresadas en un lenguaje de alto nivel.

Resumen

En esta entra a pesar de ser larga, vimos algo muy importante sobre las formas normales de diseño de las bases de datos. Son muy importantes al momento de diseñar nuestro sistema de información para saber cómo vamos a manejar los datos. Espero que te haya sido de utilidad.

Acerca del autor

Saintus Zephir

Ingeniero en Sistemas Computacionales y estudiante de Maestría en Ciencias en Ingeniería y Tecnologías Computacionales en el Centro de Investigación y de Estudios Avanzados del IPN (CINVESTAV-IPN).

Comparte el artículo en tus redes sociales

Artículos relacionados

46 comentarios

  1. Anónimo

    Muy buen material, excelente manera de redactar.

  2. Raúl

    Excelente aporte, lo primero que debe saber en informática.

  3. Lyn

    If you wish for to obtain a good deal from this post then you have to apply these methods
    to your won web site.

  4. Neta

    Hello there, just became aware of your blog through Google, and found that it is truly informative.I’m gonna watch out for brussels. I will be grateful if you continue this in future.A lot of people will be benefited from your writing.Cheers!

  5. Corazon

    It’s a pity you don’t have a donate button! I’d without
    a doubt donate to this excellent blog! I suppose for
    now i’ll settle for book-marking and adding your RSS feed to my Google account.
    I look forward to fresh updates and will talk about this website with my Facebook group.
    Chat soon!

  6. Cliff

    hello!,I really like your writing so so much! share we keep up a correspondence extra about your article on AOL?
    I need a specialist in this area to resolve my problem. May
    be that is you! Looking forward to see you.

  7. Brant

    Hi there! I know this is somewhat off topic but I was wondering which blogplatform are you using for this website? I’m getting sick and tired of WordPress because I’ve had issues with hackers and I’m looking at alternatives for another platform.I would be fantastic if you could point me in the direction of a good platform.

  8. Gilda

    I love what you guys tend to be up too. This kind of clever work and reporting!
    Keep up the awesome works guys I’ve incorporated you guys to blogroll.

  9. Michel

    I am truly glad to read this blog posts which carries lots of useful
    information, thanks for providing such information.

  10. tinyurl.com

    Howdy, i read your blog occasionally and i own a similar one and i was just curious if you get a lot of spam remarks?
    If so how do you stop it, any plugin or anything you can suggest?
    I get so much lately it’s driving me mad so any assistance is very much appreciated.

  11. tinyurl.com

    Hurrah! Finally I got a blog from where I be capable of actually obtain helpful
    information regarding my study and knowledge.

  12. tinyurl.com

    It’s perfect time to make some plans for the future and
    it’s time to be happy. I’ve learn this submit and if
    I may just I want to counsel you some interesting issues or tips.
    Perhaps you could write subsequent articles relating to this article.
    I wish to read more issues about it!

  13. tinyurl.com

    I visited several web pages except the audio feature for audio songs
    present at this web site is genuinely wonderful.

  14. bit.ly

    I just couldn’t go away your web site before suggesting
    that I really enjoyed the usual info an individual provide
    in your guests? Is gonna be back often to check up on new
    posts

  15. http://bit.ly

    I enjoy reading an article that will make people think.
    Also, thank you for allowing for me to comment!

  16. tinyurl.com

    Appreciation to my father who informed me regarding this
    blog, this webpage is genuinely amazing.

  17. http://tinyurl.com/ybp6oq5d

    magnificent issues altogether, you simply received a brand new reader.
    What might you recommend about your submit that you just made some days in the past?
    Any sure?

  18. tinyurl.com

    It is not my first time to pay a quick visit this website, i am browsing this website dailly and take good facts from here everyday.

  19. the cheapest flights possible

    Hi, Neat post. There’s a problem along with your website in web explorer,
    may test this? IE still is the marketplace chief and a big component to other folks will leave out your wonderful writing due to this problem.

  20. cheapest airline tickets possible

    Hey are using WordPress for your blog platform?
    I’m new to the blog world but I’m trying to get started and set up my own. Do you require any html
    coding knowledge to make your own blog? Any
    help would be greatly appreciated!

  21. air tickets cheap

    When I originally commented I clicked the “Notify me when new comments are added” checkbox
    and now each time a comment is added I get three emails with the same
    comment. Is there any way you can remove people from that service?
    Cheers!

  22. air tickets cheap flights

    Hello! Would you mind if I share your blog with my twitter group?

    There’s a lot of people that I think would really appreciate your content.

    Please let me know. Cheers

  23. affordable airfare

    I like the valuable information you provide in your articles.
    I will bookmark your weblog and check again here frequently.
    I am quite certain I will learn many new stuff right here!

    Best of luck for the next!

  24. air ticket

    I think this is one of the such a lot important information for me.
    And i’m happy studying your article. But should statement on some normal issues, The website style is wonderful,
    the articles is really great : D. Excellent job, cheers

  25. gamefly

    We’re a group of volunteers and opening a new scheme in our community.
    Your web site offered us with valuable info to work on. You’ve
    done a formidable job and our whole community will be thankful to you.

  26. gamefly

    Just desire to say your article is as amazing.
    The clearness on your submit is simply nice and i can suppose you are a professional on this subject.
    Fine together with your permission let me to grasp your
    feed to keep updated with imminent post. Thanks
    a million and please carry on the enjoyable work.

  27. tinyurl.com

    Normally I do not read post on blogs, however I wish to say that this
    write-up very compelled me to take a look at and do it!
    Your writing style has been amazed me. Thanks, very great post.

  28. http://tinyurl.com

    We stumbled over here coming from a different website and thought I should
    check things out. I like what I see so i am just following
    you. Look forward to finding out about your web page again.

  29. tinyurl.com

    I really like your blog.. very nice colors
    & theme. Did you make this website yourself or did you hire someone to do it for you?

    Plz reply as I’m looking to create my own blog and would
    like to know where u got this from. appreciate it

  30. t.co

    If you wish for to improve your familiarity simply keep visiting
    this website and be updated with the latest gossip posted here.

  31. tinyurl.com

    I truly love your blog.. Pleasant colors & theme. Did you
    develop this site yourself? Please reply
    back as I’m hoping to create my own blog and would like to
    find out where you got this from or exactly what the theme is called.
    Cheers!

  32. tinyurl.com

    It’s really a nice and helpful piece of info. I am
    satisfied that you shared this useful info with us. Please
    keep us informed like this. Thanks for sharing.

  33. bit.ly

    It’s really very difficult in this full of activity
    life to listen news on Television, so I simply use web for that purpose, and take the latest news.

  34. http://tinyurl.com/

    I think this is among the most important information for
    me. And i am glad reading your article. But want to remark on few general
    things, The site style is ideal, the articles is really nice : D.
    Good job, cheers

  35. tinyurl.com

    It’s wonderful that you are getting ideas from this article
    as well as from our dialogue made here.

  36. tinyurl.com

    Great post. I was checking continuously this
    blog and I’m impressed! Extremely useful info specifically the
    last part 🙂 I care for such info a lot. I was seeking this particular info for a very long time.
    Thank you and best of luck.

  37. tinyurl.com

    Admiring the dedication you put into your website and detailed information you present.
    It’s nice to come across a blog every once in a while that isn’t the same old rehashed information. Excellent read!
    I’ve bookmarked your site and I’m including your RSS feeds to my Google account.

  38. tinyurl.com

    Amazing! This blog looks exactly like my old one! It’s on a totally different
    topic but it has pretty much the same page layout and design. Outstanding choice of colors!

  39. tinyurl.com

    We’re a group of volunteers and opening a new scheme in our community.
    Your website provided us with valuable info to work on. You
    have done a formidable job and our whole community will be grateful to you.

  40. tinyurl.com

    I am no longer certain where you’re getting your information, however great topic.
    I must spend some time learning much more or understanding
    more. Thanks for excellent information I was in search of this information for my mission.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

× ¿Cómo puedo ayudarte?