Algebra relacional.
Ya sabemos que en el modelo relacional la informaci贸n se almacena en tablas. Las tablas tambi茅n se denominan relaciones. Una tabla es la forma en que un usuario ve los datos. Se divide horizontalmente en filas y columnas. Una fila representa un registro o un grupo de valores de campos que contiene toda la informaci贸n referente a una entidad de la tabla. Una columna contiene informaci贸n referente a un 煤nico campo o atributo.
Cada tabla posee las siguientes restricciones:
- Todos los registros de una tabla son del mismo tipo. Para registros distintos se usan tablas diferentes.
- Cada campo de acumula en una columna de la tabla. Cada columna se identifica mediante el nombre de la columna.
- No se permite campos duplicados en las columnas.
- No existen registros duplicados
- El orden de los registros de una tabla es indiferente.
Cada una de las filas de la tabla se denomina tupla. Cada columna de la tabla se denomina atributo. La cardinalidad de una tabla es el n煤mero de filas que contiene, y el grado es el n煤mero de columnas que tiene.
Adem谩s cada tabla debe de ser identificada de manera 煤nica por un atributo llamado clave de tabla. Las definiciones de clave candidata, superclave, clave primaria, clave alternativa o clave for谩nea son enfoques casi identicos en el modelo de el datos relacional.
Tambi茅n hay que recordar que al posible conjunto de valores que puede tomar una columna se denomina dominio, pudiendo ser de dos tipos:
Dominio continuo.Los atributos pueden tomar todos los valores posibles entre un m谩ximo y un m铆nimo.
Dominio discreto.Los atributos s贸lo pueden tomar valores de un subconjunto predeterminado entre un m谩ximo y un m铆nimo.
DNI | NOMBRE | APELLIDOS | DIRECCI脫N | lOCALIDAD | PROVINCIA | E_CIVIL |
00000000-A | Fulanito | P茅rez | Nogal 8 | Almer铆a | Almer铆a | Soltero |
00000001-A | Facundo | Pas | Col贸n 16 | Villarubio | Badajoz | Casado |
Cada valor de la tabla es una TUPLA.
El grado de la tabla es 7, porque tiene 7 campos.
La cardinalidad es 2 porque tiene 2 filas.
Dominios discretos, pueden ser PROVINCIA, LOCALIDA y E_CIVIL.
Dominio continuo puede ser DNI, NOMBRE, APELLIDOS y DIRECCI脫N.
脕lgebra relacional.
Seguro que has recordado el uso de matrices en el colegio cuando estudiabas matem谩ticas. El 谩lgebra relacional es un sistema cerrado de operaciones definidas sobre relaciones.
Al aplicarse las operaciones sobre dos o m谩s tablas, el resultado es una nueva tabla. Se pueden obtener conjuntos de tuplas nuevas o atributos seg煤n un criterio de discriminaci贸n. A continuaci贸n se van a describir los operadores relacionales m谩s difundidos. Pero antes necesitaremos tener una tabla de pruebas.
Selecci贸n.Este operador selecciona un conjunto de tuplas que cumplen una determinada condici贸n. La sintaxis del operador es
S(nombre_tabla,condici贸n);
En mySQL se conoce el operador como SELECT. Por ejemplo queremos mostrar solo los pedidos que tengan m谩s de 50 unidades.
S(pedidos, cantidad>50)
O si queremos mostrar, por ejemplo los pedidos desde el d铆a 2 de diciembre:
S(pedidos, f_pedido>2020-12-01)
Asignar a nueva tabla.Si lo que queremos es que el subconjunto seleccionado de tuplas se adjunte a otra tabla, usaremos:
nombre_nueva_tabla:=S(nombre_tabla, condici贸n)
As铆 que construyamos la nueva tabla con la consulta anterior:
Se puede agregar tablas nuevas de cualquier dato, cogiendo los valores de las tuplas con las operaciones matem谩ticas tanto de operaciones l贸gicas. En otras clases aprender谩s a operar sobre las tablas cuando aprendas a manejar el lenguaje SQL.
Normalizaci贸n.
Cuando estamos dise帽ando una BDD debemos seguir una serie de pasos y, a la hora de finalizar, debemos pasar del modelo entidad-relaci贸n al modelo relacional. Esto es los que se conoce con el nombre de normalizaci贸n. Cuando dise帽amos una BBDD o incluso un sistema inform谩tico debemos medir su calidad y podemos hacerlo mediante la forma normal.
El objetivo de la normalizaci贸n es:
● Eliminar la redundancia.
● Eliminar la inconsistencia de datos.
● Garantizar la integridad referencial.
● Dependencia funcional.
● Dependencia funcional completa.
● Dependencia funcional transistiva.
● Dependencia poarcial.
Primera forma normal.No se permite que en una tabla existan atributos que tomen m谩s de un valor. Todos sus valores deben ser at贸micos, es decir, unievaluados.
Esto significa que para registros de igual valor que otros se debe de generar otra fila con su grupo de tuplas, para que no interfiera con la tupla repetida, tal como pasa en la tabla con el elemento tornillo.
La soluci贸n m谩s 贸ptima pasa por separar los datos en dos tablas diferentes: una para los datos que ya eran at贸micos y otra para el campo multivaluado.
Segunda forma normal.Para que un atributo se encuentre en la 2FN debe estar en la 1FN y, adem谩s, los atributos que no forman parte de la clave tienen una dependencia completa de la clave principal.
El siguiente ejemplo muestra una tabla de una BBDD de una librer铆a. Puedes ver que el campo direcci贸n depende de c贸digo de tienda, pero no de CodLibro. Como los atributos no estan relacionados entre s铆, la tabla no se encuentra en la segunda forma normal.
Para que estuviese en 2FN deber铆amos de separar el Codlibro de la tabla direcciones (y crear otra solo con direcciones), tal cual se ve a continuaci贸n.
Tercera forma normal.Decimos que una relaci贸n est谩 en 3FN cuando est谩 en 2FN y cuando los atributos que no forman parte de la clave primaria son independientes entre s铆, es decir, no presentan dependencias transitivas.
Podemos ver que el campo Nombre Dpto depende transitivamente de la clave a trav茅s del campo Cod.dpto, por tanto, esta tabla no est谩 en 3FN. Para llegar a una soluci贸n 贸ptima podemos pasar a crear dos tablas, eliminando la informaci贸n que ten铆a dependencia transitiva y creando una nueva tabla para ella.
Forma normal Boycce-Cold.La FNBC es una versi贸n de la 3FN un poco m谩s estricta. Decimos que una relaci贸n est谩 en FNBC cuando est谩 en 3FN y cuando todos sus atributos no clave son clave candidata.
En resumen, para que una tabla se encuentre correctamente normalizada debemos seguir tres principios fundamentales:
1. No pueden existir atributos multievaluados.
2. Todos los atributos deben depender de forma completa y No transitiva de la clave.
3. Si existen claves candidatas compuestas, no deben tener un atributo com煤n.