IMPLEMENTACIÓN DE LAS REGLAS DE
NORMALIZACIÓN EN DBMySQL – desarrollo web
Resumen de clase – responsable: Carlos Niño
Grado decimo - 2018
Una base de datos o data base (db), es una colección ordenada y catalogada de información,
la cual, permite gestionar y consultar a la misma
Los programas mas conocidos y usados para los sistemas de gestión de bases de datos (sgbd
o dbms) son ORACLE y MySQL
Usaremos MySQL y ampliaremos las reglas de normalización de bases de datos, previamente
estudiadas en clase
Construyamos una base de datos que nos permita gestionar la información de los estudiantes;
la tabla llamada estudiantes, tendría los siguientes campos, por ejemplo:
estudiantes
documento
Apellidos
Nombres
Direccion
Telefono
Dianac
Mesnac
Anonac
Grado
Acudiente
Eps
La primera forma normal, indica que es requerido un campo UNICO E IRREPETIBLE que sirva
de identificador para cada uno de los registros; asi las cosas, el elegido seria documento:
estudiantes
documento (primary key)
Apellidos
Nombres
Direccion
Telefono
Dianac
Mesnac
Anonac
Grado
Acudiente
Eps
En la segunda forma normal, los campos que NO dependan de la primary key, deben ser
suprimidos de la tabla, y convertidos en una nueva entidad (tabla); en este caso, si el
estudiante es eliminado de la base, el grado NO se elimina, asi como tampoco la eps; por ello,
estos dos campos se convierten en tablas nuevas:
estudiantes
documento (primary key)
Apellidos
Nombres
Direccion
Telefono
Dianac
Mesnac
Anonac
Acudiente
Grado
Idgrado
nombregrado
Eps
Ideps
nombreeps
Con el surgimiento de estas nuevas tablas, es necesario que pasen también por la primera y
segunda forma normales; para este caso, cada una de las tablas debe tener obligadamente, un
identificador único e irrepetible; nos valdremos de un id para cada caso (por ejemplo, es
posible descargar el listado de las eps colombianas y usar el código de cada una para su
identificación)
estudiantes
documento (primary key)
Apellidos
Nombres
Direccion
Telefono
Dianac
Mesnac
Anonac
Acudiente
Grado
Idgrado (primary key)
nombregrado
Eps
Ideps (primary key)
nombreeps
La tercera forma normal nos indica la cardinalidad o tipo de relación entre cada una de las entidades; se
prefiere que la cardinalidad sea de uno a varios, ya que es la que evita redundancias en la información; para que
esta cardinalidad sea efectiva, debe considerarse que la tabla relacionada como varios, deberá contener como
campo de referencia o CLAVE FORANEA, al primary key de la tabla con cardinalidad uno; vamos a analizarlo
con este ejemplo: que es mas apropiado: decir que un estudiante esta en varios grados? O que en un grado hay
varios estudiantes?
La respuesta es bastante clara, por lo que procedemos a crear un campo idéntico al primary key de grado (el
uno) dentro de la tabla estudiantes (el varios)
estudiantes
documento (primary key)
Apellidos
Nombres
Direccion
Telefono
Dianac
Mesnac
Anonac
Idgrado (foreign key)
Acudiente
Grado
Idgrado (primary key)
nombregrado
Eps
Ideps (primary key)
nombreeps
Ahora, hagamos el mismo razonamiento con los estudiantes y la eps: será que un estudiante tiene varias eps? O
una eps tiene afiliados a varios estudiantes?
…no es muy difícil verdad? Asi que, la primary key de la tabla eps (el uno) debe agregarse como campo de
referencia dentro de estudiantes (el varios)
estudiantes
documento (primary key)
Apellidos
Nombres
Direccion
Telefono
Dianac
Mesnac
Anonac
Idgrado (foreign key)
Ideps (foreign key)
Acudiente
Grado
Idgrado (primary key)
nombregrado
Eps
Ideps (primary key)
nombreeps
Si las relaciones son correctas, se entra automáticamente a la cuarta forma normal; en esta, las referencias se
integran desde los campos primary key hacia los campos foreign key; la gran ventaja de esto, es que los enlaces
de integración se crean inmediatamente, sin la necesidad de crearlos con cada nuevo registro; sin embargo, se
debe de ser muy cuiddoso cuando se comienza a alimentar la información en la base; para nuestro ejemplo, si
comenzamos a llenar estudiantes, la base no va a permitir grabarlos porque NO EXISTE aun, la referencia de la
eps a la que esta afiliado; aun asi, todavía haría falta llenar los grados antes que a los estudiantes.
estudiantes
documento (primary key)
Apellidos
Nombres
Direccion
Telefono
Dianac
Mesnac
Anonac
Idgrado (foreign key)
Ideps (foreign key)
Acudiente
Grado
Idgrado (primary key)
nombregrado
Eps
Ideps (primary key)
nombreeps
Si hacemos un análisis mas profundo de nuestra base, cualquiera wue sea, entenderemos que hay que ser lo
mas especifico posible; por ejemplo, quien dicta la clase? En donde se ve la clase? Quien toma dichas clases?
Esto nos indica la imperiosa necesidad de crear dos nuevas entidades (tablas) llamadas docentes y materias.
Ya aplicando las cuatro formas normales, deberíamos tener algo como esto:
Grado
Idgrado (primary key)
Nombregrado
Eps
Ideps (primary key)
nombreeps
estudiantes
documento (primary key)
Apellidos
Nombres
Direccion
Telefono
Dianac
Mesnac
Anonac
Idgrado (foreign key)
Ideps (foreign key)
Acudiente
email docentes
Cedula (primary key)
nombredoc
materias
idmateria (primary key)
Nombremateria
idgrado (foreign key)
Cedula (foreign key)
Fijemonos como hemos creado nuestro MER (modelo entidad relación) desde los extremos de los enlaces; es
decir, desde eps y docentes; si hablamos de cardinalidad, y recitamos el camino de los enlaces, nos quedaría
algo asi:
Un docente dicta varias materias en un curso en el cual, hay varios estudiantes que están afiliados a una eps
Grado
Idgrado (primary key)
Nombregrado
Eps
Ideps (primary key)
nombreeps
estudiantes
documento (primary key)
Apellidos
Nombres
Direccion
Telefono
Dianac
Mesnac
Anonac
Idgrado (foreign key)
Ideps (foreign key)
Acudiente
email docentes
Cedula (primary key)
nombredoc
materias
idmateria (primary key)
Nombremateria
idgrado (foreign key)
Cedula (foreign key)
1
1
1
1
∞
∞
∞
∞
A continuación vamos a consignar las consultas sql que deben ser desarrolladas para la correcta
creación de las tablas; es MUCHO MUY IMPORTANTE!!!! Que construya las tablas en el estricto orden
que se le indica; de otra forma, podrá generar errores de referencia por no existencia (por ejemplo,
si ustee construye primero la tabla de materias, no va a poder referenciar la cedula del docente
porque la tabla docentes aun no existe) o errores de cotejamiento (constraint), los cuales,
básicamente, se dan porque usted intenta delacionar como foreign key, un campo con distinto
nombre o distinta cantidad de términos, en caso de ser varchar (por ejemplo, usted construye la tabla
docentes con cedula en minúscula y con 20 caracteres, mientras que intenta referenciar con un
campo Cedula con c mayuscula en la tabla materias, y con mas de 20 (o menos de 20) caracteres.
Recuerde: la cuarta forma normal EXIGE INTEGRIDAD REFERENCIAL, esto es, exactitud y precisión
en la escritura
Note como en primer lugar, se construyeron aquellas tablas que NO poseen ninguna clave
foránea (foreign key), para posteriormente tomar sus claves primarias y vincularlas con las
siguientes tablas
Recuerde:
Este es un simple ejercicio en clase; usted deberá pensar, concebir y diseñar su propia base
de datos para su proyecto final; el trabajo en el hosting es delicado, y en ocasiones puede
volverse frustrante y agotador; no desfallezca; como sabe, si esto fuera fácil, cualquiera lo
haría; tenga en cuenta el amplio campo de acción en el mercado laboral, que un desarrollador
php y mysql tiene, y las posibilidades de articular interdisciplinarmente su proyecto a los
demás entes de su formación (la semana cultural, gestión empresarial, artes e incluso
matemática)
Espero que este repaso sea de ayuda para usted. Exitos!!