Tutorial de SQL

cursos manuales tutoriales programming tutorials
 
Registrate gratis
45.000 registrados
Tutoriales
,
Tutoriales - Diseño - Trucos - Foros/Comunidad - Software - Recursos - HerramientasOnline - Biblioteca
Webmasters - Codigo Fuente - Libros - Cursos Propios - Comunidad - DirectorioN -Cursos y MastersN
Manuales Propios: MySQL - SQL - Visual Basic - W.A.P. - Photoshop - phpnuke - corba - director - php
dreamweaver - dreamweaverMX - excel - fireworksMX - flash - flashMX - freehand - oracle - zope

Las interrelaciones

Bases de datos-Modelo de datos relaccional-Las interrelaciones
Las interrelaciones son las relaciones que existen entre varias tablas del sistema (Clientes y Pedidos, por ejemplo). Existen tres formas de interrelaciones dependiendo de la cardinalidad con la que se combinan los elementos de ambas tablas.

Interrelaciones uno a uno
Una interrelación es de uno a uno entre la tabla A y la tabla B cuando a cada elemento de la clave de A se le asigna un único elemento de la tabla B y para cada elemento de la clave de la tabla B contiene un único elemento en la tabla A. Un ejemplo de interrelación de este tipo es la formada por las tablas Datos Generales de Clientes y Datos Contables de Clientes. En esta relación cada cliente tiene una única dirección y una dirección en cada una de las tablas. Representamos la relación como A 1: 1 B.

Ante la presencia de este tipo de relación nos podemos plantear el caso de unificar todos los datos en única tabla pues no es necesario mantener ambas tablas a la misma vez.

Este tipo de relación se genera cuando aparecen tablas muy grandes, con gran cantidad de campos, disgregando la tabla principal en dos para evitar tener una tabla muy grande. También surge cuando los diferentes grupos de usuario cumplimentan una información diferente para un mismo registros; en este caso se crean tantas tablas como registros, evitando así tener que acceder a información que el usuario del grupo actual no necesita.

Interrelaciones uno a varios
Una interrelación es de uno a varios entre las tablas A y B cuando una clave de la tabla A posee varios elementos relacionados en la tabla B y cuando una clave de la tabla B posee un único elemento relacionado en la tabla A.

Estudiemos la relación entre la tabla de clientes y la tabla de pedidos. Un cliente puede realizar varios pedidos pero un pedido pertenece a un único cliente, por tanto se trata de una relación uno a varios y la representamos A 1: n B.

Estas relaciones suelen surgir de aplicar la 1NF a una tabla.

Interrelaciones varios a varios
Una interrelación es de varios a varios entre las tablas A y B cuando una clave de la tabla A posee varios elementos relacionados en la tabla B y cuando una clave de la tabla B posee varios elementos relacionados en la tabla A.

Un caso muy característico de esta interrelación es la que surge entre las tablas de Puestos de Trabajo y Empleados de una empresa. Un Empleado puede desempeñar realizar varias funciones dentro de una empresa (desempeñar varios puestos de trabajo), y un puesto de trabajo puede estar ocupado por varios empleados a la misma vez. Esta interrelación la representamos como A n: n B.

No se deben definir relaciones de este tipo en un sistema de bases de datos, debido a su complejidad a la hora de su mantenimiento, por este motivo se debe transformar este tipo de relación es dos interrelaciones de tipo 1: n, empleando para ello una tabla que denominaremos puente y que estará formada por las claves de ambas tablas. Esta tabla puente debe contener una única clave compuesta formada por los campos clave de las tablas primeras.

Empleados Puestos
Código Empleado Empleado Código Puesto Puesto
103 Juan 52 Comercial
105 Luisa 73 Administrativo
251 Martín
736 Ana María
Tabla Puente
Código Empleado Código Puesto
103 52
103 73
105 73
251 52
736 52
736 73


Ahora existe una relación 1: n entre Empleados y Tabla Puente y otra relación 1: n entre Puestos y Tabla Puente ya que un empleado posee varios códigos de empleado en la tabla puente pero cada elemento de la tabla puente pertenece a un único empleado.

Por otro la un puesto de trabajo posee varios elementos relacionados en la tabla puente, pero cada elemento de la tabla puente está relacionado con un único elemento de la tabla puestos.

Problemas con las interrelaciones
A la hora de establecer las interrelaciones existentes en un sistema de bases de datos nos podemos encontrar dos problemas:


Interrelaciones recursivas: un elemento se relaciona consigo mismo directamente.
Interrelaciones circulares o cíclicas: A se relaciona con B, B se relaciona con C y C se relaciona con A.

Ambos casos pueden suponer un grabe problema si definimos una relación con integridad referencial y decimos eliminar en cascada (al eliminar una clave de la tabla A se eliminan los elementos relacionados en la tabla B). Supongamos la relación recursiva existen en la relación Empleado y Supervisor (ambos son empleados de la empresa). Está claro que un empleado está supervisado por otro empleado. Veamos la forma de solucionarlo:

Empleados
Código Nombre Supervisor
102 Juan NO
105 Luis SI
821 María NO
956 Martín SI


Para solucionar la relación debemos crear una tabla formada por dos campos. Ambos campos deben ser el código del empleado pero como no podemos tener dos campos con el mismo nombre a uno de ellos le llamaremos código supervisor.

Tabla Puente
Código Empleado Código Supervisor
102 105
105 956
821 105
956 105


Para terminar de resolver la interrelación recursiva basta con definir dos interrelaciones entre la tabla empleados y la tabla puente de tipo 1: n. La primera relación se crea utilizando las claves Empleados[Código] y Tabla Puente[Código Empleado]. La segunda entre Empleados[Código] y Tabla Puente [Código Supervisor].

Las interrelaciones cíclicas o circulares no son muy frecuentes y no existe una metodología estándar para su eliminación, normalmente son debidas a errores de diseño en la base de datos, principalmente en el diseño conceptual del sistema de datos. Por tanto si llegamos a este punto hay que volver a replantearse todo el diseño de la base de datos.

Atributos de las interrelaciones
En la mayoría de las interrelaciones definidas será conveniente exigir integridad relacional entre las claves. Exigiendo la integridad referencial se consigue que en una relación de tipo 1: n o de tipo 1: 1, no se puede añadir ningún valor en la tabla destino si no existe en la tabla origen. Dicho con un ejemplo: en la relación Clientes y Pedidos la tabla Pedidos contiene un campo que se corresponde con el código del Cliente, si se exige la integridad referencia no se podrá escribir un código de cliente en la tabla Pedidos que no exista en la tabla Clientes; de no exigir la integridad referencial se podrán crear pedidos con códigos de clientes que no existen, generando incongruencia de datos en la base de datos.

Definida la integridad referencial (siempre necesaria) podemos exigir la actualización en cascada (siempre necesaria); esta actualización implica que si cambiamos el código a un cliente, debemos actualizar dicho código en la tabla de pedidos, de no ser así, al cambiar el código a un cliente, perderemos los pedidos que tenía realizados.

Para concluir debemos hablar de la eliminación en cascada (NO siempre necesaria), la eliminación en cascada consiste en eliminar todos los datos dependientes de una clave. En nuestro ejemplo implica que al borrar un cliente hay que eliminar todos los pendidos que ha realizado. En muchas ocasiones no interesa realizar esta operación de eliminación en cascada por motivos diversos. Si en el caso de clientes y pedidos no se exige eliminación en cascada no se podrá borrar ningún cliente en tanto en cuanto tenga realizado algún pedido (de lo contrario tendríamos incongruencia de datos).





Este manual como su contenido ha sido integramente elaborado por
Claudio Casares www.lobocom.es/~claudio
nuestro agradecimiento

Las mejores ofertas de la Red
Ofertas de Tecnologia Ofertas de Vivienda
Ofertas de Finanzas Ofertas de Motor
Ofertas de Formacion Ofertas de Juegos
Ofertas de Ocio Ofertas de Salud
Ofertas de Viajes
  Volver a portada del manual SQL
 Manual de SQL
Introducción
Consultas
-De Selección
-De Acción
-De Unión Internas
-De Unión Externas
-De Referenc Cruzadas
Criterios de Selección
Agrupamiento Registros
Tipos de Datos
Subconsultas
Extructuras de Tablas
Problemas Resueltos
-Registros Duplicados
-Registros no Relacc.
Cursores
FullText (SQL-Server)
ACCESS
-Bases Externas
-Parámetros
-Omitir Permisos
-Cláusula PROCEDURE
Optimizar Sentencias
Modelo de datos
Introduccion
Los usuarios
Ciclo de vida
Criterios de calidad
Indicadores de calidad
El modelo logico
Restricciones integridad
Modelo Relacional
Introduccion
Proceso d Normalización
Las Interrelaciones
Algebra Relacional
Cálculo Relacional
El Modelo E/R
Entidades
Atributos
Dominios
Claves
Interrelaciones
Restricciones Interrelaciones
Ejemplo
Generalidades
Definiciones
Leyes de Murphy
Arquitecturas
Buffers
DataWareHousing
-Introducción
-Teoría
-Proyecto
Tutoriales
Recomedamos: programatium I solorecursos I manuales I pueblos 2.0I info-salud