PDA

Ver la Versión Completa : Termino Involucion ¿?


amerika111
09-04-2012, 17:51:50
Alguno ha escuchado hablar del termino Involucion de una tabla o base de datos.. ¿???

amerika111
09-04-2012, 18:42:34
segun como se trato de describir.. es algo asi como que realizar una invocacion de una tabla en donde la tabla se pueda invocar a ella misma.. no me queda claro por eso la duda:confused:

Delphius
09-04-2012, 19:14:18
Hola amerika111,
¿Y en donde, o de donde has escuchado y/o leído ese término?
Creo que a lo que tu apuntas es el concepto de tabla autoreferenciada o de tabla de referencia circular.

Basicamente es una tabla con una FK que apunta al PK de si misma. Es una técnica que algunos motores de base de datos poseen. Es útil para conseguir una estructura de árbol donde cada registro tiene N registros hijos, y éstos hijos pueden a su vez tener otros hijos. Cuando FK = NULL se trata de un "registro hoja". Por diseño pueden existir varios registros raíces (aquel que no tiene una FK que le apunte).

¿Cuál es el sentido del debate?

Saludos,

ecfisa
09-04-2012, 20:10:52
Hola.

La definición de involucionar es: "Detención y retroceso de un proceso evolutivo"

Yo dudaría mucho de utilizar una base de datos que fuera capaz de involucionar... :rolleyes:. Seguramente se trate una traducción o interpretación incorrecta del término recursion tál como apunta Delphius.

¿Cuál es el sentido del debate?
Coincido también, paso el hilo al foro Varios.

Saludos.:)

Delphius
09-04-2012, 21:24:45
Seguramente se trate una traducción o interpretación incorrecta del término recursion tál como apunta Delphius.

Pues al menos yo no he escuchado el término recursión en el contexto de base de datos; ni siquiera para este caso.
Al concepto de tabla autoreferenciada o referencia circular lo conozco de hace tiempo, aunque no estoy seguro si con dicho término... Al menos yo así es como la vengo nombrando desde que recuerdo del tema.
A ese nombre lo recuerdo haber leído, formalmente, en un material sobre las bases de datos; en concreto en una de las documentación de Firebird que dedicaba espacio al marco teórico.

Si hacemos la traducción al inglés de dicho término, no se asemeja al de recursión. Incluso estoy dudando de llamarlo "tablas recursivas"

Saludos,

ecfisa
09-04-2012, 21:49:51
Hola Delphius.

Tenés razón, está mal armada la oración. Da la impresion que en tu mensaje te referis a recursión, siendo que es una apreciación mía en base a lo mencionado por amerika111:
una invocacion de una tabla en donde la tabla se pueda invocar a ella misma

Mi intención era manifestar que coincidía con vos en que "involución de una base de datos" no se condecía con esa explicación y pero por mi mala redacción armé un berenjentún bárbaro.

Saludos. :)

Delphius
10-04-2012, 04:32:00
Hola Delphius.

Tenés razón, está mal armada la oración. Da la impresion que en tu mensaje te referis a recursión, siendo que es una apreciación mía en base a lo mencionado por amerika111:


Mi intención era manifestar que coincidía con vos en que "involución de una base de datos" no se condecía con esa explicación y pero por mi mala redacción armé un berenjentún bárbaro.

Saludos. :)
No es necesaria la disculpa.

Sería oportuno que amerika111 se explique el porque y donde ha visto y/o escuchado ese término. Y donde está la duda. Si lo que busca es enfocar el concepto de tablas autoreferenciadas, tiene que revisar la documentación del motor que utiliza y comprobar si tiene soporte para eso. Como he dicho antes, no todos los motores lo permiten.

Además hay que aclarar que en lo posible hay que evitar estos tipos de relaciones porque dificulta la ejecución de consultas y la presentación de los registros.

Creo que es fundamental también mencionar que también se suele hablar de referencia circular cuando se forma un ciclo en un DER e incluso hacia si misma. Esto es cuando hay más de un camino para llegar a la misma tabla, y/o a si misma.

Por ejemplo: El der A -1--M- B -1--M- C -M---1- A presenta un ciclo ya que presenta un camino A->B->C->A.
Otro ejemplo: A -> B -> C; A -> D -> C. En este caso hay dos maneras de vincular y relacionar, indirectamente, a A con C. El camino 1 es por B y el segundo es por D.
Estos ciclos puede provocar algunos "mareos" al motor debido a que no es capaz de decidir que "camino" tomar para evaluar la integridad de los datos.

Ambos tipos de ciclos deben evitarse. Por lo general algunas de las maneras de "romper" éstos pasa por eliminar la entidad que provoca esta dualidad (e incluso en algunos casos genera duplicidad) y armar un diseño más simple;formando otros tipos de relaciones. En ocasiones no es que se elimina, sino que una de las entidades pasa a ser absorbida por otra.
Otras posibilidad es que exista alguna entidad que no ha sido apreciada en el contexto. En ciertos casos introducir esta entidad escondida puede hacer de indirección y desarmar el ciclo.

En CodeProject hay un artículo (http://www.codeproject.com/Articles/38655/Prevent-Circular-References-in-Database-Design) que trata sobre esto.

Saludos,

amerika111
10-04-2012, 17:37:08
hola que tal, veo que a lo que me referia es exactamente lo que comenta Delphius, solo que no tenia el termino correcto.. este se lo llegue a escuchar a un compañero por eso lo comentaba en el foro, pero ya veo que el termino no era el correcto.. este termino salio en la conversacion ya que se planea implementar una base de datos con la jerarquia de la empresa.. y en el analisis al fin y acabo aunque unos empleados tengan un mayor rango de puesto todos al final son empleados ubicados en una tabla...

el motor de base de datos que se pretende utilizar es SQL server 2005

Ñuño Martínez
11-04-2012, 14:15:06
(...) Seguramente se trate una traducción o interpretación incorrecta del término recursion tál como apunta Delphius.
Esto me recuerda a la manía que algunos le tenéis a la pobre grilla (uséase, a la señora esposa del grillo). :rolleyes:

Delphius
11-04-2012, 14:47:32
Esto me recuerda a la manía que algunos le tenéis a la pobre grilla (uséase, a la señora esposa del grillo). :rolleyes:
Jajaja. Si te digo que a mi ni me agrada la variación rejilla. ¿No hay mejor traducción al castellano de "grid"? Porque ni cuadrícula me parece apropiado para nombrar a dicho control.

Saludos,

Ñuño Martínez
11-04-2012, 14:56:56
Jajaja. Si te digo que a mi ni me agrada la variación rejilla. ¿No hay mejor traducción al castellano de "grid"? Porque ni cuadrícula me parece apropiado para nombrar a dicho control. Sí, "rejilla" tampoco me gusta mucho. WordReference también lo traduce como "cuadricula". (http://www.wordreference.com/es/translation.asp?tranword=grid) De todas formas yo siempre lo he llamado "tabla". :cool:

AzidRain
11-04-2012, 22:40:44
El ejemplo clásico y no soluble de otra formar que no sea con una tabla autoreferenciada es el de un catálogo de cuentas de contabilidad. En donde hay cuentas padre, hijas, nietas y un largo etc. Ya ni hablemos de la visualización que debe ser en forma de árbol. Por ahí mencionaban que no todos los motores soportan este tipo de tablas, lo cual es incorrecto ya qye podemos modelar una tabla de estas características hasta con tablas planas. El chiste del asunto es precisamente el coco(seso) que le pongamos al modelo y su definición. El término correcto creo que debe ser "tabla autoreferenciada" ya que se explica por si mismo.

El triste caso de grid es bastante peculiar porque se usa a veces el intento de traducción "grilla" el cual viene no de grid sino de "grill" que significan 2 cosas similares pero muy diferentes en inglés. Un "grill" es una simple parrilla para asar, en ella tenemos una serie de barras o líneas paralelas. En cambio un grid, es similar pero digamos que es la combinación de dos parrillas dando como resultado una cuadrícula.

Muchos utilizan "tabla" como sinónimo de grid y generálmente eso lleva a confundir gimnasia con magnesia pues el grid no es mas que una mera representación de los datos contenidos en una tabla, de ahí que muchos las traten o quieran que se comporten como la misma cosa.

Casimiro Notevi
11-04-2012, 22:47:55
Cuadrícula. Un poco larga la palabra :)

Chris
11-04-2012, 22:57:35
Ya que se ha aclarado el término. Solo quiero mencionar que este tipo de estructuras es complicadísimo presentarlo en Delphi. Hay que utilizar un árbol "data-aware" y no hay muchas buenas opciones para ello. O por lo menos yo no conozco ninguna.

AzidRain
12-04-2012, 01:08:43
En efecto Chris, ese es uno de los problemas, no hay componentes que traduzcan una tabla autoreferenciada a un árbol. Yo las únicas que conozco son las Devexpress, que son de pago, de ahi en fuera como bien dices no hay mucho para elegir.