<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.2" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Comments on: Cuando el modelado de una relación entre 3 tablas se vuelve un ejercicio de arquitectura.</title>
	<link>http://www.fernandoguillen.info/es/blog/2007/07/17/cuando-el-modelado-de-una-relacion-entre-3-tablas-se-vuelve-un-ejercicio-de-arquitectura/</link>
	<description>nada por aquí y nada por allá ó el desarrollo de software como expresión artística.</description>
	<pubDate>Fri, 21 Nov 2008 23:47:59 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.2</generator>
		<item>
		<title>By: fguillen</title>
		<link>http://www.fernandoguillen.info/es/blog/2007/07/17/cuando-el-modelado-de-una-relacion-entre-3-tablas-se-vuelve-un-ejercicio-de-arquitectura/#comment-19</link>
		<dc:creator>fguillen</dc:creator>
		<pubDate>Fri, 20 Jul 2007 10:14:26 +0000</pubDate>
		<guid>http://www.fernandoguillen.info/es/blog/2007/07/17/cuando-el-modelado-de-una-relacion-entre-3-tablas-se-vuelve-un-ejercicio-de-arquitectura/#comment-19</guid>
		<description>Vengo de Hibernate, era gran defensor de los oscuros motores de persistencia que te abstraían del acceso a BD. Más escaldado que un gato soy muy feliz ahora con Ibatis. Seguramente por no haber sabido apañármelas bien, pero esta es una conversación que requiere otro post, o mejor unas cañas :).

La cuestión ahora es que si opto por la solución de:

1) el campo discriminatorio entonces no puedo definir la FK a nivel de base de datos pues una vez apuntará a una tabla y otras a otra.

2) las 2 FK resulta que las dos FK pueden estar a NULL y convertir al registro en corrupto (huérfano). Además de tener que hacer un alter table cada vez que incluya en mi modelo una nueva tabla ElementTypeX para crear la nueva FK.

3) lo de las dos tablas de SubElement es la que menos me gusta pues resultaría que objetos del mismo tipo se correspondería en BD con tablas diferentes, sin contar la multiplicación del trabajo en la capa DAO cada vez que aparece un nuevo objeto de tipo ElementTypeX que requiere SubElements.

4) no te gusta la 4.. joer.. sí se ve muy liosa :)</description>
		<content:encoded><![CDATA[<p>Vengo de Hibernate, era gran defensor de los oscuros motores de persistencia que te abstraían del acceso a BD. Más escaldado que un gato soy muy feliz ahora con Ibatis. Seguramente por no haber sabido apañármelas bien, pero esta es una conversación que requiere otro post, o mejor unas cañas :).</p>
<p>La cuestión ahora es que si opto por la solución de:</p>
<p>1) el campo discriminatorio entonces no puedo definir la FK a nivel de base de datos pues una vez apuntará a una tabla y otras a otra.</p>
<p>2) las 2 FK resulta que las dos FK pueden estar a NULL y convertir al registro en corrupto (huérfano). Además de tener que hacer un alter table cada vez que incluya en mi modelo una nueva tabla ElementTypeX para crear la nueva FK.</p>
<p>3) lo de las dos tablas de SubElement es la que menos me gusta pues resultaría que objetos del mismo tipo se correspondería en BD con tablas diferentes, sin contar la multiplicación del trabajo en la capa DAO cada vez que aparece un nuevo objeto de tipo ElementTypeX que requiere SubElements.</p>
<p>4) no te gusta la 4.. joer.. sí se ve muy liosa :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Al</title>
		<link>http://www.fernandoguillen.info/es/blog/2007/07/17/cuando-el-modelado-de-una-relacion-entre-3-tablas-se-vuelve-un-ejercicio-de-arquitectura/#comment-18</link>
		<dc:creator>Al</dc:creator>
		<pubDate>Fri, 20 Jul 2007 09:48:48 +0000</pubDate>
		<guid>http://www.fernandoguillen.info/es/blog/2007/07/17/cuando-el-modelado-de-una-relacion-entre-3-tablas-se-vuelve-un-ejercicio-de-arquitectura/#comment-18</guid>
		<description>Primero, si quieres pensar en objetos te recomendaría que te pasaras a un ORM. Hibernate con JPA, otra implementación de JPA, o de JDO, etc. Lo que más rabia te dé. Esta es una cuestión que no hubieras tenido ni que pensar XD.

Pero.... si quieres seguir con ibatis... supongo que la solución sería del estilo de la tercera, en la que SubElement tiene un campo discrimatorio para saber a que corresponde. O tener dos FK y escoger tú según busques por un sitio o por otro. Aunque en ibatis no te costaría tampoco demasiado optar por el segundo (dos tablas separadas). Lo que te sea más cómodo y mejor se adapta el uso que le quieras dar (cantidad de registros, participaciones en joins, etc.)

La verdad es que la que no cogería es la 4 XD.</description>
		<content:encoded><![CDATA[<p>Primero, si quieres pensar en objetos te recomendaría que te pasaras a un ORM. Hibernate con JPA, otra implementación de JPA, o de JDO, etc. Lo que más rabia te dé. Esta es una cuestión que no hubieras tenido ni que pensar XD.</p>
<p>Pero&#8230;. si quieres seguir con ibatis&#8230; supongo que la solución sería del estilo de la tercera, en la que SubElement tiene un campo discrimatorio para saber a que corresponde. O tener dos FK y escoger tú según busques por un sitio o por otro. Aunque en ibatis no te costaría tampoco demasiado optar por el segundo (dos tablas separadas). Lo que te sea más cómodo y mejor se adapta el uso que le quieras dar (cantidad de registros, participaciones en joins, etc.)</p>
<p>La verdad es que la que no cogería es la 4 XD.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: fguillen</title>
		<link>http://www.fernandoguillen.info/es/blog/2007/07/17/cuando-el-modelado-de-una-relacion-entre-3-tablas-se-vuelve-un-ejercicio-de-arquitectura/#comment-17</link>
		<dc:creator>fguillen</dc:creator>
		<pubDate>Fri, 20 Jul 2007 09:28:45 +0000</pubDate>
		<guid>http://www.fernandoguillen.info/es/blog/2007/07/17/cuando-el-modelado-de-una-relacion-entre-3-tablas-se-vuelve-un-ejercicio-de-arquitectura/#comment-17</guid>
		<description>1) No, un SubElement sólo pertenece a un ElementTypeX

2) Uso Ibatis y el modelo lo defino yo a pelo, también toda la capa DAO.

Te resumo la historia:

Un SubElement sólo pertenece a un ElementTypeX, pero puede ser a un ElementType1 o a un ElementType2. ¿Cómo diseño una relación que aveces apunte a ElementType1 y otras a ElementType2? ¿O cómo demonios se hace esto? :)</description>
		<content:encoded><![CDATA[<p>1) No, un SubElement sólo pertenece a un ElementTypeX</p>
<p>2) Uso Ibatis y el modelo lo defino yo a pelo, también toda la capa DAO.</p>
<p>Te resumo la historia:</p>
<p>Un SubElement sólo pertenece a un ElementTypeX, pero puede ser a un ElementType1 o a un ElementType2. ¿Cómo diseño una relación que aveces apunte a ElementType1 y otras a ElementType2? ¿O cómo demonios se hace esto? :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Al</title>
		<link>http://www.fernandoguillen.info/es/blog/2007/07/17/cuando-el-modelado-de-una-relacion-entre-3-tablas-se-vuelve-un-ejercicio-de-arquitectura/#comment-16</link>
		<dc:creator>Al</dc:creator>
		<pubDate>Fri, 20 Jul 2007 09:23:58 +0000</pubDate>
		<guid>http://www.fernandoguillen.info/es/blog/2007/07/17/cuando-el-modelado-de-una-relacion-entre-3-tablas-se-vuelve-un-ejercicio-de-arquitectura/#comment-16</guid>
		<description>Se me ha olvidado explicar la pregunta 1... y es que si es que sí, nada impide que haya dos FK XD, pero eso ya lo sabes.</description>
		<content:encoded><![CDATA[<p>Se me ha olvidado explicar la pregunta 1&#8230; y es que si es que sí, nada impide que haya dos FK XD, pero eso ya lo sabes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Al</title>
		<link>http://www.fernandoguillen.info/es/blog/2007/07/17/cuando-el-modelado-de-una-relacion-entre-3-tablas-se-vuelve-un-ejercicio-de-arquitectura/#comment-15</link>
		<dc:creator>Al</dc:creator>
		<pubDate>Fri, 20 Jul 2007 09:22:37 +0000</pubDate>
		<guid>http://www.fernandoguillen.info/es/blog/2007/07/17/cuando-el-modelado-de-una-relacion-entre-3-tablas-se-vuelve-un-ejercicio-de-arquitectura/#comment-15</guid>
		<description>Preguntas tontas que te pueden seguir de guía. Lo de tontas es porque tengo que reconocer que me ha sido un poco denso el post a partir del braimstorming XD. Me he fijado más que nada en los dibujos XD.

1.- ¿Un Subelement puede pertenecer a la vez a ElementType1 y ElementType2?. 

2.- Ya que hablas de beans, entiendo que partes del diseño de objetos para que te genere el relacional, ¿no puedes utilizar herencia para definir esa relación de en un AbstractElementTypeWithSubElements y que sea el ORM quién se encargue de discernir estas cosas?</description>
		<content:encoded><![CDATA[<p>Preguntas tontas que te pueden seguir de guía. Lo de tontas es porque tengo que reconocer que me ha sido un poco denso el post a partir del braimstorming XD. Me he fijado más que nada en los dibujos XD.</p>
<p>1.- ¿Un Subelement puede pertenecer a la vez a ElementType1 y ElementType2?. </p>
<p>2.- Ya que hablas de beans, entiendo que partes del diseño de objetos para que te genere el relacional, ¿no puedes utilizar herencia para definir esa relación de en un AbstractElementTypeWithSubElements y que sea el ORM quién se encargue de discernir estas cosas?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PEZ</title>
		<link>http://www.fernandoguillen.info/es/blog/2007/07/17/cuando-el-modelado-de-una-relacion-entre-3-tablas-se-vuelve-un-ejercicio-de-arquitectura/#comment-14</link>
		<dc:creator>PEZ</dc:creator>
		<pubDate>Tue, 17 Jul 2007 16:31:51 +0000</pubDate>
		<guid>http://www.fernandoguillen.info/es/blog/2007/07/17/cuando-el-modelado-de-una-relacion-entre-3-tablas-se-vuelve-un-ejercicio-de-arquitectura/#comment-14</guid>
		<description>nad(a) nad(o)</description>
		<content:encoded><![CDATA[<p>nad(a) nad(o)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: fguillen</title>
		<link>http://www.fernandoguillen.info/es/blog/2007/07/17/cuando-el-modelado-de-una-relacion-entre-3-tablas-se-vuelve-un-ejercicio-de-arquitectura/#comment-13</link>
		<dc:creator>fguillen</dc:creator>
		<pubDate>Tue, 17 Jul 2007 16:10:42 +0000</pubDate>
		<guid>http://www.fernandoguillen.info/es/blog/2007/07/17/cuando-el-modelado-de-una-relacion-entre-3-tablas-se-vuelve-un-ejercicio-de-arquitectura/#comment-13</guid>
		<description>Esto es público, y tú pez, eres bienvenida.</description>
		<content:encoded><![CDATA[<p>Esto es público, y tú pez, eres bienvenida.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PEZ</title>
		<link>http://www.fernandoguillen.info/es/blog/2007/07/17/cuando-el-modelado-de-una-relacion-entre-3-tablas-se-vuelve-un-ejercicio-de-arquitectura/#comment-12</link>
		<dc:creator>PEZ</dc:creator>
		<pubDate>Tue, 17 Jul 2007 16:08:03 +0000</pubDate>
		<guid>http://www.fernandoguillen.info/es/blog/2007/07/17/cuando-el-modelado-de-una-relacion-entre-3-tablas-se-vuelve-un-ejercicio-de-arquitectura/#comment-12</guid>
		<description>me bifurco... y todas las claves externas me arropan...
parecen tan dulces...que dejo por un momento de bucear entre los verdes y amarillos de los elementos y sub elementos áridos de tus tablas que no entiendo y sólo me atraviesan, veloces, todos los significados y hace tanto frío...que me agarro con fuerza a uno de los campos y soy toda piernas... bifurcada y más entera que nunca.. se puede?

esto es privado?</description>
		<content:encoded><![CDATA[<p>me bifurco&#8230; y todas las claves externas me arropan&#8230;<br />
parecen tan dulces&#8230;que dejo por un momento de bucear entre los verdes y amarillos de los elementos y sub elementos áridos de tus tablas que no entiendo y sólo me atraviesan, veloces, todos los significados y hace tanto frío&#8230;que me agarro con fuerza a uno de los campos y soy toda piernas&#8230; bifurcada y más entera que nunca.. se puede?</p>
<p>esto es privado?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: fguillen</title>
		<link>http://www.fernandoguillen.info/es/blog/2007/07/17/cuando-el-modelado-de-una-relacion-entre-3-tablas-se-vuelve-un-ejercicio-de-arquitectura/#comment-11</link>
		<dc:creator>fguillen</dc:creator>
		<pubDate>Tue, 17 Jul 2007 15:18:00 +0000</pubDate>
		<guid>http://www.fernandoguillen.info/es/blog/2007/07/17/cuando-el-modelado-de-una-relacion-entre-3-tablas-se-vuelve-un-ejercicio-de-arquitectura/#comment-11</guid>
		<description>Veo que el programita este del que me hablas es capaz de incluir programación en los botones. En esta programación permite hacer bifurcaciones lógicas.

No encuentro en la base de datos algo que me permita incluir bifurcaciones lógicas a la hora de definir una clave externa. Sería una solución estupenda.

Entonces resumo toda la duda expuesta en este post con el siguiente enunciado:

¿Es posible definir una clave externa a partir de dos campos?:

Uno define a que tabla apunta y el otro contiene el id del registro de la tabla externa.

(Coincidimos exactamente en tú última frase)</description>
		<content:encoded><![CDATA[<p>Veo que el programita este del que me hablas es capaz de incluir programación en los botones. En esta programación permite hacer bifurcaciones lógicas.</p>
<p>No encuentro en la base de datos algo que me permita incluir bifurcaciones lógicas a la hora de definir una clave externa. Sería una solución estupenda.</p>
<p>Entonces resumo toda la duda expuesta en este post con el siguiente enunciado:</p>
<p>¿Es posible definir una clave externa a partir de dos campos?:</p>
<p>Uno define a que tabla apunta y el otro contiene el id del registro de la tabla externa.</p>
<p>(Coincidimos exactamente en tú última frase)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PEZ</title>
		<link>http://www.fernandoguillen.info/es/blog/2007/07/17/cuando-el-modelado-de-una-relacion-entre-3-tablas-se-vuelve-un-ejercicio-de-arquitectura/#comment-10</link>
		<dc:creator>PEZ</dc:creator>
		<pubDate>Tue, 17 Jul 2007 14:40:34 +0000</pubDate>
		<guid>http://www.fernandoguillen.info/es/blog/2007/07/17/cuando-el-modelado-de-una-relacion-entre-3-tablas-se-vuelve-un-ejercicio-de-arquitectura/#comment-10</guid>
		<description>me pierdo a partir de: En un pequeño brainstorming, pero guiño el ojo y me concentro... nada.. que no me entero... pero me recuerda a un problema que tuve haciendo un dvd... a lo mejor no tiene nada que ver y resulta que me he perdido antes de lo que pensaba...pero si te ayuda... quién sabe!!

en dvd studio pro pasa algo parecido, si yo tengo una pista de vídeo gigante que llama el tipo de botón: "ver la película" esa pista de vídeo gigante no ofrece ningún problema porque se reproduce de principio a fin. Pero si lo que queremos es llamar a los capítulos de esa pista de vídeo (esto no es exactamente tu sub element pero se parece mucho) yo coloco unas cositas que se llaman marcadores de manera que cada botón cap 1 ó 2 ó 3.. llaman a ése marcador y no a otro...
El problema viene si en lugar de que continúe de corrido yo quiero que el comportamiento de esos botones varíe y al finalizar vuelva al menú de capítulos en lugar de remitir al capítulo siguiente... (esto en una peli tal vez no, pero en otras situaciones puede tener su lógica) resulta que en el boton llamado "ver la peli" va a pasar lo mismo y eso no le gusta a nadie...estás viendo la peli y al final de cada capítulo te lleva al menú de capítulos en lugar de verla de seguido!!!

si ya aquí ves que no tiene nada que ver con lo tuyo pues deja de leerme...
Sería una tontería cortar la peli en chorizos-capítulos que linkar a los botones de capítulos y dejar la otra pista entera e impoluta linkada a ver toda la peli porque la info estarÍa duplicada y eso no le gusta al que lo hace, ni al dvd que no le cabe, ni es bonito ni nada...

la solución es una cosa maravillosa que en ese programa se llama script y que supone un enunciado para cada uno de esos botones, de manera que no asocias botón a marcador si no a script...
yo no sé cómo se traduce eso, pero imagino algo del tipo: si pulso capítulo 3 llévame al script q dice vas al marcador 3 y vuelves al finalizar al menú capítulos.
oye, que te quiero...</description>
		<content:encoded><![CDATA[<p>me pierdo a partir de: En un pequeño brainstorming, pero guiño el ojo y me concentro&#8230; nada.. que no me entero&#8230; pero me recuerda a un problema que tuve haciendo un dvd&#8230; a lo mejor no tiene nada que ver y resulta que me he perdido antes de lo que pensaba&#8230;pero si te ayuda&#8230; quién sabe!!</p>
<p>en dvd studio pro pasa algo parecido, si yo tengo una pista de vídeo gigante que llama el tipo de botón: &#8220;ver la película&#8221; esa pista de vídeo gigante no ofrece ningún problema porque se reproduce de principio a fin. Pero si lo que queremos es llamar a los capítulos de esa pista de vídeo (esto no es exactamente tu sub element pero se parece mucho) yo coloco unas cositas que se llaman marcadores de manera que cada botón cap 1 ó 2 ó 3.. llaman a ése marcador y no a otro&#8230;<br />
El problema viene si en lugar de que continúe de corrido yo quiero que el comportamiento de esos botones varíe y al finalizar vuelva al menú de capítulos en lugar de remitir al capítulo siguiente&#8230; (esto en una peli tal vez no, pero en otras situaciones puede tener su lógica) resulta que en el boton llamado &#8220;ver la peli&#8221; va a pasar lo mismo y eso no le gusta a nadie&#8230;estás viendo la peli y al final de cada capítulo te lleva al menú de capítulos en lugar de verla de seguido!!!</p>
<p>si ya aquí ves que no tiene nada que ver con lo tuyo pues deja de leerme&#8230;<br />
Sería una tontería cortar la peli en chorizos-capítulos que linkar a los botones de capítulos y dejar la otra pista entera e impoluta linkada a ver toda la peli porque la info estarÍa duplicada y eso no le gusta al que lo hace, ni al dvd que no le cabe, ni es bonito ni nada&#8230;</p>
<p>la solución es una cosa maravillosa que en ese programa se llama script y que supone un enunciado para cada uno de esos botones, de manera que no asocias botón a marcador si no a script&#8230;<br />
yo no sé cómo se traduce eso, pero imagino algo del tipo: si pulso capítulo 3 llévame al script q dice vas al marcador 3 y vuelves al finalizar al menú capítulos.<br />
oye, que te quiero&#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>
