<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Commentaires sur : Une clé étrangère présente deux fois dans une table</title>
	<atom:link href="http://www.formation-cakephp.com/9/une-cle-etrangere-presente-deux-fois-dans-une-table/feed" rel="self" type="application/rss+xml" />
	<link>http://www.formation-cakephp.com/9/une-cle-etrangere-presente-deux-fois-dans-une-table</link>
	<description>Le cadre de développement PHP et son utilisation au jour le jour.</description>
	<pubDate>Wed, 23 Jul 2008 23:40:07 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>Par : avairet</title>
		<link>http://www.formation-cakephp.com/9/une-cle-etrangere-presente-deux-fois-dans-une-table#comment-40</link>
		<dc:creator>avairet</dc:creator>
		<pubDate>Thu, 14 Feb 2008 17:04:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.formation-cakephp.com/9/une-cle-etrangere-presente-deux-fois-dans-une-table#comment-40</guid>
		<description>Je me sens moi seul d'un coup ;o))

Il faudrait en parler à la communauté, mais mon niveau d'anglais écrit est vraiment faible pour être sûr de tout transcrire correctement, notamment les arguments pointus de mes gourous SQL...

J'ai un léger doute quant à une amélioration sur ce point, voici une affirmation de Nate en réponse à un ticket : "Cake does not support compound primary keys in any form, fashion, or capacity."

&lt;a href="http://groups.google.com/group/cake-php/browse_thread/thread/4a3f44f8217435cc/39065d9e99a1c5c1?lnk=gst&#38;q=multiple+primary+key#39065d9e99a1c5c1" rel="nofollow"&gt;Ou cette discussion animée du Google group&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>Je me sens moi seul d&#8217;un coup ;o))</p>
<p>Il faudrait en parler à la communauté, mais mon niveau d&#8217;anglais écrit est vraiment faible pour être sûr de tout transcrire correctement, notamment les arguments pointus de mes gourous SQL&#8230;</p>
<p>J&#8217;ai un léger doute quant à une amélioration sur ce point, voici une affirmation de Nate en réponse à un ticket : &#8220;Cake does not support compound primary keys in any form, fashion, or capacity.&#8221;</p>
<p><a href="http://groups.google.com/group/cake-php/browse_thread/thread/4a3f44f8217435cc/39065d9e99a1c5c1?lnk=gst&amp;q=multiple+primary+key#39065d9e99a1c5c1" rel="nofollow">Ou cette discussion animée du Google group</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Pierre-Emmanuel Fringant</title>
		<link>http://www.formation-cakephp.com/9/une-cle-etrangere-presente-deux-fois-dans-une-table#comment-39</link>
		<dc:creator>Pierre-Emmanuel Fringant</dc:creator>
		<pubDate>Thu, 14 Feb 2008 16:04:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.formation-cakephp.com/9/une-cle-etrangere-presente-deux-fois-dans-une-table#comment-39</guid>
		<description>"On déclare juste la PK sur id auto-increment et on pose deux index simple sur les autres champs ?"
- C'est la solution que j'ai adoptée, ça n'est pas très satisfaisant, mais cela permet de continuer à utiliser certains automatismes de Cake.
"Et si je migre mon appli sur un autre SGBD ou sous un autre langage de script, je suis bon pour refaire toutes mes tables ?!"
- Et oui ! D'où une sérieuse attente d'amélioration sur ce point.</description>
		<content:encoded><![CDATA[<p>&#8220;On déclare juste la PK sur id auto-increment et on pose deux index simple sur les autres champs ?&#8221;<br />
- C&#8217;est la solution que j&#8217;ai adoptée, ça n&#8217;est pas très satisfaisant, mais cela permet de continuer à utiliser certains automatismes de Cake.<br />
&#8220;Et si je migre mon appli sur un autre SGBD ou sous un autre langage de script, je suis bon pour refaire toutes mes tables ?!&#8221;<br />
- Et oui ! D&#8217;où une sérieuse attente d&#8217;amélioration sur ce point.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : avairet</title>
		<link>http://www.formation-cakephp.com/9/une-cle-etrangere-presente-deux-fois-dans-une-table#comment-37</link>
		<dc:creator>avairet</dc:creator>
		<pubDate>Thu, 14 Feb 2008 15:05:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.formation-cakephp.com/9/une-cle-etrangere-presente-deux-fois-dans-une-table#comment-37</guid>
		<description>Ouf, cela me rassure que tu penses comme moi ! Car en lisant le Google Group sur ce thème, j'avais l'impression de passer pour un ch... qui casse les pieds avec sa théorie et sa modélisation !

Donc d'après toi, pour toute table qui n'est pas "cake compliant", nous devons rajouter un champ id auto-increment ?
Mais alors, au niveau de la création de la table (par exemple avec DbDesigner), comment on fait ? On déclare juste la PK sur id auto-increment et on pose deux index simple sur les autres champs ? Et si je migre mon appli sur un autre SGBD ou sous un autre langage de script, je sui bon pour refaire toutes mes tables ?!</description>
		<content:encoded><![CDATA[<p>Ouf, cela me rassure que tu penses comme moi ! Car en lisant le Google Group sur ce thème, j&#8217;avais l&#8217;impression de passer pour un ch&#8230; qui casse les pieds avec sa théorie et sa modélisation !</p>
<p>Donc d&#8217;après toi, pour toute table qui n&#8217;est pas &#8220;cake compliant&#8221;, nous devons rajouter un champ id auto-increment ?<br />
Mais alors, au niveau de la création de la table (par exemple avec DbDesigner), comment on fait ? On déclare juste la PK sur id auto-increment et on pose deux index simple sur les autres champs ? Et si je migre mon appli sur un autre SGBD ou sous un autre langage de script, je sui bon pour refaire toutes mes tables ?!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Pierre-Emmanuel Fringant</title>
		<link>http://www.formation-cakephp.com/9/une-cle-etrangere-presente-deux-fois-dans-une-table#comment-36</link>
		<dc:creator>Pierre-Emmanuel Fringant</dc:creator>
		<pubDate>Thu, 14 Feb 2008 14:42:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.formation-cakephp.com/9/une-cle-etrangere-presente-deux-fois-dans-une-table#comment-36</guid>
		<description>Je suis tout à fait d'accord avec toi, j'ai eu le problème avec une relation HABTM (gestion de frais de port par article et par pays) et il est impossible de faire proprement (conceptuellement parlant) sans faire les choses à la main. J'espère que cela sera amélioré dans les prochaines versions.</description>
		<content:encoded><![CDATA[<p>Je suis tout à fait d&#8217;accord avec toi, j&#8217;ai eu le problème avec une relation HABTM (gestion de frais de port par article et par pays) et il est impossible de faire proprement (conceptuellement parlant) sans faire les choses à la main. J&#8217;espère que cela sera amélioré dans les prochaines versions.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : avairet</title>
		<link>http://www.formation-cakephp.com/9/une-cle-etrangere-presente-deux-fois-dans-une-table#comment-35</link>
		<dc:creator>avairet</dc:creator>
		<pubDate>Thu, 14 Feb 2008 13:57:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.formation-cakephp.com/9/une-cle-etrangere-presente-deux-fois-dans-une-table#comment-35</guid>
		<description>Ce que je voulais dire, c'est que théoriquement parlant, la table "rencontres" que tu décris est en fait une "relation réflexive" de la table "équipes", c'est à dire qu'elle se fait une HABTM sur elle même.

Donc en modélisation relationnelle, la table "rencontres" ne devrait pas contenir de champ id auto-increment, mais simplement deux fois la clé primaire de la table "équipes". Et par ailleurs, la clé primaire de la table "rencontres" devrait se faire sur les deux colonnes à la fois, car nous sommes dans un cas "plusieurs à plusieurs".

Or, Cake saute allègrement à pieds joints sur le concept de relation réflexive et sur les clés primaires multiples ou composées.

Je me bats avec cela depuis quelques jours, car l'ajout "artificiel" d'un champ id dans ce type de relation entraîne une baisse de perforamnce qui peut vite être conséquente, en plus d'être discutable SQLellement parlant.

Je nuance toutefois, car dans ton cas, on pourrait très bien numéroter les rencontres et là, la colonne id aurait une justification possible. Cependant, dans ce cas, la table rencontres contiendrai d'autres champs, comme "résultat", "cartons jaune", "nombre de buts", etc. et ne serait pas une simple table de liaison...

Voilà un lien vers une discussion que j'ai eu avec des gourous SQL, qui conforte mon idée que Cake pêche un peu à ce niveau :
http://www.developpez.net/forums/showthread.php?t=486821

et ensuite :
http://www.developpez.net/forums/showthread.php?t=490905</description>
		<content:encoded><![CDATA[<p>Ce que je voulais dire, c&#8217;est que théoriquement parlant, la table &#8220;rencontres&#8221; que tu décris est en fait une &#8220;relation réflexive&#8221; de la table &#8220;équipes&#8221;, c&#8217;est à dire qu&#8217;elle se fait une HABTM sur elle même.</p>
<p>Donc en modélisation relationnelle, la table &#8220;rencontres&#8221; ne devrait pas contenir de champ id auto-increment, mais simplement deux fois la clé primaire de la table &#8220;équipes&#8221;. Et par ailleurs, la clé primaire de la table &#8220;rencontres&#8221; devrait se faire sur les deux colonnes à la fois, car nous sommes dans un cas &#8220;plusieurs à plusieurs&#8221;.</p>
<p>Or, Cake saute allègrement à pieds joints sur le concept de relation réflexive et sur les clés primaires multiples ou composées.</p>
<p>Je me bats avec cela depuis quelques jours, car l&#8217;ajout &#8220;artificiel&#8221; d&#8217;un champ id dans ce type de relation entraîne une baisse de perforamnce qui peut vite être conséquente, en plus d&#8217;être discutable SQLellement parlant.</p>
<p>Je nuance toutefois, car dans ton cas, on pourrait très bien numéroter les rencontres et là, la colonne id aurait une justification possible. Cependant, dans ce cas, la table rencontres contiendrai d&#8217;autres champs, comme &#8220;résultat&#8221;, &#8220;cartons jaune&#8221;, &#8220;nombre de buts&#8221;, etc. et ne serait pas une simple table de liaison&#8230;</p>
<p>Voilà un lien vers une discussion que j&#8217;ai eu avec des gourous SQL, qui conforte mon idée que Cake pêche un peu à ce niveau :<br />
<a href="http://www.developpez.net/forums/showthread.php?t=486821" rel="nofollow">http://www.developpez.net/forums/showthread.php?t=486821</a></p>
<p>et ensuite :<br />
<a href="http://www.developpez.net/forums/showthread.php?t=490905" rel="nofollow">http://www.developpez.net/forums/showthread.php?t=490905</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Avairet</title>
		<link>http://www.formation-cakephp.com/9/une-cle-etrangere-presente-deux-fois-dans-une-table#comment-31</link>
		<dc:creator>Avairet</dc:creator>
		<pubDate>Wed, 13 Feb 2008 17:00:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.formation-cakephp.com/9/une-cle-etrangere-presente-deux-fois-dans-une-table#comment-31</guid>
		<description>Oui tu as bien cerné, mais je dois encore analyser ta réponse pour être sûr de mon fait, mais là je pars du bureau, donc ce sera pour demain !</description>
		<content:encoded><![CDATA[<p>Oui tu as bien cerné, mais je dois encore analyser ta réponse pour être sûr de mon fait, mais là je pars du bureau, donc ce sera pour demain !</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Pierre-Emmanuel Fringant</title>
		<link>http://www.formation-cakephp.com/9/une-cle-etrangere-presente-deux-fois-dans-une-table#comment-28</link>
		<dc:creator>Pierre-Emmanuel Fringant</dc:creator>
		<pubDate>Wed, 13 Feb 2008 13:39:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.formation-cakephp.com/9/une-cle-etrangere-presente-deux-fois-dans-une-table#comment-28</guid>
		<description>Le modèle que je propose ne pose aucun problème en cas de multiples rencontres entre les mêmes équipes. Cela coincerait si la clé primaire de la table &lt;code&gt;rencontres&lt;/code&gt; était composée des deux clés étrangères &lt;code&gt;equipe_locaux_id&lt;/code&gt; et &lt;code&gt;equipe_visiteurs_id&lt;/code&gt;, or la table &lt;code&gt;rencontres&lt;/code&gt; a bien sa propre clé primaire &lt;code&gt;id&lt;/code&gt;, et il n'y a aucune contrainte d'unicité sur le couple de clés étrangères.
Ai-je bien cerné ta question ?</description>
		<content:encoded><![CDATA[<p>Le modèle que je propose ne pose aucun problème en cas de multiples rencontres entre les mêmes équipes. Cela coincerait si la clé primaire de la table <code>rencontres</code> était composée des deux clés étrangères <code>equipe_locaux_id</code> et <code>equipe_visiteurs_id</code>, or la table <code>rencontres</code> a bien sa propre clé primaire <code>id</code>, et il n&#8217;y a aucune contrainte d&#8217;unicité sur le couple de clés étrangères.<br />
Ai-je bien cerné ta question ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Avairet</title>
		<link>http://www.formation-cakephp.com/9/une-cle-etrangere-presente-deux-fois-dans-une-table#comment-27</link>
		<dc:creator>Avairet</dc:creator>
		<pubDate>Wed, 13 Feb 2008 10:57:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.formation-cakephp.com/9/une-cle-etrangere-presente-deux-fois-dans-une-table#comment-27</guid>
		<description>Salut,

Dirais-tu que ton exemple permet de modéliser sous Cake une "association réflexive" ?

Parce qu'en cas de multiples rencontres entre les mêmes équipes (relation n:m), l'association "hasMany / bleongsTo" ne tiendrait plus... or Cake semble ne pas pouvoir modéliser correctement ce genre de relation (SQLellement parlant bien entendu).

Je suis à la recherche de solutions sur le sujet, car je dois utiliser des schémas de BDD tout fait, dont je ne peux modifier les associations et les clés/index...</description>
		<content:encoded><![CDATA[<p>Salut,</p>
<p>Dirais-tu que ton exemple permet de modéliser sous Cake une &#8220;association réflexive&#8221; ?</p>
<p>Parce qu&#8217;en cas de multiples rencontres entre les mêmes équipes (relation n:m), l&#8217;association &#8220;hasMany / bleongsTo&#8221; ne tiendrait plus&#8230; or Cake semble ne pas pouvoir modéliser correctement ce genre de relation (SQLellement parlant bien entendu).</p>
<p>Je suis à la recherche de solutions sur le sujet, car je dois utiliser des schémas de BDD tout fait, dont je ne peux modifier les associations et les clés/index&#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>
