<?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>Alassane Diakité &#187; Général BD</title>
	<atom:link href="https://blog.developpez.com/alassanediakite/pcategory/general/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/alassanediakite</link>
	<description></description>
	<lastBuildDate>Sun, 12 Oct 2014 18:02:04 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>[Bases de données] Association entre les lignes de deux tables</title>
		<link>https://blog.developpez.com/alassanediakite/p12083/general/association-entre-les-lignes-de-deux-tables</link>
		<comments>https://blog.developpez.com/alassanediakite/p12083/general/association-entre-les-lignes-de-deux-tables#comments</comments>
		<pubDate>Mon, 24 Jun 2013 14:02:05 +0000</pubDate>
		<dc:creator><![CDATA[alassanediakite]]></dc:creator>
				<category><![CDATA[Général BD]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/alassanediakite/?p=66</guid>
		<description><![CDATA[Terminologie Association, relation, dépendance, liaison, jointure, clé étrangère, clé secondaire sont des noms utilisés pour designer le fait que les lignes d’une table T1 sont associées aux lignes d’une autre tables T2. Exemple : Pour une clinique, on a une table contenant les patients et une autre contenant les visites des patients. Chaque visite est liée à un et un seul patient. Un patient peut faire plusieurs visites. Pour un commerce, il existe une table [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><span style="background-color:#4F81BD;font-size:15.0pt;width:100%">Terminologie</span></p>
<p>Association, relation, dépendance,  liaison, jointure, clé étrangère, clé secondaire sont des noms utilisés pour designer le fait que les lignes d’une table T1 sont associées aux lignes d’une autre tables T2.<br />
Exemple : </p>
<ul>
<li>Pour une clinique, on a une table contenant les patients et une autre contenant les visites des patients. Chaque visite est liée à un et un seul patient. Un patient peut faire plusieurs visites.</li>
<li>Pour un commerce, il existe une table « <strong>facture </strong>» et une autre « <strong>règlement </strong>». Une facture peut avoir plusieurs règlements ou ne pas en avoir du tout. Un règlement est lié à une et une seule facture.</li>
</ul>
<p>Mais les termes ci-dessus sont-ils  pertinents ?</p>
<ul>
<li>« Relation » n’est  pas bon car source de confusion. En effet, avec le modèle relationnel, une table de la base prend le nom de relation.</li>
<li>« Dépendance » n’est pas bon car ce terme est utilisé par rapport aux propriétés (attributs, champs, colonne) définissant une entité. Il s’agit de la dépendance fonctionnelle.</li>
<li>« Jointure » est plutôt un terme SQL. (Nous y reviendrons)</li>
<li>« Liaison » n’est ni suffisant ni techniquement correcte.</li>
<li>« Clé étrangère » est une mise en œuvre du concept.</li>
<li>« Clé secondaire » n’a rien à voir dans ce contexte. C’est une grosse confusion que beaucoup de débutants trainent avec eux. J’ai été une victime pendant longtemps.</li>
<li>« Association » est le meilleur et est le plus utilisé. Ce qui amène d’ailleurs à corriger le terme « Entité-relation » en « Entité-association ».</li>
</ul>
<p><span style="background-color:#4F81BD;font-size:15.0pt">Mise en œuvre</span></p>
<p>L’un des point fort du modèle relationnel est la résolution du problème d’association plusieurs à plusieurs. Le modèle hiérarchique ne le permet pas et le modèle réseau apporte une solution qui engendre des redondances.<br />
Le modèle relationnel représente  l’association par de simples attributs. On dit que le modèle relationnel est un modèle à valeurs (pas d’objet, pas de pointeur) ?<br />
<a href="http://blog.developpez.com/alassanediakite/files/2013/06/association1.png"><img src="http://blog.developpez.com/alassanediakite/files/2013/06/association1.png" alt="association1" class="alignnone size-large wp-image-76" /></a></p>
<p><span style="background-color:#4F81BD;font-size:15.0pt">Les jointures dans les requêtes</span></p>
<p>Pour avoir les factures avec leurs règlements on fait une jointure entre les tables « facture » et « règlement ».<br />
I.	Les factures et leurs règlements (on n’aura pas les factures qui n’ont pas de règlements)</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">… facture INNER JOIN règlement<br />
ON facture.IDfacture=règlement.IDfacture</div></td></tr></tbody></table></div>
<p>II.	Toutes les factures et leurs règlements (pour les  factures sans règlements, les colonnes de règlements seront vides)</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">… facture LEFT OUTER JOIN règlement<br />
ON facture.IDfacture=règlement.IDfacture</div></td></tr></tbody></table></div>
<p>III.	Tous les règlements et les factures correspondantes (pour les règlements qui ne sont liés à aucune facture, les colonnes de factures seront vides)</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">… facture RIGHT OUTER JOIN règlement<br />
ON facture.IDfacture=règlement.IDfacture</div></td></tr></tbody></table></div>
<p>Pour ce troisième cas. Il n’est pas normal d’avoir des règlements qui ne sont liés à aucune facture. Pour éviter une telle situation il faut faire recours à l’intégrité référentielle (chaque règlement fait référence obligatoirement à une facture).  Ainsi, lors de la création de la table règlement et dans la définition de la clé étrangère, il faut demander au SGBD:</p>
<ol>
<li>Soit d’empêcher la suppression de toute facture qui à un règlement</li>
<li>Ou de supprimer les règlements lors de la suppression des factures correspondantes.</li>
</ol>
<p><span style="background-color:#4F81BD;font-size:15.0pt">Auto-jointure</span></p>
<p>Imaginer une communauté qui veut une base de données de sa population, dont l’une des fonctionnalités est le suivi des liens de parentés.<br />
On peut aisément imaginer une table personne de cette manière…<br />
<a href="http://blog.developpez.com/alassanediakite/files/2013/06/association2.png"><img src="http://blog.developpez.com/alassanediakite/files/2013/06/association2.png" alt="association2" class="alignnone size-large wp-image-77" /></a><br />
<em>pk-&gt;Primary key,  fk-&gt;foreign key</em><br />
Dans la même table on trouve une personne et tous descendants et ancêtres.<br />
Pour avoir les parents de&#8230;</p>
<table cellspacing="2px" cellpadding="2px;" rules="all" style="border:solid 1px black">
<tr>
<td>IDpersonne</td>
<td>IDpere</td>
<td>IDmere</td>
<td>prenom</td>
<td>nom</td>
<td>datenais</td>
<td>	sexe</td>
</tr>
<tr>
<td>47</td>
<td>23</td>
<td>26</td>
<td>Amadou</td>
<td>Kanté</td>
<td>12/03/1974</td>
<td>M</td>
</tr>
</table>
<p>, il me faut chercher (dans la même table) la personne d’identifiant 23 (pour avoir le père) et la personne d’identifiant 26 (pour avoir la mère).<br />
Dans la requête nous utiliserons des alias (ou copie) de la table de cette manière…</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">… personne AS enfant<br />
INNER JOIN personne AS pere ON enfant.IDpere=pere.IDpersonne<br />
INNER JOIN personne AS mere ON enfant.IDmere=mere.IDpersonne</div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Bases de données] présentation de SQL</title>
		<link>https://blog.developpez.com/alassanediakite/p11772/general/bases-de-donnees-presentation-de-sql</link>
		<comments>https://blog.developpez.com/alassanediakite/p11772/general/bases-de-donnees-presentation-de-sql#comments</comments>
		<pubDate>Fri, 08 Feb 2013 20:01:42 +0000</pubDate>
		<dc:creator><![CDATA[alassanediakite]]></dc:creator>
				<category><![CDATA[Général BD]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/alassanediakite/?p=8</guid>
		<description><![CDATA[Ceci est un avant goût pour ceux qui découvrent les bases de données. Il suppose que vous connaissez le concept de langage informatique et son objectif est de vous permettre seulement de noter les différents points à développer; de ce fait aucun lien ne vous sera donné. Les SGBD (Système de Gestion de Bases de Données) Oracle, SQL Server, PostgreSQL, MySQL, ACCESS&#8230; sont pilotés uniquement par le langage SQL (Structured Query Language). Présentons d&#8217;abord le [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Ceci est un avant goût pour ceux qui découvrent les bases de données. Il suppose que vous connaissez le concept de langage informatique et son objectif est de vous permettre seulement de noter les différents points à développer; de ce fait aucun lien ne vous sera donné.<br />
Les SGBD (Système de Gestion de Bases de Données) Oracle, SQL Server, PostgreSQL, MySQL, ACCESS&#8230; sont pilotés uniquement par le langage SQL (Structured Query Language).</p>
<p>Présentons d&rsquo;abord le contenu d&rsquo;une base de données.<br />
Une base de données contient des</p>
<ol>
<li>tables qui contiennent les données</li>
<li>index qui contiennent des copies de certaines données avec leurs adresses logiques. Ils sont utilisés pour accélérer l’accès aux données.</li>
<li>contraintes pour garantir l’intégrité et la cohérence des données (valeur, forme, interdépendance)</li>
<li>vues qui sont des requêtes de sélections enregistrées</li>
<li>fonctions et procédures qui sont des commandes en SQL procédurale, pour effectuer des taches répétitives et lourdes directement sur le serveur</li>
<li>déclencheurs qui définissent des actions à exécuter lors des opérations (ajout, suppression ou modification) sur les données de table ou vue</li>
<li>utilisateurs et groupes avec leurs droits d’accès.</li>
</ol>
<p><img src="http://blog.developpez.com/alassanediakite/files/2013/03/structureBD.png" alt="structureBD" width="680" height="257" class="alignnone size-medium wp-image-9" /></p>
<p>Pour chaque accès externe à chacun de ces éléments le SGBD reçoit une commande SQL qu&rsquo;il exécute à travers des modules en langage évolué (généralement en C++): <font color="red"><em>SQL est donc passé en paramètre à un autre langage qui accède physiquement à la base de données.</em></font></p>
<p>Présentons SQL.<br />
<img src="http://blog.developpez.com/alassanediakite/files/2013/02/structure-SQL.png" alt="structure SQL" width="670" height="850" class="alignnone size-medium wp-image-10" /></p>
<p>Une base de données standard contient : la structure de ses données, les données elles même et les utilisateurs avec leurs droits d’accès.<br />
SQL propose alors pour ces trois parties essentielles, trois groupes de commandes :</p>
<ol>
<li>LDD : langage de définition de données qui définit les structures (nom et type) des données est des contraintes de vérification des valeurs des données.</li>
<li>LMD : langage de manipulation de données. Ajout, modification, suppression et recherche de données.</li>
<li>LCD : langage de contrôle de données. Définition des utilisateurs et leurs droits (privilèges) d’accès aux données ou structures.</li>
</ol>
<p>A ces trois groupes, s&rsquo;ajoute un quatrième assurant un rôle très important des SGBD: <strong>assurer la cohérence des données suite à une transaction (un ou plusieurs opérations regroupées en une entité) réussit ou échoué</strong>.</p>
<p>SQL de par sa nature, est un langage ensembliste c&rsquo;est-à-dire qu’il travaille sur un ensemble de données à la fois (donnée tabulaire). De ce fait il manque des éléments de boucle, condition, traitement d’erreurs…<br />
Pour pallier à cette lacune, les Systèmes de types clients/serveur* se sont enrichit pour faire du procédural on parle alors de <strong>SQL procédural</strong>. Pour les systèmes de type fichier* on a recours aux langages du programme utilisé tel VBA pour ACCESS.</p>
<p><HR align="left" width="200"><br />
SGBD clients/serveur (un seul SGBD installé auquel des programmes accèdent via le réseau)<br />
SGBD fichier (chaque programme est couplé à un SGBD local et l&rsquo;ensemble accèdent à la base de données sur un partage réseau)</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Une explication du fenêtrage dans SQL</title>
		<link>https://blog.developpez.com/alassanediakite/p11088/general/une_explication_du_fenetrage_dans_sql</link>
		<comments>https://blog.developpez.com/alassanediakite/p11088/general/une_explication_du_fenetrage_dans_sql#comments</comments>
		<pubDate>Tue, 12 Jun 2012 20:37:12 +0000</pubDate>
		<dc:creator><![CDATA[alassanediakite]]></dc:creator>
				<category><![CDATA[Général BD]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Après quelques lectures et vue l&#8217;importance de la chose,je vous présente une manière d’expliquer le calcul sur des fenêtres de données avec SQL. Le schéma&#8230; La fenêtre est taillée sur la requête elle-même ou une autre fenêtre! Une fenêtre est définie par : • Un début • Une fin • Des exclusions La colonne «a» de la requête est obtenue sur les données de la fenêtre par une fonction d’agrégat ou d’ordonnancement. Ceci n&#8217;étant qu&#8217;une [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Après quelques lectures et vue l&rsquo;importance de la chose,je vous présente une manière d’expliquer le calcul sur des fenêtres de données avec SQL.<br />
Le schéma&#8230;<br />
<img src="http://blog.developpez.com/media/fenetrage.png" width="502" height="386" alt="le schema du fenêtrage" /></p>
<blockquote><p>La fenêtre est taillée sur la requête elle-même ou une autre fenêtre!<br />
Une fenêtre est définie par :<br />
• Un début<br />
• Une fin<br />
• Des exclusions<br />
La colonne «a» de la requête est obtenue sur les données de la fenêtre par une fonction d’agrégat ou d’ordonnancement.</p></blockquote>
<p>Ceci n&rsquo;étant qu&rsquo;une présentation caricaturale veuillez lire le <a href="http://sqlpro.developpez.com/article/olap-clause-window/">tuto de SQLpro</a> dont les dessins de fenêtres me sembles plus difficiles à comprendre.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
