lunes, 4 de mayo de 2015

Modelo Relacional



1) Modelo Relacional


El modelo relacional para la gestión de una base de datos es un modelo de datos basado en la lógica de predicados y en la teoría de conjuntos. Es el modelo más utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente.

En este modelo todos los datos son almacenados en relaciones, y como cada relación es un conjunto de datos, el orden en el que éstos se almacenen no tiene relevancia (a diferencia de otros modelos como el jerárquico y el de red). Esto tiene la considerable ventaja de que es más fácil de entender y de utilizar por un usuario no experto. La información puede ser recuperada o almacenada por medio de consultas que ofrecen una amplia flexibilidad y poder para administrar la información.
Este modelo considera la base de datos como una colección de relaciones. De manera simple, una relación representa una tabla que no es más que un conjunto de filas, cada fila es un conjunto de campos y cada campo representa un valor que interpretado describe el mundo real. Cada fila también se puede denominar tupla o registro y a cada columna también se le puede llamar campo o atributo.
Para manipular la información utilizamos un lenguaje relacional, actualmente se cuenta con dos lenguajes formales el Álgebra relacional y el Cálculo relacional. El Álgebra relacional permite describir la forma de realizar una consulta, en cambio, el Cálculo relacional sólo indica lo que se desea devolver.

Características:

  • Una Base de Datos se compone de varias tablas o relaciones.
  • No pueden existir dos tablas con el mismo nombre ni registro.
  • Cada tabla es a su vez un conjunto de registros (filas y columnas).
  • La relación entre una tabla padre y un hijo se lleva a cabo por medio de las claves primarias y ajenas (o foráneas).
  • Las claves primarias son la clave principal de un registro dentro de una tabla y éstas deben cumplir con la integridad de datos.
  • Las claves ajenas se colocan en la tabla hija, contienen el mismo valor que la clave primaria del registro padre; por medio de éstas se hacen las formas relacionales
Elementos del Modelo:

  1. Atributo: Es la propiedad que describe a cada entidad.
  2. Campo: Mínima unidad de almacenamiento de información.
  3. Registro: Conjunto de campos.
  4. Dominio: Describe un conjunto de posibles valores de un atributo.

2) Estructura de las Base de Datos Relacionales

La base de datos se organiza en dos marcadas secciones; el esquema y los datos (o instancia).

El esquema es la definición de la estructura de la base de datos y principalmente almacena los siguientes datos:


  • El nombre de cada tabla
  • El nombre de cada columna
  • El tipo de dato de cada columna
  • La tabla a la que pertenece cada columna
  • Las bases de datos relacionales pasan por un proceso al que se le conoce como normalización, el resultado de dicho proceso es un esquema que permite que la base de datos sea usada de manera óptima.


Los datos o instancia es el contenido de la base de datos en un momento dado. Es en sí, el contenido de todos los registros.

Definición de una base de datos relacional: 
      Es una base de datos que cumple con el modelo relacional, el cual es el modelo más utilizado en la actualidad para implementar bases de datos ya planificadas. Permiten establecer interconexiones (relaciones) entre los datos (que están guardados en tablas), y a través de dichas conexiones relacionar los datos de ambas tablas, de ahí proviene su nombre: "Modelo Relacional". Tras ser postuladas sus bases en 1970 por Edgar Frank Codd, de los laboratorios IBM en San José (California), no tardó en consolidarse como un nuevo paradigma en los modelos de base de datos. 
            
      Estructura de los datos relacionales:

TABLAS: son esencialmente relaciones.
• ATRIBUTOS: son las cabeceras de las tablas.
• DOMINIO: es el conjunto de valores que toma un atributo.
• TUPLAS: son cada una de las líneas que contiene una tabla.
• CLAVE PRIMARIA: atributo o conjunto de atributos de una relación que identifican inequívocamente a una tupla.

Requisitos para que una clave primaria lo sea:

- Unicidad: el valor de la clave primaria de una tupla, no se puede repetir.
- Minimalidad: si el PK (Primary Key) es compuesto, no se podrá eliminar ninguno de sus componentes.
- CLAVE FORÁNEA O EXTERNA: atributo o conjunto de atributos que son clave primaria en otra relación o tabla


Relaciones de la base de datos:

No siempre las condiciones para establecer vínculos entre dos tablas son iguales, la manera en que se relacionan las tablas entre sí da lugar a comportamientos diferentes. En la estructutura de cualquier base de datos encontramos principalmente tres tipos de relaciones que se describen del siguiente modo:

·         Uno a muchos.
·         Muchos a muchos.
·         Uno a uno.

De todas ellas, la más utilizada y recomendable en la mayoría de los casos será el modelo Uno a muchos como veremos a continuación.

Propiedades de las relaciones:

Miden su grado de bondad/aproximación al modelo real matemático por una serie de "formas normales", según se sube en las formas se dice que la relación está mejor diseñada. Al menos debe estar en la primera forma normal (1NF) y para ello debe cumplir:

  • No hay duplicación de tuplas.
  • No hay orden entre las tuplas.
  • No hay orden entre los atributos (se accede a través de su nombre).

No existen atributos que no sean atómicos (una casilla un dato). Es decir, no existe la posibilidad de tener una tabla como la siguiente:

Alumno Asignatura
José Cálculo
         Algebra
      Física

no es correcta, sin embargo si lo es esta otra:

Alumno Asignatura
José Cálculo
José Algebra
José Física

Por último, decir que existe la posibilidad de tratar relaciones entre sí a través de atributos comunes, esto evita la duplicación de la información. Dividimos un esquema en más de uno.

Dominios:

Un dominio describe un conjunto de posibles valores para cierto atributo. Como un dominio restringe los valores del atributo, puede ser considerado como una restricción. Matemáticamente, atribuir un dominio a un atributo significa "cualquier valor de este atributo debe ser elemento del conjunto especificado".

Distintos tipos de dominios son: enteros, cadenas de texto, fecha, no procedurales, etc.

Cada tabla puede tener uno o más campos cuyos valores identifican de forma única cada registro de dicha tabla, es decir, no pueden existir dos o más registros diferentes cuyos valores en dichos campos sean idénticos. Este conjunto de campos se llama clave única. Pueden existir varias claves únicas en una determinada tabla, y a cada una de éstas suele llamársele candidata a clave primaria.

Claves relaciones:

Clave primaria

Una clave primaria es una clave única elegida entre todas las candidatas que define unívocamente a todos los demás atributos de la tabla, para especificar los datos que serán relacionados con las demás tablas. La forma de hacer esto es por medio de claves foráneas.

Clave foránea

Una clave foránea es una referencia a una clave en otra tabla, determina la relación existente en dos tablas. Las claves foráneas no necesitan ser claves únicas en la tabla donde están y sí a donde están referenciadas.

Por ejemplo, el código de departamento puede ser una clave foránea en la tabla de empleados. Se permite que haya varios empleados en un mismo departamento, pero habrá uno y sólo un departamento por cada clave distinta de departamento en la tabla de departamentos.

Clave índice

Las claves índice surgen con la necesidad de tener un acceso más rápido a los datos. Los índices pueden ser creados con cualquier combinación de campos de una tabla. Las consultas que filtran registros por medio de estos campos, pueden encontrar los registros de forma no secuencial usando la clave índice.

Las bases de datos relacionales incluyen múltiples técnicas de ordenamiento, cada una de ellas es óptima para cierta distribución de datos y tamaño de la relación.

Los índices generalmente no se consideran parte de la base de datos, pues son un detalle agregado. Sin embargo, las claves índices son desarrolladas por el mismo grupo de programadores que las otras partes de la base de datos.

3) Restricciones de integridad

Una restricción es una limitación que obliga el cumplimiento de ciertas condiciones en la base de datos. Algunas no son determinadas por los usuarios, sino que son inherentemente definidas por el simple hecho de que la base de datos sea relacional. Algunas otras restricciones las puede definir el usuario, por ejemplo, usar un campo con valores enteros entre 1 y 10.

Las restricciones proveen un método de implementar reglas en la base de datos. Las restricciones limitan los datos que pueden ser almacenados en las tablas. Usualmente se definen usando expresiones que dan como resultado un valor booleano, indicando si los datos satisfacen la restricción o no.


Las restricciones no son parte formal del modelo relacional, pero son incluidas porque juegan el rol de organizar mejor los datos. Las restricciones son muy discutidas junto con los conceptos relacionales.

Las restricciones de integridad no permiten la existencia de relaciones que no representan un estado posible del mundo real que están representando.

Valores nulos:

Los valores nulos (que son distintos de la cadena vacía, blancos, 0, ...) se soportan en los SGBD totalmente relacionales para representar información desconocida o no aplicable de manera sistemática, independientemente del tipo de datos.

Se reconoce la necesidad de la existencia de valores nulos, para un tratamiento sistemático de los mismos.
Hay problemas para soportar los valores nulos en las operaciones relacionales, especialmente en las operaciones lógicas.
Lógica trivaluada. En una posible solución. Existen tres (no dos) valores de verdad: Verdadero, Falso y Desconocido (null). Se crean tablas de verdad para las operaciones lógicas:
null Y null = falso
Verdadero Y null = null
Falso Y null = Falso
Verdadero O null = Verdadero
etc..


Un inconveniente es que de cara al usuario el manejo de los lenguajes relacionales se complica pues es más difícil de entender.

Integridad de entidad:

Pretende que cada entidad que se guarda en la base de datos sea identificable de un modo unico, es decir, que evitemos la información redundante.
La identificación de identidades no es única, podemos tener varios modos de identidad para un mismo objeto real.

Estas entidades pueden ser de diferentes caracteres:
Entidades físicas, Entidades conceptuales, Entidades como eventos.
La integridad de entidad define una fila como entidad única para una tabla determinada. Exige la integridad de columnas, de los identificadores o la clave principal de una tabla, mediente indices y restricciones UNIQUE, o restricciones PRIMARY KEY o IDENTITY

Integridad referencial:

Protege las relaciones definidas entre las tablas cuando se crean o se eliminan filas.
Se basa en las relaciones entre claves externas y claves principales mediante restricciones FOREIGN KEY y CHECK.

Garantiza que los valores de clave sean coherentes en las distintas tablas. Para conseguir esa conseguir esa coherencia, es preciso que no haya referencias a valores inexistentes y que, si cambia el valor de una clave, todas las referencias a ella se cambien en consecuencia en toda la base de datos. 

Otras restricciones:
  • Restricción de unicidad: No debe haber en la relacion dos tuplas que tengan el mismo valor en todos los atributos del conjunto K (dos valores iguales en la misma columna)
  • Restricciones de valor no nulo: No debe haber en la relacion una tupla que tenga valor nulo en algun atributo de K (No debe haber ninguna casilla de la columna vacia)



4) Lenguaje de manipulación de datos

Para manipular la información utilizamos un lenguaje relacional, actualmente se cuenta con dos lenguajes formales el álgebra relacional y el cálculo relacional. El álgebra relacional permite describir la forma de realizar una consulta, en cambio, el cálculo relacional sólo indica lo que se desea devolver.

El lenguaje más común para construir las consultas a bases de datos relacionales es SQL (Structured Query Language), un estándar implementado por los principales motores o sistemas de gestión de bases de datos relacionales integradas.

En el modelo relacional los atributos deben estar explícitamente relacionados a un nombre en todas las operaciones, en cambio, el estándar SQL permite usar columnas sin nombre en conjuntos de resultados, como el asterisco taquigráfico (*) como notación de consultas.

Al contrario del modelo relacional, el estándar SQL requiere que las columnas tengan un orden definido, lo cual es fácil de implementar en una computadora, ya que la memoria es lineal.


Es de notar, sin embargo, que en SQL el orden de las columnas y los registros devueltos en cierto conjunto de resultado nunca está garantizado, a no ser que explícitamente sea especificado por el usuario.

Álgebra relacional:

El álgebra relacional es un conjunto de operaciones que describen paso a paso cómo computar una respuesta sobre las relaciones, tal y como éstas son definidas en el modelo relacional. Denominada de tipo procedimental, a diferencia del Cálculo relacional que es de tipo declarativo.


Describe el aspecto de la manipulación de datos. Estas operaciones se usan como una representación intermedia de una consulta a una base de datos y, debido a sus propiedades algebraicas, sirven para obtener una versión más optimizada y eficiente de dicha consulta.


Calculo relacional:

El Cálculo relacional es un lenguaje de consulta que describe la respuesta deseada sobre una Base de datos sin especificar como obtenerla, a diferencia del Álgebra relacional que es de tipo procedural, el cálculo relacional es de tipo declarativo; pero siempre ambos métodos logran los mismos resultados.



Podemos distinguir, a lo menos, dos Clases de Cálculo Relacional:

Cálculo relacional basado en tuplas (TRC).

Una consulta en TRC es de la forma:

{T | φ(T )}
donde T es una variable tipo tupla y φ(T) es una fórmula que describe a T. El resultado de esta consulta es el conjunto de todas las tuplas t para las cuales la fórmula es verdadera.

Variable de tipo tupla
Una variable tipo tupla T es una variable capaz de tomar cualquier valor tupla que pertenece a una relación (o tabla).

Sintáxis de consulta en TRC
La sintáxis es definida a partir de la lógica de primer orden. Donde la variable a utilizar son de tipo tupla. Una variable es libre en una fórmula (o subfórmula) si la (sub) fórmula no contiene ninguna ocurrencia de cuantificadores que la limiten. En una consulta en TRC de la forma: {T | φ(T )}, T es la única variable libre.


Cálculo relacional basado en dominios (DRC)

Está constituido con los mismos operadores que el calculo relacional de tuplas pero no hay tuplas sino variables dominio. Las expresiones del cálculo relacional de dominios son de la forma { (x, y, z, ...) / P(x, y, z, ...) }, donde x, y, z representan las variables de dominio, P representa una fórmula compuesta de átomos (igual que en el CRT). Los átomos del cálculo relacional de dominios tienen una de las siguientes formas:

(x, y, z ) Î r, donde r es una relación con n atributos y x , y, z .son variables de dominio o constantes.
x q y, donde x e y son variables de dominio y q es un operador de comparación aritmética (>, <, =, ¹). Es necesario que los atributos x e y, tengan dominios cuyos miembros puedan compararse mediante q.
x q c, donde x es una variable de dominio, q es un operador de comparación y c es una constante en el dominio del atributo x.

Fuentes:

  • http://es.wikipedia.org/wiki/Modelo_relacional
  • http://es.wikipedia.org/wiki/C%C3%A1lculo_relacional
  • http://es.wikipedia.org/wiki/Base_de_datos_relacional#Estructura
  • http://es.wikipedia.org/wiki/Base_de_datos_relacional
  • http://www.um.es/docencia/barzana/IAGP/IAGP2-Bases-datos-relacionales.html#BM2
  • http://es.slideshare.net/omarzon/modelo-relacional-202868
  • http://quimor.ath.cx/manejo/modulo134.html
  • http://es.slideshare.net/vyezk007/integridad-de-entidad-e-integridad-referencial-en-sql-server-y-access?related=2
  • http://es.wikipedia.org/wiki/Sistema_de_gesti%C3%B3n_de_bases_de_datos_relacionales#Regla_3:_tratamiento_sistem.C3.A1tico_de_valores_nulos