<?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>Blog SQL d&#039;un développeur Microsoft. &#187; Modélisation</title>
	<atom:link href="https://blog.developpez.com/ylarvor/pcategory/modelisation/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/ylarvor</link>
	<description>SQL or No-SQL !</description>
	<lastBuildDate>Sat, 04 Jun 2016 19:39:50 +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>Les types système: Evolution de SQL SERVER 7.0 à SQL SERVER 2005</title>
		<link>https://blog.developpez.com/ylarvor/p10756/modelisation/type-systeme/sgbd_sql_server_les_types_evolution_de_s_2005</link>
		<comments>https://blog.developpez.com/ylarvor/p10756/modelisation/type-systeme/sgbd_sql_server_les_types_evolution_de_s_2005#comments</comments>
		<pubDate>Mon, 07 May 2007 13:09:04 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Type système]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[SQL Server 7.0 définit : Les Numériques Exactes Les types d&#8217;entiers INTEGER 4 octets SMALLINT 2 octets TYNYINT 1 octet 0 à 255. Les numériques exactes DECIMAL (P, S) numérique de précision P, avec S chiffres derrière la virgule DEC (P,S) et NUMERIQUE(P,S) Les Numériques Approximatifs FLOAT(n) Flottants REAL Synonyme de FLOAT 4 octets Les [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>SQL Server 7.0 définit :</strong>     <br /><strong>Les Numériques Exactes</strong>     <br /><u>Les types d&rsquo;entiers</u>     <br />INTEGER 4 octets     <br />SMALLINT 2 octets     <br />TYNYINT 1 octet 0 à 255.     <br /><u>Les numériques exactes</u>     <br />DECIMAL (P, S) numérique de précision P, avec S chiffres derrière la virgule     <br />DEC (P,S) et NUMERIQUE(P,S)     <br /><strong>Les Numériques Approximatifs</strong>     <br />FLOAT(n) Flottants     <br />REAL Synonyme de FLOAT 4 octets     <br /><strong>Les Monétaires      <br /></strong>MONEY et SMALLMONEY     <br /><strong>date et temps      <br /></strong>DATETIME Date et heure 8 octets     <br />SMALLDATETIME     <br /><strong>Les caractères</strong>     <br />char(n) &#8211; ANSI &#8211; 8000 caractères.     <br />varchar(n) &#8211; ANSI &#8211; 8000 caractères.     <br />nchar(n) &#8211; Unicode &#8211; 4000 caractères.     <br />nvarchar(n) &#8211; Unicode &#8211; 4000 caractères.     <br />text &#8211; ANSI &#8211; 1,073,741,824 caractères.     <br />ntext &#8211; Unicode &#8211; 536,870,912 caractères.     <br /><strong>Les Binaires :</strong>     <br />Binary[n] 1 à 8000 octets et VarBinary[n]     <br />Image : 0 à 2 Giga     <br /><strong>spéciaux :</strong>     <br />bit, cursor, sysname,timestamp     </p>
<p><strong>SQL Serveur 2005 définit 7 catégories de types:</strong>     </p>
<p><strong>- Numérique exact</strong>     <br /><strong>big int</strong>, int, smallint, tinyint,     <br />decimal(p,s), numeric(p,s)     </p>
<p>Les types Numérique Exact permettent de spécifier la précision souhaitée pour un attribut numérique, et donc de représenter une valeur exacte. BigInt est nouveau depuis 2000     </p>
<p><strong>- Numérique approximatif</strong>     <br />float, real.     </p>
<p>Les numériques flottants correspondent aux types couramment utilisés en programmation (FLOAT, DOUBLE) et ne représentent une valeur qu?avec une précision limitée.     <br />Par exemple, si vous stocker 1,00015454 dans un float(8), seul les 8 digits sont garantis : 1,000154. Le reste est arrondi.     <br />On utilise ces valeurs arrondis plutôt dans des applicatifs scientifiques que financier.     <br /><strong>- Monnaie</strong>     <br />money,smallmoney     <br />4 digit de précision : exemple : smallmoney 214,748.3647     </p>
<p><strong>- Date et Time</strong>     <br />datetime, smalldatetime     </p>
<p><strong>- Caractères</strong>     <br />char(n),nchar(n),varchar(n),<strong>varchar(max)</strong>,nvarchar(n),<strong>nvarchar(max)</strong>,text,ntext     </p>
<p>char(n) &#8211; ANSI &#8211; 8000 caractères.     <br />varchar(n) &#8211; ANSI &#8211; 8000 caractères.     <br />varchar(max) &#8211; ANSI &#8211; 1,0773,741,824 caractères.     <br />text &#8211; ANSI &#8211; 1,073,741,824 caractères.     </p>
<p>nchar(n) &#8211; Unicode &#8211; 4000 caractères.     <br />nvarchar(n) &#8211; Unicode &#8211; 4000 caractères.     <br />nvarchar(max) &#8211; Unicode &#8211; 536,870,912 caractères.     <br />ntext &#8211; Unicode &#8211; 536,870,912 caractères.     </p>
<p>la différence entre char et varchar provient du stockage de la totalité des caractères pour le char contre le stockage des seuls caractères utilise pour le varchar.     </p>
<p><strong>- binary</strong>     <br />binary(n),varbinary(n),<strong>varbinary(max)</strong>,image     </p>
<p>Le type Binary stocke des flux binaires, des images, des fichiers.     </p>
<p><strong>- caractères spéciaux ( xml, guid )</strong>     <br />bit,timestamp,uniqueidentifier,<strong>sql_variant</strong>,cursor,<strong>table</strong>,<strong>xml</strong>     </p>
<p>Bit : stocke 0,1 ou Null.     </p>
<p>Timestamp : Une table ne peut posséder qu&rsquo;une seule colonne Timestamp qui est mis à jour sur la date/heure de la base à chaque insertion ou mise à jour.     </p>
<p>UniqueIdentifier: Un identifiant 16 bits qui identifie la ligne dans la base de données, l&rsquo;instance ou le serveur.     </p>
<p>SQL_variant : Nouveau depuis 2000,le type indéfini de cette colonne de 8000 caractères permet de stocker n&rsquo;importe quoi.     </p>
<p>Cursor: Utilisé par les applications qui déclarent des cursors. Ne peut être utilisé dans une table.     </p>
<p>Table : Nouveau type depuis 2000, Utilisé dans une variable de procédure stockée, trigger ou function.     </p>
<p>XML : Nouveau depuis 2005, il stocke un document xml de 2 gigaoctets.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Redécouvrir SQL Serveur 2005 &#8211; Nouveaux Types de Données : Varchar(max),nvarchar(max) et varbinary(max)</title>
		<link>https://blog.developpez.com/ylarvor/p5098/modelisation/type-systeme/redecouvrir_sql_serveur_2005_nouveaux_ty</link>
		<comments>https://blog.developpez.com/ylarvor/p5098/modelisation/type-systeme/redecouvrir_sql_serveur_2005_nouveaux_ty#comments</comments>
		<pubDate>Fri, 01 Feb 2008 16:52:36 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Type système]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Sous SQL Serveur 7 et SQL Serveur 2000, une ligne de table ne peut excéder 8000 bytes. VARBINARY ne peut exceder 8000 bytes à condition que la ligne ne contient qu&#8217;une colonne VARBINARY. Une colonne VARCHAR ne peut excéder 8000 caractères. Une colonne NVARCHAR ( 2 bytes par caractère ) ne peut excéder 4000 caractères. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Sous SQL Serveur 7 et SQL Serveur 2000, une ligne de table ne peut excéder 8000<br />
bytes.<br />
VARBINARY ne peut exceder 8000 bytes à condition que la ligne ne contient qu&rsquo;une<br />
colonne VARBINARY.<br />
Une colonne VARCHAR ne peut excéder 8000 caractères.<br />
Une colonne NVARCHAR ( 2 bytes par caractère ) ne peut excéder 4000 caractères.<br />
      varchar(n)ANSI &#8211; 8000 caracteres.<br />
      nvarchar(n)Unicode &#8211; 4000 caracteres.</p>
<p>Pour stocker plus de données dans une seule ligne de table, vous devez utiliser<br />
les BLOB text,ntext et image. Ces données sont stockées dans une collection de<br />
pages séparées de la page principale qui stocke les données. Ces données BLOB<br />
sont stockées dans une B TREE Structure. Ces données BLOB ne sont pas du tout<br />
aisée à manipuler, d&rsquo;abord, on ne peut pas stocker un BLOB dans une variable de<br />
procédure ou de fonction et il est impossible d&rsquo;utiliser des fonctions de<br />
chaines de caractères comme REPLACE, CHARINDEX or SUBSTRING avec un BLOB. Dans<br />
la plupart des cas, vous devez utiliser READTEXT, WRITETEXT, et UPDATETEXT avec<br />
les BLOBs ( text,ntext et image ).<br />
Le type text,ntext et image doivent normalement disparaitre dans SQL Serveur<br />
2008.<br />
      textANSI &#8211; 1,073,741,824 caracteres.<br />
      ntextUnicode &#8211; 536,870,912 caracteres.</p>
<p>Dans SQL serveur 2005, Varchar(max),nvarchar(max) et varbinary(max) supportent 2<br />
gigabits de données. On peut utiliser ces types dans une procédure stockée ou<br />
une fonction comme variable et les fonctions de caractères peuvent être utiliser<br />
avec ces types là. Une réelle avancée pour les utilisateurs.<br />
      varchar(max)ANSI &#8211; 1,0773,741,824 caracteres.<br />
      nvarchar(max)Unicode &#8211; 536,870,912 caracteres.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[SQL Serveur] Connaissez-vous le type Numeric(p,s) ?</title>
		<link>https://blog.developpez.com/ylarvor/p6178/modelisation/type-systeme/sql_serveur_le_type_numeric_p_s_ou_decim</link>
		<comments>https://blog.developpez.com/ylarvor/p6178/modelisation/type-systeme/sql_serveur_le_type_numeric_p_s_ou_decim#comments</comments>
		<pubDate>Sat, 09 Aug 2008 16:32:20 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Type système]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Vous connaissez tous les types INT ou BIGINT pour stocker des entiers. Vous connaissez le type FLOAT pour stocker des valeurs arrondis de décimaux. Par contre le type NUMERIC(p,s) et le type DECIMAL(p,s) sont moins connus. Ils permettent de stocker des valeurs entières ou décimales avec précision. Ce sont les types à utiliser de préférence [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Vous connaissez tous les types INT ou BIGINT pour stocker des entiers.</p>
<p>Vous connaissez le type FLOAT pour stocker des valeurs arrondis de décimaux.</p>
<p>Par contre le type NUMERIC(p,s) et le type DECIMAL(p,s) sont moins connus.</p>
<p>Ils permettent de stocker des valeurs entières ou décimales avec précision.</p>
<p>Ce sont les types à utiliser de préférence dans une application financière</p>
<p><strong>PowerAMC les utilisent pour générer ces identity!</strong></p>
<p>La première valeur p indique nombre maximal de digit qui peut être stocké. Avec une valeur maximale de 38 digits( 10^38 )</p>
<p>La valeur s indique le nombre de chiffres après la virgules.</p>
<p>Exemple: Pour stocker un entier de 0 à +/- 9999 : NUMERIC(4,0).</p>
<p>Exemple : Pour stocker un décimal de 0 à +/- 99,99 : DECIMAL(4,2).</p>
<p>Il semble que NUMERIC(p,s) et DECIMAL(p,s) soient des synonymes. Je recommande NUMERIC(p,0) pour les entiers et DECIMAL(p,s) pour les réels.</p>
<p>La norme SQL recommande d&rsquo; utiliser un synonyme que SQL Serveur accepte : DEC(p,s).</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A quoi sert un schéma en SQL ?</title>
		<link>https://blog.developpez.com/ylarvor/p6398/modelisation/schema/sql_serveur_le_schema_dans_la_modelisati</link>
		<comments>https://blog.developpez.com/ylarvor/p6398/modelisation/schema/sql_serveur_le_schema_dans_la_modelisati#comments</comments>
		<pubDate>Wed, 17 Sep 2008 14:46:42 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Schéma]]></category>
		<category><![CDATA[Securite]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Pourquoi les utiliser ? Quand les utiliser ? Comment les utiliser ? Pourquoi les utiliser ? 1 Pour accélérer les requêtes : Précisez toujours nominement le schéma de l&#8217;objet, c&#8217;est encore mieux avec une collation binaire de votre base. 2 Si vous n&#8217;utilisez pas Power AMC, vous pouvez utilisez un schéma pour supprimer l&#8217;ordre dans [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Pourquoi les utiliser ?<br />
Quand les utiliser ?<br />
Comment les utiliser ?</p>
<p><span id="more-13"></span></p>
<p>Pourquoi les utiliser ?</p>
<p>1 Pour accélérer les requêtes : Précisez toujours nominement le schéma de l&rsquo;objet, c&rsquo;est encore mieux avec une collation binaire de votre base. </p>
<p>2 Si vous n&rsquo;utilisez pas Power AMC, vous pouvez utilisez un schéma pour supprimer l&rsquo;ordre dans la création des objets, par exemple, à l&rsquo;intérieur d&rsquo;un schéma, il est tout à fait envisageable de créer une vue avant les tables dont elle depend. Personnellement, je préfère que Power AMC crée les objets dans l&rsquo;ordre.</p>
<p>3 Si vous utilisez des tables ayant un même nom pour une raison fonctionnelle, placez les dans un schéma de nom différent et nommez précisement le schéma avant chaque utilisation pour éviter toute équivoque.</p>
<p>4 Sur une grande base, les schémas simplifie la lecture et la compréhension de la base en découpant en domaine fonctionnels.</p>
<p>Quand les utiliser ?</p>
<p>Lorsque l&rsquo;on regarde une application comme AdventuresWorks de Microsoft, on la comprend mieux grâce à l&rsquo;utilisation de plusieurs schémas.</p>
<p>Le schéma est l&rsquo;équivalent d&rsquo;un namespace, d&rsquo;un espace de nom sous .net avec une limitation de taille, il n&rsquo;y a q&rsquo;un seul niveau en SQL.</p>
<p>Personnellement, je n&rsquo;ai pas encore développer un produit de plus de 50 tables dans des domaines fonctionnels différents, justifiant de passer du schéma dbo vers plusieurs schémas.</p>
<p>Comment les utiliser ?</p>
<p>Power AMC semble gérer cet aspect si vous devez le mettre en place.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[SQL Serveur] Comment obtenir un script de la base de données de développement en vue de l&#8217;appliquer en production ?</title>
		<link>https://blog.developpez.com/ylarvor/p6148/modelisation/les_outils_du_concepteur_de_bases_de_don</link>
		<comments>https://blog.developpez.com/ylarvor/p6148/modelisation/les_outils_du_concepteur_de_bases_de_don#comments</comments>
		<pubDate>Thu, 31 Jul 2008 18:33:56 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Modélisation]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Power AMC 12 est indispensable lorsque l&#8217;on part de rien, on modélise le Modèle Conceptuel de Données, éventuellement, on réalise quelques modifications sur le Modèle Physique de Données bien que je déconseille, mieux vaut un script issu directement du MCD. On génére un script de la base vide. SQL Serveur Management permet de scripter l&#8217;ensemble [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Power AMC 12 est indispensable lorsque l&rsquo;on part de rien, on modélise le Modèle Conceptuel de Données, éventuellement, on réalise quelques modifications sur le Modèle Physique de Données bien que je déconseille, mieux vaut un script issu directement du MCD. On génére un script de la base vide.</p>
<p>SQL Serveur Management permet de scripter l&rsquo;ensemble des procédures, des vues, des triggers pour obtenir un script complémentaire permettant de générer l&rsquo;ensemble de la base de données.</p>
<p>SQL Serveur Publishing Wizard permet de récuperer les INSERT pour l&rsquo;ensemble des données de la base. On peut aussi utiliser SQL Scripter pour récupérer les données par table, pour info, il est limité à 10 enregistrements par table en version demo.</p>
<p>Toad for sql serveur, un freeware, permet de créer des contraintes complémentaires simplement avec quelques clics de souris. j&rsquo;avoue que cela rend bien service car écrire des contraintes à la main est fastidieux.</p>
<p>Un outil de versionning pour sauvegarder le script, les modifications, les évolutions de celui ci.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comment modéliser une relation Un à Plusieurs graphiquement avec Toad Data Modeler?</title>
		<link>https://blog.developpez.com/ylarvor/p7005/modelisation/toad-data-modeler/debutant_symboles_aamp_modelisation</link>
		<comments>https://blog.developpez.com/ylarvor/p7005/modelisation/toad-data-modeler/debutant_symboles_aamp_modelisation#comments</comments>
		<pubDate>Sun, 28 Dec 2008 17:09:58 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Toad Data Modeler]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Pour cette démonstration, j&#8217; utiliserais Toad Data Modeler mais je vous montrerais qu&#8217; une fois compris l&#8217; organisation et l&#8217; orientation des signes du logiciel, il est aisé de lire ou de créer un modèle fidèle à Merise. Nous souhaitons crée une relation un à plusieurs de la table Un vers la Table Many, c&#8217; [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Pour cette démonstration, j&rsquo; utiliserais Toad Data Modeler mais je vous montrerais qu&rsquo; une fois compris l&rsquo; organisation et l&rsquo; orientation des signes du logiciel, il est aisé de lire ou de créer un modèle fidèle à Merise.</p>
<p>  <span id="more-69"></span>
<p>Nous souhaitons crée une relation un à plusieurs de la table Un vers la Table Many, c&rsquo; est à dire, créer une clé étrangère dans la table Many, c&rsquo; est à dire n lignes Many pointant sur un enregistrement unique dans la table Un.</p>
<p>La question qui se pose au modélisateur est de savoir dans quel sens organiser sa relation pour obtenir la bonne relation entre Un et Many.</p>
<p>La solution est la suivante :</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="158" alt="UnToManyConceptuel" src="http://blog.developpez.com/media/186/WindowsLiveWriter/DbutantSymbolesModlisation_FF5E/UnToManyConceptuel_1.png" width="565" border="0" /> </p>
<p>Vous pouvez constater que le coté Un présente une barre unique.</p>
<p>Le coté Many présente un cercle et trois barres.</p>
<p>Pour tracer, on trace de Un vers Plusieurs.</p>
<p>Le modèle physique obtenu par génération automatique pour SQL Server 2005.</p>
<p> </p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="136" alt="UnToManyPhysique" src="http://blog.developpez.com/media/186/WindowsLiveWriter/DbutantSymbolesModlisation_FF5E/UnToManyPhysique_1.png" width="565" border="0" /></p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>lecture recommandée pour power amc 11</title>
		<link>https://blog.developpez.com/ylarvor/p4910/modelisation/poweramc/lecture_recommande_pour_power_amc_11</link>
		<comments>https://blog.developpez.com/ylarvor/p4910/modelisation/poweramc/lecture_recommande_pour_power_amc_11#comments</comments>
		<pubDate>Sun, 09 Sep 2007 11:00:00 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[PowerAMC]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Un livre indispensable pour retrouver les réflexes de conception d&#8217;un Modèle conceptuel de données et travailler ainsi à la génération d&#8217;une base de données avec power amc 11. Conception des bases de données relationnelles en pratique de jacky akoka et isabelle comyn wattiau edition vuibert informatique. On y trouve les notions d&#8217;un MCD, d&#8217;un modèle [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Un livre indispensable pour retrouver les réflexes de conception d&rsquo;un Modèle conceptuel de données et travailler ainsi à la génération d&rsquo;une base de données avec power amc 11.</p>
<p>Conception des bases de données relationnelles en pratique de jacky akoka et isabelle comyn wattiau edition vuibert informatique.</p>
<p>On y trouve les notions d&rsquo;un MCD, d&rsquo;un modèle relationnelle, des exercices en SQL, des exercices de modélisation de bases de données avec la correction.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Power AMC 12.0] Définir un IDENTITY dans le MCD.</title>
		<link>https://blog.developpez.com/ylarvor/p6077/modelisation/poweramc/power_amc_12_0_definir_un_identity_dans</link>
		<comments>https://blog.developpez.com/ylarvor/p6077/modelisation/poweramc/power_amc_12_0_definir_un_identity_dans#comments</comments>
		<pubDate>Thu, 17 Jul 2008 14:33:47 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[PowerAMC]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Un truc, que je viens de découvrir en travaillant avec Power AMC 12. Je savais qu&#8217;il était possible de créer une clef identity à partir du MPD. Cette solution, entraine, une différence entre le MCD et le MPD. Il est donc préférable de prévoir les IDENTITY directement depuis le MCD. C&#8217;est tout à fait envisageable [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Un truc, que je viens de découvrir en travaillant avec Power AMC 12. Je savais qu&rsquo;il était possible de créer une clef identity à partir du MPD. Cette solution, entraine, une différence entre le MCD et le MPD. Il est donc préférable de prévoir les IDENTITY directement depuis le MCD. C&rsquo;est tout à fait envisageable graçe au type de données SEQUENCE qui crée un IDENTITY sur un NUMERIC(18,0) ce qui laisse de la marge.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>conception d&#8217;un schéma relationnel.</title>
		<link>https://blog.developpez.com/ylarvor/p4902/modelisation/algebrerelationnelle/conception_dun_schma_relationnel</link>
		<comments>https://blog.developpez.com/ylarvor/p4902/modelisation/algebrerelationnelle/conception_dun_schma_relationnel#comments</comments>
		<pubDate>Fri, 09 Nov 2007 11:00:00 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[algèbreRelationnelle]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Les dépendances fonctionnelles. Je viens de suivre un cours trés intéressant de michel freville du cnam sur la conception d&#8217;un schéma relationnel, j&#8217;y ai appris la méthode &#171;&#160;ancienne&#160;&#187; pour décomposer les relations ( autrement dit les tables ). Il existe tout un processus en commençant par déterminer les dépendances fonctionnelles. Il s&#8217;agit de déterminer les [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Les dépendances fonctionnelles.</p>
<p>Je viens de suivre un cours trés intéressant de michel freville du cnam sur la conception d&rsquo;un schéma relationnel, j&rsquo;y ai appris la méthode &laquo;&nbsp;ancienne&nbsp;&raquo; pour décomposer les relations ( autrement dit les tables ). Il existe tout un processus en commençant par déterminer les dépendances fonctionnelles. Il s&rsquo;agit de déterminer les liens sémantiques entre les attributs ou les sous ensemble d&rsquo;attributs d&rsquo;une relation. Par exemple : La puissance d&rsquo;une voiture est dépendante de l&rsquo;immatriculation du véhicule. Si je connais l&rsquo;immatriculation, je peux déduire la puissance. <strong>c&rsquo;est une dépendance fonctionnelle</strong>. On doit déterminer la <strong>couverture minimale</strong> des dépendances fonctionnelles. c&rsquo;est à dire, les seules dépendances qui restent quand on a supprimé toute celle qui se déduise logiquement. Par exemple, l&rsquo;immatriculation définit la marque, la marque définit le pays. Une relation inutile à supprimer est donc l&rsquo;immatriculation définit le pays&#8230; On est capable de retrouver cette dépendance fonctionnelle par transitivité. A partir de la couverture minimale, on est capable de déterminer la clé primaire de la relation en produisant un graphe des dépendances fonctionnelles. c&rsquo;est assez génial! Je ne détaille pas. Il existe aussi un algorithme de BERNSTEIN qui permet de passer d&rsquo;un graphe des dépendances fonctionnelles à un schéma relationnelle compatible avec la 3 eme forme normale.</p>
<p>Les formes normales.</p>
<p>Les formes normales ne sont que des règles qui permettent de déterminer le niveau de redondance et d&rsquo;intégrité d&rsquo;un schéma relationnelle. Un diagramme de classe conçu par l&rsquo;analyse UML ( objet du monde réel distincts ) si il est conçu intelligemment avec une analyse poussée supprimant toute redondance d&rsquo;information conduit à un schéma relationnel qui respecte la quatrième forme normale. Si l&rsquo;analyse n&rsquo;est pas poussée assez loin, on peut se retrouver à ne pas respecter la 4 eme, la 3 eme, la seconde ou la première forme normale.</p>
<p>Première forme normale :</p>
<p>Une relation R est en 1ière forme normale, si tout attribut<br />de R contient une valeur atomique.</p>
<p>exemple :<br />Membre du projet(NumeroMembre,Nom,Ville,NumerosDesProjets) est dénormalisée car NumérosDesProjets contient plusieurs Numéros de Projets pour un seul membre.<br />(&lsquo;1&prime;,&rsquo;Jean&rsquo;,&rsquo;Lyon&rsquo;,&rsquo;1,2,7&prime;) (&lsquo;2&prime;,&rsquo;corinne&rsquo;,&rsquo;Marseille&rsquo;,&rsquo;1,2,9&prime;)&#8230;</p>
<p>Pour passer en premiere forme normale:<br />MembreDuProjet(NumeroMembre,Nom,Ville,NumeroProjet)<br />(&lsquo;1&prime;,&rsquo;jean&rsquo;,&rsquo;Lyon&rsquo;,&rsquo;1&prime;) (&lsquo;1&prime;,&rsquo;jean&rsquo;,&rsquo;Lyon&rsquo;,&rsquo;2&prime;) (&lsquo;1&prime;,&rsquo;jean&rsquo;,&rsquo;Lyon&rsquo;,&rsquo;7&prime;) (&lsquo;2&prime;,&rsquo;corinne&rsquo;,&rsquo;Marseille&rsquo;,&rsquo;1&prime;)&#8230;</p>
<p>remarque : en premiere forme normale, on est oblige de changer de cle primaire : NumeroMembre ne suffit plus, on doit ajouter NumeroProjet.</p>
<p>Deuxième forme normale :</p>
<p>- Une relation R est en 2ième forme normale si et<br />seulement si :<br />1) Elle est en 1ière forme normale.<br />2) s&rsquo;il existe une dépendance fonctionnelle totale reliant la clé à chaque attribut non clé.</p>
<p>remarque : la dependance fonctionnelle totale indique que pour une cle primaire compose, l&rsquo;attribut doit etre dépendant de toute la cle composée, pas seulement d&rsquo;une partie.</p>
<p>Pour passer MembreduProjet en 2 eme forme normale ( en fait on passe directement en 3 eme forme normale )<br />Employe(NumeroEmploye,Nom,ville)<br />Appartenance(NumeroEmploye,NumeroProjet)</p>
<p>Troisième forme normale :</p>
<p>- Une relation R est en 3ième forme normale si et<br />seulement si :<br />1) Elle est en 2ième forme normale.<br />2) Aucun Attribut non clé ne dépend d&rsquo;une clé quelconque par transitivité.</p>
<p>exemple :EmployeDuDepartement(NumeroEmploye,Nom,prenom,age,NumeroDepartement,DescriptionDepartement ) est en deuxieme forme normale.<br />En troisième forme normale, cela donne :<br />Employe(NumeroEmploye,Nom,prenom,age)<br />Departement(NumeroDepartement,DescriptionDepartement)</p>
<p>Pour un complément d&rsquo;information sur les formes normales, je vous renvoie vers le livre de Andreas Meier &#8211; introduction pratique aux bases de données relationnelles.</p>
<p>A bientôt.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
