36809 Mensajes en 36772 Temas - por 2012 Usuarios - Último usuario: MaryjoLigh

* Chat Sentinela

Refresh History

Autor Tema: Relaciones recursivas en SQL-SERVER  (Leído 872 veces)

doctor

  • Aprendiz
  • *
  • Mensajes: 1
    • Ver Perfil
Relaciones recursivas en SQL-SERVER
« en: Mayo 10, 2011, 10:08:50 pm »
Esta es una de los tipos de relaciones entre bases de datos

1° Forma

La primera forma es arrastrar con el clik izquierdo presionado y arrastras hasta el campo que manejara recursividad

por ejemplo tienes una tabla llamada EMPLEADO

EMPLEADO

CodigoEmp (llave Primaria)
NombreEmp
Cargo
Jerarquia
Cod_Jefe (campo a referenciar)

Debido a que el jefe tambien es un empleado la informacion estaria repitiendose si hacemos 2 tablas asi que lo relacionamos con recursividad para no tener redundancia de datos.


2° Forma


EMPLEADO

CodigoEmp (llave Primaria)
NombreEmp
Cargo
Jerarquia
Cod_Jefe (campo a referenciar) FOREIGN KEY REFERENCES EMPLEADO(CodigoEmpleado)

de esta forma se hace las relaciones recursivas

Ok  tal vez no nos parezca lógico relacionar una tabla consigo misma y realmente no es muy usual ocupar este caso , pero veremos que puede tener su utilidad.

Supongamos que en un determinado archivo de stock se almacenan datos de ciertas piezas o componentes y que cada una de ellas puede tener o no otra pieza que es su complemento.

Por ejemplo, si se tratara de tornillos, podría estar disponible o no la tuerca correspondiente a cada una de las medidas de los mismos.

Podemos resolver esta situación sin necesidad de crear una tabla extra con las tuercas, agregando un campo que llamaremos Complemento.

Planteado el problema, en lugar de detallar los pasos a seguir, daremos aquí la explicación conceptual basada en un ejemplo sencillo, por considerar que a esta altura del aprendizaje, el lector se encuentra en condiciones de entenderlo y aplicarlo a la solución de una situación concre-ta.

Comenzaremos por agregar al registro de stock un campo "complemento" que contendrá el valor de la clave de la pieza complementaria.

Por ejemplo, si denomináramos como S a los tornillos y B a las tuercas, el registro corres-pondiente a un tornillo de 9/16" por 1" de largo tendría en el campo CODP la clave S9/16x1, y po-dría tener en el campo Complemento algo como B9/16, clave con la cual estarían registrados en esa misma tabla los datos de la tuerca correspondiente.

Para que esto sea posible, debemos agregar nuevamente la tabla Stock a la consulta, si-guiendo el procedimiento que ya conocemos para agregar tablas. Nos quedarán así Stock y Stock 1, siendo este último el nombre que asigna SQL-SERVER en caso de que se agregue dos veces la misma tabla a una consulta.

Notemos que Stock y Stock 1 son dos referencias distintas a los mismos datos, ya que en realidad sólo existe una única tabla, Stock.

Seguramente el registro de la tabla incluye una descripción de la pieza y otros datos sobre características de la misma. Podemos entonces agregar a la consulta el campo Complemento de la tabla Stock y el de Descripción de la tabla Stock 1.

De esta forma, cuando veamos el registro del tornillo, se mostrará también la clave y la des-cripción del complemento del mismo, por ejemplo B9/16 Tuerca forjada facetada y, si lo deseá-ramos, también podríamos agregar a la consulta el campo existencias de la tabla Stock 1, para conocer las cantidades en existencia de la pieza complementaria.

Podría ocurrir que alguna pieza no tenga su complemento; en ese caso, el campo Comple-mento estaría vacío y, como consecuencia, tampoco se mostraría información en el campo de descripción (el referido a Stock 1).

También es posible que una determinada tuerca sea el complemento de más de un tornillo y, en ese caso, todos estos tornillos tendrían el mismo valor en su campo Complemento.

 

SimplePortal 2.3.4 © 2008-2011, SimplePortal