<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Un bout de DBA &#187; Data Modeling</title>
	<atom:link href="http://www.noidea.ca/tag/data-modeling/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.noidea.ca</link>
	<description>MySQL, En long et en large</description>
	<lastBuildDate>Tue, 09 Feb 2010 13:54:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Design de bases de données qui change souvent</title>
		<link>http://www.noidea.ca/2009/07/14/design-de-base-de-donnees-qui-change-souvent/</link>
		<comments>http://www.noidea.ca/2009/07/14/design-de-base-de-donnees-qui-change-souvent/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 14:53:19 +0000</pubDate>
		<dc:creator>PaT</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Modèle de données]]></category>
		<category><![CDATA[Data Modeling]]></category>
		<category><![CDATA[Normalisation]]></category>

		<guid isPermaLink="false">http://www.noidea.ca/?p=52</guid>
		<description><![CDATA[On m&#8217;a demandé un jour ce que je recommande pour des designs de databases appelées à être modifiées régulièrement. La personne prévoyait avoir besoin d&#8217;ajouter des champs fréquemment pour répondre à ses besoins.

La première interrogation qui m&#8217;est venu en tête a été de lui demander pourquoi. Pourquoi a t&#8217;il besoin d&#8217;ajouter des champs et des [...]]]></description>
			<content:encoded><![CDATA[<p>On m&#8217;a demandé un jour ce que je recommande pour des designs de databases appelées à être modifiées régulièrement. La personne prévoyait avoir besoin d&#8217;ajouter des champs fréquemment pour répondre à ses besoins.</p>
<p><img class="size-medium wp-image-250 alignright" title="Database Schema" src="http://www.noidea.ca/wp-content/uploads/2009/07/entity-relationship_diagram_trans-267x300.jpg" alt="Modèle relationnel" width="240" height="270" /></p>
<p>La première interrogation qui m&#8217;est venu en tête a été de lui demander pourquoi. Pourquoi a t&#8217;il besoin d&#8217;ajouter des champs et des tables de manière fréquente ? Pourquoi ne sait-il pas d&#8217;avance ce que fera son application ? La réponse est simple: la portion de l&#8217;application qui est déjà en ligne est complètement fonctionnelle, étudiée et testée. En fait, l&#8217;application est personnalisable et chaque client qui l&#8217;achète peut avoir des particularités différentes d&#8217;un autre client. D&#8217;où le besoin d&#8217;ajouter des champs et tables régulièrement.</p>
<p>Il n&#8217;y a pas de réponse magique à cette question. Il suffit d&#8217;y répondre avec &#8220;le gros bon sens&#8221;. D&#8217;un côté purement relationnel, la normalisation répond bien à ce besoin. Une base de données très normalisée offre une flexibilité exceptionnelle. Si la base de données contient déjà beaucoup d&#8217;information, un bon design normalisé peut éviter des scripts de migration qui peuvent être lourds à exécuter.</p>
<p>Le problème avec les bases de données “trop” normalisées est qu’elles sont parfois moins performantes. La flexibilité et la performance font rarement bon ménage. De plus, les requêtes deviennent plus complexes à écrire et maintenir. On s&#8217;éloigne également des designs orientés objet qui sont souvent adoptés dans les langages OO comme Java et PHP. C&#8217;est un compromis qu&#8217;il faut être prêt à faire.</p>
<p>Le défi survient lors de l&#8217;ajout d&#8217;un champ sur une table déjà existante. Il est facile de créer une dénormalisation qui répond bien à un besoin immédiat, mais crée une pénalité à long terme. C&#8217;est un problème auquel je suis régulièrement confronté. Une table qui possédait 10 champs originalement en possède 25 trois ans plus tard. Lorsqu&#8217;on se rend compte de l&#8217;inefficacité de ce schema, il est souvent complexe et très coûteux de refactoriser la table.</p>
<p>Schématiser la database sur papier (avec <a title="MySQL Workbench" href="http://dev.mysql.com/workbench/" target="_blank">Workbench</a> ou d&#8217;autres Database Designer) est un bon truc pour identifier des problèmes et les résoudre.</p>
<p>En résumé, n&#8217;ayez pas peur de normaliser vos tables, mais n&#8217;abusez pas ! Surtout, n&#8217;attendez pas qu&#8217;il soit trop tard. La quantité de code à modifier peut être une raison valable pour ne pas le faire. Évitez de vous retrouver dans cette situation. Faites-le dès que le besoin se présente!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noidea.ca/2009/07/14/design-de-base-de-donnees-qui-change-souvent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modèle de données</title>
		<link>http://www.noidea.ca/2008/04/12/modele-de-donnees/</link>
		<comments>http://www.noidea.ca/2008/04/12/modele-de-donnees/#comments</comments>
		<pubDate>Sun, 13 Apr 2008 02:37:21 +0000</pubDate>
		<dc:creator>PaT</dc:creator>
				<category><![CDATA[Autres]]></category>
		<category><![CDATA[Modèle de données]]></category>
		<category><![CDATA[Data Modeling]]></category>

		<guid isPermaLink="false">http://www.noidea.ca/?p=3</guid>
		<description><![CDATA[Robin Schumacher, directeur Product Management de MySQL, a écrit un article avec lequel je suis 100% d&#8217;accord.
&#8220;Why you want to be good at data modeling&#8221;
http://dev.mysql.com/tech-resources/articles/why-data-modeling.html
Il est vrai que trop souvent, les entreprises n&#8217;accordent pas suffisamment de temps et d&#8217;importance à leur modèle de données. Certains designs créés &#8220;on the fly&#8221; durant le développement d&#8217;une application [...]]]></description>
			<content:encoded><![CDATA[<p>Robin Schumacher, directeur Product Management de MySQL, a écrit un article avec lequel je suis 100% d&#8217;accord.</p>
<p><span lang="EN-CA">&#8220;Why you want to be good at data modeling&#8221;<br />
</span><a title="Data modeling" href="http://dev.mysql.com/tech-resources/articles/why-data-modeling.html" target="_blank"><span lang="EN-CA">http://dev.mysql.com/tech-resources/articles/why-data-modeling.html</span></a></p>
<p>Il est vrai que trop souvent, les entreprises n&#8217;accordent pas suffisamment de temps et d&#8217;importance à leur modèle de données. Certains designs créés &#8220;on the fly&#8221; durant le développement d&#8217;une application peuvent tenir la route un long moment. Cependant, si la DB prend de l&#8217;ampleur (en nombre de tables, d&#8217;utilisateurs et de requêtes), ces designs peuvent finir par offrir de piètre performance. Même les meilleures requêtes possibles deviennent inefficaces.</p>
<p>Un article qui confirme bien ce que je croyais.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noidea.ca/2008/04/12/modele-de-donnees/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
