<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - Schéma</title>
		<link>https://www.developpez.net/forums/</link>
		<description>Modélisation Relationnelle (Dépendances Fonctionnelles, Formes Normales, Entité-relation, MCD, MPD ...)</description>
		<language>fr</language>
		<lastBuildDate>Sun, 19 Apr 2026 05:22:28 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title>Forum du club des développeurs et IT Pro - Schéma</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title>Comment reconnaitre mes relations dans mon schéma ?</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183261&amp;goto=newpost</link>
			<pubDate>Thu, 16 Apr 2026 22:25:50 GMT</pubDate>
			<description>Hello à tous, 
 
Je travaille...</description>
			<content:encoded><![CDATA[<div>Hello à tous,<br />
<br />
Je travaille sur schéma et je suis emprunté en ajoutant une table qui doit contenir des informations liées à une sonde et à l'ID d'une station. Cette table peut contenir plusieurs fois les informations sur la même station et la même sonde ainsi que d'autres. <br />
<br />
J'ai donc ajouté une table n:m. J'ai ceci<br />
<br />
<img src="https://www.developpez.net/forums/attachments/p675667d1776378381/general-developpement/alm/modelisation/schema/reconnaitre-relations-schema/screenshot-2026-04-16-at-23.03.45.png/" border="0" alt="Nom : Screenshot 2026-04-16 at 23.03.45.png
Affichages : 57
Taille : 519,2 Ko"  style="float: CONFIG" /><br />
<br />
Je constate que les deux lignes sont continues.<br />
<br />
Précédemment, j'ai ajouté <br />
<br />
<ol class="decimal"><li style="">une tables 'users' et 'roles' et un role est attribué à un utilisateur (super admin, admin, user, ghest, demo).</li><li style="">une table users_has_fields. Catte table contient les utilisateurs qui sont autorisés à consulter certain(s) terrain(s). (Un terrain contient des stations). Un role est aussi attribué dans cette table afin de définir les droits aux utilisateurs sur le terrain</li></ol><br />
Par exemple <br />
<ol class="decimal"><li style="">si un utilisateur qui a le droit sur un terrain avac le role user, il ne pourra que consulter l'état des stations de CE terrain</li><li style="">si un utilisateur qui a le droit sur un terrain avac le role admin, il ne pourra modifier les seuils des sondes des stations de CE terrain</li><li style="">si un utilisateur à le role SuperAdmin, il aura tous les droits sur cette station/terrain quelque soit le role qu'il a dans 'user_has_field'. Il pourra donc modifier les seuils des sondes de cette(ces) station(s)</li></ol><br />
<br />
Ca fonctionne très bien.<br />
<br />
Simplement quand je regarde mon schéma<br />
<img src="https://www.developpez.net/forums/attachments/p675666d1776377766/general-developpement/alm/modelisation/schema/reconnaitre-relations-schema/screenshot-2026-04-17-at-00.15.48.png/" border="0" alt="Nom : Screenshot 2026-04-17 at 00.15.48.png
Affichages : 56
Taille : 865,1 Ko"  style="float: CONFIG" /><br />
je vois que la table 'users_has_fields' a les lignes en trait tillé entre la table 'users' et 'fields'<br />
<br />
Je me demande quelles seront vos critiques.<br />
<br />
En premier temps, je pensais avoir fait la table 'users_has_fields' n:m entre 'fileds' et 'users' et je me demande si j'aurais dû le faire, ..et ensuite ajouté une table 'role' en deux fois 1:n.<br />
<br />
Est-ce que ca vous fait sauter de votre siège :) et que je devrais passer un peu de temps à repenser à ca?<br />
Ou ca va comme cela, puisque que ca fonctionne bien comme cela.<br />
<br />
Ne soyez pas trop dur dans vos critiques, su vous sautez de vos sièges :) :) :)<br />
<br />
Merci et belle soirée</div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p675666d1776377766/general-developpement/alm/modelisation/schema/reconnaitre-relations-schema/screenshot-2026-04-17-at-00.15.48.png/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p675667d1776378381/general-developpement/alm/modelisation/schema/reconnaitre-relations-schema/screenshot-2026-04-16-at-23.03.45.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f621/general-developpement/alm/modelisation/schema/">Schéma</category>
			<dc:creator>pierrot10</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183261/general-developpement/alm/modelisation/schema/reconnaitre-relations-schema/</guid>
		</item>
		<item>
			<title><![CDATA[[MCD] Clé primaire obligatoire ?]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182606&amp;goto=newpost</link>
			<pubDate>Thu, 12 Mar 2026 13:45:32 GMT</pubDate>
			<description>Bonjour, 
 
Dans mon modèle...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Dans mon modèle de base de données, j'ai une table Paramètres, avec sa clé primaire, et une table Unités, avec sa clé primaire.<br />
Entre les deux, je crée une table Paramètre_Unité, ou je met la clé primaire des paramètres, et pour chaque paramètre, les clé primaires des unités valides pour ce paramètre. Ceci dans l'idée de pouvoir empêcher l'utilisateur  de pouvoir sélectionner par exemple le paramètre température et lui associer l'unité kilogramme !<br />
<br />
Question : Pour être le plus rigoureux dans la conception, est ce que dans cette table intermédiaire il est nécessaire de créer un champ clé primaire (de type autoincrement) ?<br />
<br />
Merci,<br />
<br />
Nico</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f621/general-developpement/alm/modelisation/schema/">Schéma</category>
			<dc:creator>DiverSIG</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182606/general-developpement/alm/modelisation/schema/cle-primaire-obligatoire/</guid>
		</item>
		<item>
			<title><![CDATA[[MCD] Gestion des commandes de taxi]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182422&amp;goto=newpost</link>
			<pubDate>Tue, 03 Mar 2026 11:59:21 GMT</pubDate>
			<description><![CDATA[ETUDE DE CAS 
GESTION D'UNE...]]></description>
			<content:encoded><![CDATA[<div>ETUDE DE CAS<br />
GESTION D'UNE FLOTTE DE TAXIS <br />
Contexte : Une entreprise de taxis souhaite informatiser la gestion de ses activités pour mieux suivre ses véhicules, ses chauffeurs, et les courses réalisées. Voici les détails : <br />
1.	Les Taxis : <br />
• Chaque taxi est identifié par un numéro de véhicule unique ( Num_Taxi ).<br />
• Chaque taxi est caractérisé par sa marque, son modèle, sa date de mise en service, et son kilométrage actuel.<br />
2.	Les Chauffeurs :<br />
 • Chaque chauffeur est identifié par un numéro unique (Num_Chauffeur). <br />
• Les informations personnelles du chauffeur incluent son nom, son prénom, son numéro de permis, et sa date d’embauche. <br />
3.	L’affectation des Taxis : <br />
• Un chauffeur peut conduire plusieurs taxis au fil du temps, mais un taxi ne peut être conduit que par un chauffeur à un moment donné. <br />
• Une affectation est caractérisée par une date de début et une date de fin. <br />
4.	 Les Courses :<br />
 • Une course est identifiée par un numéro unique (Num_Course). <br />
• Chaque course est associée à un taxi et un chauffeur (à un instant donné). <br />
• Les informations sur une course incluent la date et l’heure de début, la date et l’heure de fin, la distance parcourue (en kilomètres), et le montant payé par le client. <br />
• Une course peut être annulée, et dans ce cas, le montant est nul. <br />
5.	Les Clients : <br />
• Chaque client est identifié par un numéro unique (Num_Client). <br />
• Les informations sur le client incluent son nom, son prénom, et son numéro de téléphone. • <br />
Un client peut effectuer plusieurs courses, et une course est réalisée pour un seul client.<br />
<br />
<br />
<br />
Aidez moi pour avoir un MCD</div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p674715d1772618601/general-developpement/alm/modelisation/schema/gestion-commandes-taxi/mcd.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p674767d1772720070/general-developpement/alm/modelisation/schema/gestion-commandes-taxi/mcd.jpg/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f621/general-developpement/alm/modelisation/schema/">Schéma</category>
			<dc:creator>consty10000</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182422/general-developpement/alm/modelisation/schema/gestion-commandes-taxi/</guid>
		</item>
		<item>
			<title>Conception base de données utilisateur</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181564&amp;goto=newpost</link>
			<pubDate>Mon, 19 Jan 2026 11:54:06 GMT</pubDate>
			<description>Bonjour, 
 
Je travaille...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Je travaille actuellement sur une base de données de gestion des utilisateurs basée sur le principe client &gt; projet &gt; profil &gt; contributeur, pour les besoins de l'administration d'une application cartographique. Il y a des niveaux d'autorisation à chaque niveau, par exemple pour ajouter des communes autorisées et d'autres restrictions. Une commune autorisée sur un profil ne peut l'être que si elle est autorisée au niveau du profil. On est donc sur une architecture en cascade, un niveau dépendant du niveau précédent.<br />
<br />
Le problème c'est qu'une architecture comme celle-là devient vite chiant à développer et à maintenir. D'autant que deux systèmes de création d'utilisateurs existent. Mon produit cartographique est destiné aux particuliers qui se logueraient avec un email, choisirait une offre etc. Ce produit est aussi destiné aux professionnels qui eux sont davantage sur la gestion de projet. Si dans la première option, c'est l'utilisateur lui-même qui crée son espace, en revanche dans la seconde c'est mon entreprise qui créé les identifiants pour le client. Côté front, je dois interfacer avec les APIS de Stripe pour la facturation, mais pour les professionnels, en particulier pour les collectivités, cela doit se faire par Chorus Pro.<br />
<br />
A noter que je dois ajouter des tables de suivi telles que des tables de logs.<br />
<br />
Avec l'expérience, je sais que quand ça bloque et qu'il commence à y avoir des incohérences, il ya de fortes chances pour qu'une autre conception, qu'une autre vision du problème existe. Il me faudrait du coup une conception qui me permettrait de gérer les deux systèmes de facturation.<br />
<br />
Si parmi les contributeurs de ce forum, quelqu'un a une ou des idées, je suis preneur.<br />
<br />
Merci d'avance pour vos contributions,<br />
<br />
Sylvain</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f621/general-developpement/alm/modelisation/schema/">Schéma</category>
			<dc:creator>sylvain257</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181564/general-developpement/alm/modelisation/schema/conception-base-donnees-utilisateur/</guid>
		</item>
		<item>
			<title>MCD - Gestion de recherche de ressources</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2180811&amp;goto=newpost</link>
			<pubDate>Fri, 05 Dec 2025 16:25:00 GMT</pubDate>
			<description>Bonjour,  
 
Je suis en...</description>
			<content:encoded><![CDATA[<div>Bonjour, <br />
<br />
Je suis en licence informatique et nous devons réaliser un projet afin de valider nos compétences en SQL. Pour cela, nous avons le droit de créer un sujet, tant que celui-ci est suffisamment complexe et pédagogiquement intéressant. :D<br />
<br />
<br />
Comme sujet, nous avons choisi un système qui, apparemment, est très compliqué, puisqu’il fait intervenir la gestion de stock dans plusieurs entrepôts, la gestion de fournisseur et de transformation de ressources.<br />
Par conséquent, nous avons choisi de simplifier au maximum les notions, afin de se concentrer sur la recherche de ressources suite à une commande, et d’estimer les prix des ressources commandées (on ne tient pas compte du temps et des différents trajets entres entrepôts/fournisseurs.)<br />
<br />
<br />
<br />
Le debrief du projet:<br />
À partir de commandes reçues, l’entreprise de gestion et livraison de matière première (entre-autres), doit pouvoir se renseigner si les ressources commandées sont disponibles dans l’un de ses entrepôts, ou s’il est possible de s’approvisionner afin de répondre à la demande. Pour se réapprovisionner, l’entreprise possède plusieurs contacts avec des sous-traitants extérieurs, de nature différentes;<br />
<b>Fournisseur source</b>: Une source est une sorte de grand entrepôt qui possède une certaine quantité de matière, généralement une seule, et qui vend ses ressources. Par exemple une mine de Cobalt,...<br />
<b>Fournisseur usine</b>: Une usine est un fournisseur qui transforme la matière donnée entrante en matière transformée, en suivant un Processus, une recette de cuisine.<br />
<br />
<br />
<img src="https://www.developpez.net/forums/attachments/p672363d1764951508/general-developpement/alm/modelisation/schema/mcd-gestion-recherche-ressources/sqlqlqll.png/" border="0" alt="Nom : sqlqlqll.PNG
Affichages : 265
Taille : 33,4 Ko"  style="float: CONFIG" /><br />
<br />
Je vous écris ce message pour vous demander de l’aide sur la partie ci-dessus, car il y a plusieurs problèmes que nous avons du mal à résoudre:<br />
<i>(je ne vous demande pas d’aide directement sur les règles de gestion, mais sur les entités et les associations en général)</i><br />
<br />
<br />
- L’association tertiaire “Récupérer” nous a été décrit comme maladroit, et nous n’avons pas vu en cours comment adapter facilement ce genre de relation en SQL. Pourtant je l’a trouve pertinente, et ne vois donc pas commencer la développer en plusieurs entités.  Dans les SQL de gestion de stocks disponible en ligne, il y a tout un système de “LignedeCommande” présent dans “l’OrdredeCommande”, mais je n’arrive pas à l’adapter correctement dans ce type de projet.<br />
<br />
- Les différentes associations liées à l’Ordre de commande. Selon moi, l’ordre doit indiquer les processus à exécuter et le fournisseur qui réalise ce processus, mais j’ai du mal à savoir s’il suffit d’associer les entités entre elles où si une autre chose doit être employée.<br />
<br />
<br />
Petite information, les variables “coef” désignent la quantité de ressources en prenant comme référentiel le stock des entrepôts. Par exemple, un procédé qui nécessite deux ressources, auront un coefficient négatif, et fournira un produit avec un coefficient positif.<br />
<br />
<br />
Si vous pouviez m'éclairer sur ces deux points, je vous serais très reconnaissant !<br />
Et si le message n'est pas clair, n'hésitez pas à le signaler afin que l'on puisse mieux se faire comprendre :zoubi:<br />
<br />
<br />
Bonne fin de journée à vous !</div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p672363d1764951508/general-developpement/alm/modelisation/schema/mcd-gestion-recherche-ressources/sqlqlqll.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f621/general-developpement/alm/modelisation/schema/">Schéma</category>
			<dc:creator>quentyn</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2180811/general-developpement/alm/modelisation/schema/mcd-gestion-recherche-ressources/</guid>
		</item>
		<item>
			<title>Conversion MLD en MCD</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2180775&amp;goto=newpost</link>
			<pubDate>Thu, 04 Dec 2025 06:16:01 GMT</pubDate>
			<description>Bonjour, 
 
Pourriez-vous svp...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Pourriez-vous svp convertir ce MCD en MLD ?<br />
<br />
Merci d'avance (c'est quelque peu urgent :()</div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p672333d1764828888/general-developpement/alm/modelisation/schema/conversion-mld-mcd/schema-controle.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f621/general-developpement/alm/modelisation/schema/">Schéma</category>
			<dc:creator>Kain06</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2180775/general-developpement/alm/modelisation/schema/conversion-mld-mcd/</guid>
		</item>
		<item>
			<title><![CDATA[Base de données d'un réseau social]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2180405&amp;goto=newpost</link>
			<pubDate>Tue, 11 Nov 2025 14:20:06 GMT</pubDate>
			<description>Salut, 
 
Comme expliqué dans...</description>
			<content:encoded><![CDATA[<div>Salut,<br />
<br />
Comme expliqué dans le post de présentation posté à l'instant, j'essaie actuellement de développer un réseau social en m'appuyant sur la stack Weblow (frontend), Xano (backend) et Wized pour la logique JavaScript entre les deux.<br />
<br />
J'ai bien avancé sur mon MCD, mais j'arrive à un point crucial sur la gestion des Fichiers postés par les utilisateurs du réseau. Voici quelques règles de gestion que je souhaite modéliser :<br />
<br />
Un Membre peut poster 1 ou plusieurs Publications. Une Publication peut appartenir à plusieurs Types : un simple Texte, une Photo avec un Texte, une galerie d'Images (qui peut aussi contenir des Vidéos), voire, (plus rare, étant donné la domination du son streamé), un fichier Son (MP3 ou autre). Un Membre peut également poster des liens externes (URL), vers un article de presse, par exemple.<br />
<br />
Je me pose surtout la question du stockage des données. Pour ma V1, qui sera assez rudimentaire, je souhaite d'abord stocker les données dans le cloud de Xano. Se pose par contre la question de la modélisation. J'ai bien une table Membre, une table Post (ID, titre, description, statut, lastupdate, #membre_id). Mais je bloque sur la modélisation des Medias (images , photos, son) : est-ce que je dois créer une table par type de fichiers (car une Image n'a pas de Durée, par exemple, contrairement à une Vidéo ou un Son) ? Ou bien est-ce que je dois créer une table unique qui contient tous les types de Media ? Est-ce que je dois créer une table Post_type, afin de répertorier les différents types de posts que peuvent publier les membres ?..<br />
<br />
Bref, je suis un peu perdu !<br />
<br />
Aussi, je vous remercie d'avance pour votre aide,<br />
<br />
Jérémy</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f621/general-developpement/alm/modelisation/schema/">Schéma</category>
			<dc:creator>jerem_brest</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2180405/general-developpement/alm/modelisation/schema/base-donnees-d-reseau-social/</guid>
		</item>
		<item>
			<title><![CDATA[[MCD] Correction de MCD]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2180366&amp;goto=newpost</link>
			<pubDate>Sun, 09 Nov 2025 14:38:36 GMT</pubDate>
			<description>Bonjour, 
J’ai réalisé un MCD...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
J’ai réalisé un MCD pour mon projet, mais je rencontre un problème de fermeture circulaire entre certaines entités.<br />
<br />
<img src="https://www.developpez.net/forums/attachments/p671619d1762699046/general-developpement/alm/modelisation/schema/correction-mcd/schema_081125t-copie-mcd.jpg/" border="0" alt="Nom : Schema_081125T-Copie de Mcd.jpg
Affichages : 253
Taille : 90,2 Ko"  style="float: CONFIG" /><br />
<br />
Dans ce modèle, chaque commande peut avoir plusieurs livraisons, et une seule facture est associée à la commande.<br />
Pourriez-vous m’aider à corriger le MCD afin d’éviter la fermeture circulaire?<br />
Merci !</div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p671619d1762699046/general-developpement/alm/modelisation/schema/correction-mcd/schema_081125t-copie-mcd.jpg/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f621/general-developpement/alm/modelisation/schema/">Schéma</category>
			<dc:creator>Lynn2563</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2180366/general-developpement/alm/modelisation/schema/correction-mcd/</guid>
		</item>
		<item>
			<title><![CDATA[Modéliser des résultats d'analyses]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2180256&amp;goto=newpost</link>
			<pubDate>Mon, 03 Nov 2025 10:24:07 GMT</pubDate>
			<description>Bonjour, 
 
Dans la base de...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Dans la base de données que je crée, je doit modéliser des analyses (analyses chimiques, biologiques, ...) et les résultats de ces analyses.<br />
<br />
J'ai une table qui décrit des échantillons, une table qui décrit les analyses faites sur ces échantillons (type d'analyse, protocole utilisé, ...).<br />
Pour les résultats d'analyses, j'ai identifié 4 types de résultats:<br />
- valeur numérique (ex : concentration, nombre d'éléments, ...)<br />
- valeur maximale (ex : concentration &lt; 5, sans pouvoir donner une valeur précise)<br />
- valeur minimale (ex : concentration &gt; 5, sans pouvoir donner une valeur précise)<br />
- résultat non numérique (ex : présence/absence)<br />
<br />
Mon problème est de modéliser tout ça. Dans une seule table de résultats d'analyse ? mais je ne vois pas trop comment faire rentrer tous ces cas de figure dans une table unique<br />
Ou faire une table de résultat spécifique par cas de figure ?<br />
<br />
Des idées ? des avis ? des exemples ?<br />
<br />
Merci,<br />
<br />
Nico</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f621/general-developpement/alm/modelisation/schema/">Schéma</category>
			<dc:creator>DiverSIG</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2180256/general-developpement/alm/modelisation/schema/modeliser-resultats-d-analyses/</guid>
		</item>
		<item>
			<title>Le Modèle Relationnel de Données et Tutorial D</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2178617&amp;goto=newpost</link>
			<pubDate>Thu, 14 Aug 2025 20:47:26 GMT</pubDate>
			<description>Bonsoir à tous,   
 
Le...</description>
			<content:encoded><![CDATA[<div>Bonsoir à tous, &nbsp; <br />
<br />
Le Modèle Relationnel de Données (RM), inventé par Ted Codd ([Codd1969], [Codd1970]) a continué à s’enrichir et évoluer harmonieusement sous la houlette de ses continuateurs, essentiellement Chris Date, compagnon de route de toujours de Ted, et Hugh Darwen. Suite aux travaux de Codd, durant la période 1973-1976, naquirent essentiellement deux langages relationnels, QUEL et SQL.<br />
&nbsp;<br />
Date et Darwen ont proposé un langage pour étudier la mise en oeuvre du Modèle Relationnel de Données, à savoir Tutorial D. je cite  (et traduis)&nbsp;:  <br />
&nbsp;<br />
<div style="margin-left:40px">« Tutorial D est un langage de programmation complet du point de vue du calcul, intégrant toutes les fonctionnalités des bases de données. Nous n’avons pas voulu qu’il soit perçu comme doté de «&nbsp;la puissance industrielle&nbsp;» ; il s’agit plutôt d’un langage «&nbsp;jouet&nbsp;» («&nbsp;toy&nbsp;») dont l’objet principal est de servir de support pour l’enseignement. En conséquence, ont été volontairement omises de nombreuses fonctionnalités qu’exigerait un langage véritablement industrialisé. (L’extension du langage pour la prise en compte de ces fonctionnalités serait un projet qui en vaudrait la peine, le transformant ainsi en ce qu’on pourrait appeler Industrial D.)...&nbsp;»</div>&nbsp;<br />
Par « langage de programmation complet du point de vue du calcul », on doit comprendre que des applications entières peuvent être ainsi développées, il ne s’agit pas d’un «&nbsp;sous-langage&nbsp;» de données hébergé par quelque langage hôte propre à fournir les possibilités de calcul nécessaires. Tutorial D est un langage «&nbsp;jouet&nbsp;» dans la mesure où rien n’est pris en compte en ce qui concerne par exemple les sessions et les connexions, les communications avec le monde extérieur (gestion des entrées/sorties, etc.), ou la gestion des exceptions et de leurs codes-retour. Date et Darwen sont beaucoup trop modestes, le qualificatif «&nbsp;jouet&nbsp;» ne colle pas, je dirais que Tutorial D est plutôt un langage de référence, et &#8213;&nbsp;par comparaison avec le rigide SQL&nbsp;&#8213; souple, élégant et intellectuellement très agréable quand on «&nbsp;joue&nbsp;» avec.<br />
&nbsp;<br />
Un langage vraiment relationnel, disons de la famille D, peut très bien intégrer des fonctionnalités indépendantes du Modèle Relationnel, dans la mesure où elles n’en pervertissent pas l’esprit. Par exemple, D pourrait à l’instar de SQL proposer un générateur de type ARRAY ou MULTISET ([TTM2014], chapitre 10&nbsp;/&nbsp;«&nbsp;RM Very strong suggestions&nbsp;», page 249), mais en aucune façon un concept en contradiction avec l’esprit du Modèle Relationnel tel que celui de pointeur (exemple : type REF de SQL). En effet, toute information, quelle qu’elle soit, doit être représentée dans la base de données exclusivement sous forme de valeurs prises par les attributs (NULL est de facto disqualifié), au sein de n-uplets (tuples) dans les relations (<i>Information Principle </i>de Codd).<br />
&nbsp;<br />
A vous de jouer avec Tutorial D...;)<br />
&nbsp;<br />
L’article que je propose : <u><i><a href="https://fsmrel.developpez.com/basesrelationnelles/Tutorial_D/" target="_blank">Tutorial D et algèbre relationnelle</a></i></u> <br />
&nbsp; <br />
A vous de jouer avec Tutorial D...<br />
&nbsp;<br />
François</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f621/general-developpement/alm/modelisation/schema/">Schéma</category>
			<dc:creator>fsmrel</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2178617/general-developpement/alm/modelisation/schema/modele-relationnel-donnees-tutorial-d/</guid>
		</item>
		<item>
			<title>Contrainte sur les tables de spécialisation</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2177764&amp;goto=newpost</link>
			<pubDate>Fri, 27 Jun 2025 08:41:50 GMT</pubDate>
			<description>Bonjour, 
 
Je ne sais pas si...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Je ne sais pas si je suis sur le bon forum, car ma question ne porte pas sur la modélisation des tables de spécialisation en tant que tel, mais sur la gestion 'opérationnelle' de ces tables <br />
<br />
Prenons l'exemple suivant :<br />
<br />
<img src="https://www.developpez.net/forums/attachments/p668388d1751013256/general-developpement/alm/modelisation/schema/contrainte-tables-specialisation/bdd.jpg/" border="0" alt="Nom : bdd.jpg
Affichages : 166
Taille : 103,0 Ko"  style="float: CONFIG" /><br />
<br />
Dans la table ADHERENT, on a la clé primaire numAdherent qui prendra par exemple les valeurs numAdh1, numAdh2, numAdh3<br />
Dans la table ETUDIANT, on aura la variable numAdherent qui prendra la valeur numAdh1<br />
Dans la table ENSEIGNANT, on aura la variable numAdherent qui prendra les valeurs numAdh2, numAdh3<br />
<br />
Ca c'est dans un fonctionnement optimal.<br />
<br />
Mais qu'est ce qui m'empêche de faire une requête INSERT dans la table ETUDIANT, ou la variable numAdherent prendrait la valeur numAdh2 ?<br />
Du coup on se retrouverait avec un étudiant qui a une clé primaire=numAdh2, et un enseignant qui a une clé primaire=numAdh2<br />
<br />
Si on considère que la relation de spécialisation est XT, comment faire pour eviter ce cas? quelle contrainte mettre en place ? (Trigger ?) <br />
<br />
<br />
Merci,<br />
Nico</div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p668388d1751013256/general-developpement/alm/modelisation/schema/contrainte-tables-specialisation/bdd.jpg/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f621/general-developpement/alm/modelisation/schema/">Schéma</category>
			<dc:creator>DiverSIG</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2177764/general-developpement/alm/modelisation/schema/contrainte-tables-specialisation/</guid>
		</item>
		<item>
			<title>Gestion de paie informatisée</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2177649&amp;goto=newpost</link>
			<pubDate>Sat, 21 Jun 2025 08:58:12 GMT</pubDate>
			<description>SVP est ce que je peux...</description>
			<content:encoded><![CDATA[<div>SVP est ce que je peux bénéficier d'un MCC et MCD de la gestion de paie informatisé ??</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f621/general-developpement/alm/modelisation/schema/">Schéma</category>
			<dc:creator>LePoly-Create</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2177649/general-developpement/alm/modelisation/schema/gestion-paie-informatisee/</guid>
		</item>
		<item>
			<title><![CDATA[[MPD] Emploi du temps hebdomadaire]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2177489&amp;goto=newpost</link>
			<pubDate>Fri, 13 Jun 2025 16:13:31 GMT</pubDate>
			<description>Bonjour. 
 
Je cherche à...</description>
			<content:encoded><![CDATA[<div>Bonjour.<br />
<br />
Je cherche à réaliser un emploi du temps hebdomadaire (travail purement personnel dans un but pédagogique) mais l'approche est difficile étant donné que j'entrevois plusieurs possibilités, évidemment, sans savoir quelle est la bonne.<br />
<br />
Il s'agit d'un planning d'heures de ménage chez des particuliers, avec les règles suivantes.<br />
<br />
- Les particuliers sont nommés clients et les personnels de ménage employés.<br />
- Comme aucun attribut ne les distingue, je pense qu'une entité unique avec un attribut différenciant l'un de l'autre s'impose.<br />
- Une employée peut avoir 1 ou plusieurs clients ; 1 client peut avoir 1 ou plusieurs employés.<br />
- Pour qu'une employée se rende chez un client, une affectation doit être créée. Cette affectation peut être durable ou temporaire, dans le cas d'un remplacement (maladie, vacances, etc). À ce propos, il s'agit dont dans l'immense majorité des cas d'affectations &quot;permanentes&quot;, définies par un nombre d'heures à effectuer par semaine.<br />
- Une affectation temporaire est supprimée dès que la période est terminée (il n'y a aucun besoin d'historisation).<br />
- Une employée ne peut avoir plus d'une affectation simultanément chez le même client.<br />
- Les plannings sont établis au nom de l'employée. Une employée ne peut avoir qu'un seul planning.<br />
<br />
Voici comment j'ai procédé pour le moment...<br />
<br />
Une table de créneaux horaires est reliée à une table de plannings. L'enregistrement d'une nouvelle salariée implique la création d'un nouveau planning.<br />
<br />
Dans la table des plannings, on trouve :<br />
<br />
- Un identifiant.<br />
- La clé étrangère de la table des employées.<br />
<br />
Dans la table des créneaux horaires, on trouve :<br />
<br />
- Un identifiant.<br />
- La clé étrangère de la table des plannings.<br />
- La clé étrangère de la table des clients.<br />
- La clé étrangère de la table des jours (ceci afin de pouvoir classer par ordre de jour).<br />
- 1 colonne pour l'horaire de début.<br />
- 1 colonne pour l'horaire de fin.<br />
<br />
Horaires de début et de fin puisent les valeurs dans une table (non reliée) qui contient les heures de 08:00 à 20:00 par &quot;crans&quot; de 15 minutes.<br />
<br />
Actuellement, donc, afin de faciliter la conception et ne pas m'emmêler les pinceaux, j'ai carrément séparé clients et employés en utilisant deux tables.<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br /></div></td><td valign="top"><pre style="margin: 0">CREATE TABLE T_EMPLOYES (
	EMP_ID INTEGER IDENTITY NOT NULL,
	SAL_NOM VARCHAR (32) NOT NULL,
	SAL_PRENOM VARCHAR (32) NOT NULL,
	CONSTRAINT PK_EMP_ID PRIMARY KEY (EMP_ID)
);

CREATE TABLE T_CLIENTS (
	CLI_ID INTEGER IDENTITY NOT NULL,
	CLI_NOM VARCHAR (32) NOT NULL,
	CLI_PRENOM VARCHAR (32) NOT NULL,
	CONSTRAINT PK_CLI_ID PRIMARY KEY (CLI_ID)
);

CREATE TABLE T_AFFECTATIONS (
	AFF_ID INTEGER IDENTITY NOT NULL, 
	EMP_ID INTEGER NOT NULL,
	CLI_ID INTEGER NOT NULL,
	AFF_HR DECIMAL (6,2) NOT NULL,
	CONSTRAINT PK_AFF_ID PRIMARY KEY (AFF_ID),
	CONSTRAINT FK_AFF_EMP FOREIGN KEY (EMP_ID) REFERENCES T_EMPLOYES (EMP_ID),
	CONSTRAINT FK_AFF_CLI FOREIGN KEY (CLI_ID) REFERENCES T_CLIENTS (CLI_ID)
);

CREATE TABLE T_JOURS (
	JOU_ID INTEGER NOT NULL,
	JOU_LABEL VARCHAR (10) NOT NULL,
	CONSTRAINT PK_JOU_ID PRIMARY KEY (JOU_ID)
);

CREATE TABLE T_HEURES (
	HEU_ID INTEGER NOT NULL,
	HEU_HR TIME NOT NULL,
	CONSTRAINT PK_HEU_ID PRIMARY KEY (HEU_ID)
);

CREATE TABLE T_PLANNINGS (
	PLA_ID INTEGER IDENTITY NOT NULL,
	EMP_ID INTEGER NOT NULL,
	CONSTRAINT PK_PLA_ID PRIMARY KEY (PLA_ID),
	CONSTRAINT FK_PLA_EMP FOREIGN KEY (EMP_ID) REFERENCES T_EMPLOYES (EMP_ID),
	CONSTRAINT UK_PLA_EMP UNIQUE (EMP_ID)
);

CREATE TABLE T_CRENEAUX (
	CRE_ID INTEGER IDENTITY NOT NULL,
	PLA_ID INTEGER NOT NULL,
	CLI_ID INTEGER NOT NULL,
	JOU_ID INTEGER NOT NULL,
	CRE_DEBUT TIME NOT NULL,
	CRE_FIN TIME NOT NULL,
	CONSTRAINT PK_CRE_ID PRIMARY KEY (CRE_ID),
	CONSTRAINT FK_CRE_PLA FOREIGN KEY (PLA_ID) REFERENCES T_PLANNINGS (PLA_ID),
	CONSTRAINT FK_CRE_CLI FOREIGN KEY (CLI_ID) REFERENCES T_CLIENTS (CLI_ID),
	CONSTRAINT FK_CRE_JOU FOREIGN KEY (JOU_ID) REFERENCES T_JOURS (JOU_ID),
	CONSTRAINT UK_PLA_JOU_DEB UNIQUE (PLA_ID, JOU_ID, CRE_DEBUT),
	CONSTRAINT UK_PLA_JOU_FIN UNIQUE (PLA_ID, JOU_ID, CRE_FIN),
	CONSTRAINT CK_DEB_FIN CHECK (CRE_FIN &gt; CRE_DEBUT)
);</pre></td></tr></table></code><hr />
</div>Testé dans une application LibreOffice Base.<br />
<br />
Alors ça fonctionne, je dirai même que ça va tout seul pour la saisie dans un formulaire, mais je ne suis pas du tout sûr que la structure soit bonne et j'aimerais avoir votre avis.<br />
<br />
Merci.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f621/general-developpement/alm/modelisation/schema/">Schéma</category>
			<dc:creator>Nerva</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2177489/general-developpement/alm/modelisation/schema/emploi-temps-hebdomadaire/</guid>
		</item>
		<item>
			<title>Validation sur mon MCD</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2176690&amp;goto=newpost</link>
			<pubDate>Wed, 07 May 2025 14:35:08 GMT</pubDate>
			<description>Bonjour je suis Fred étudiant...</description>
			<content:encoded><![CDATA[<div>Bonjour je suis Fred étudiant en Sciences des données et dans le cadre de mon stage en BUT Science des Données, je participe à un projet de mise à jour et de valorisation des activités proposées aux seniors par les structures locales (associations, centres sociaux, professionnels, etc.).<br />
Dont objectif principal est de concevoir une base de données relationnelle, de recueillir les informations via une enquête (KoboToolbox), puis de développer une interface web ou un outil de datavisualisation destiné au Pôle Seniors du CCAS de Bron. Et j'aimerai que vous critiquez mon MCD dans le but de le perfectionner tout en respectant le besoin métier et la 3ème FN : <img src="https://www.developpez.net/forums/attachments/p667181d1746627990/general-developpement/alm/modelisation/schema/validation-mcd/mcd.png/" border="0" alt="Nom : MCD.png
Affichages : 270
Taille : 84,4 Ko"  style="float: CONFIG" /><img src="https://www.developpez.net/forums/attachments/p667181d1746627990/general-developpement/alm/modelisation/schema/validation-mcd/mcd.png/" border="0" alt="Nom : MCD.png
Affichages : 270
Taille : 84,4 Ko"  style="float: CONFIG" /><img src="https://www.developpez.net/forums/attachments/p667181d1746627990/general-developpement/alm/modelisation/schema/validation-mcd/mcd.png/" border="0" alt="Nom : MCD.png
Affichages : 270
Taille : 84,4 Ko"  style="float: CONFIG" /><img src="https://www.developpez.net/forums/attachments/p667183d1746628184/general-developpement/alm/modelisation/schema/validation-mcd/site_web_backend.png/" border="0" alt="Nom : site_web_backend.png
Affichages : 172
Taille : 159,7 Ko"  style="float: CONFIG" /><img src="https://www.developpez.net/forums/attachments/p667184d1746628295/general-developpement/alm/modelisation/schema/validation-mcd/site_web_frontend.png/" border="0" alt="Nom : site_web_frontend.png
Affichages : 174
Taille : 170,8 Ko"  style="float: CONFIG" /></div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p667181d1746627990/general-developpement/alm/modelisation/schema/validation-mcd/mcd.png/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p667183d1746628184/general-developpement/alm/modelisation/schema/validation-mcd/site_web_backend.png/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p667184d1746628295/general-developpement/alm/modelisation/schema/validation-mcd/site_web_frontend.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f621/general-developpement/alm/modelisation/schema/">Schéma</category>
			<dc:creator>Elkana49</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2176690/general-developpement/alm/modelisation/schema/validation-mcd/</guid>
		</item>
		<item>
			<title>Respect au niveau relationnel des cardinalités 1,n du MCD (2e épisode)</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2176320&amp;goto=newpost</link>
			<pubDate>Mon, 21 Apr 2025 11:56:18 GMT</pubDate>
			<description>Ave, 
 
Comment mettre en...</description>
			<content:encoded><![CDATA[<div>Ave,<br />
<br />
Comment mettre en oeuvre une contrainte imposant le respect des cardinalités 1,n définies dans un MCD ? :koi:<br />
<br />
Je reviens sur les conclusions que l’on a pu tirer à partir d’une <u><a href="https://www.developpez.net/forums/d2163199/general-developpement/alm/modelisation/schema/respect-niveau-sql-cardinalites-1-n-mcd-merisien/" target="_blank">discussion antérieure</a></u> traitant de ce sujet.<br />
<br />
Avec SQL : sans insert dans une vue, sans trigger, sans bricolage, pas de salut, d’autant plus qu’Hilarion traîne en permanence ses guêtres pour ficher la zoubia. Les débats dans cette discussion furent animés, les baroudeurs s'y étaient mis (Paprick, escartefigue, CinePhil, SQLpro...) <img src="https://www.fsmwarden.com/smileys-icones/chin80" border="0" alt="" /> <br />
<br />
Voyons comment les choses se passent dan le cadre du Modèle Relationnel de Données, c’est-à-dire avec Tutorial D. &nbsp;<br />
<br />
Prenons le cas des devis proposé par Patrick dans le post #46 de cette discussion (de plus de 70 échanges...) :<br />
&nbsp; <br />
&nbsp; <br />
 <br />
<br />
 <div style="margin-left:40px"><img src="https://www.fsmwarden.com/developpez_9/Devis(paprick)80.png" border="0" alt="" /></div>&nbsp; <br />
<br />
Le LDD SQL :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">CREATE</span> <span style="color: #0000ff;">TABLE</span> Produit <span class="br0">&#40;</span>RefProduit <span style="color: #0000ff;">INT</span>, Designation <span style="color: #0000ff;">VARCHAR</span><span class="br0">&#40;</span><span style="color: #cc66cc;">50</span><span class="br0">&#41;</span> <span style="color: #0000ff;">NOT</span> <span style="color: #0000ff;">NULL</span>, Prix <span style="color: #0000ff;">INT</span> <span style="color: #0000ff;">NOT</span> <span style="color: #0000ff;">NULL</span>, 
<span style="color: #0000ff;">CONSTRAINT</span> Produit_PK <span style="color: #0000ff;">PRIMARY</span> <span style="color: #0000ff;">KEY</span> <span class="br0">&#40;</span>RefProduit<span class="br0">&#41;</span><span class="br0">&#41;</span> ;
<span style="color: #0000ff;">CREATE</span> <span style="color: #0000ff;">TABLE</span> Devis <span class="br0">&#40;</span>NumDevis <span style="color: #0000ff;">INT</span>, DateDevis <span style="color: #0000ff;">DATE</span> <span style="color: #0000ff;">NOT</span> <span style="color: #0000ff;">NULL</span>, <span style="color: #0000ff;">CONSTRAINT</span> Devis_PK <span style="color: #0000ff;">PRIMARY</span> <span style="color: #0000ff;">KEY</span> <span class="br0">&#40;</span>NumDevis<span class="br0">&#41;</span><span class="br0">&#41;</span> ;
<span style="color: #0000ff;">CREATE</span> <span style="color: #0000ff;">TABLE</span> LigneDevis <span class="br0">&#40;</span>NumDevis <span style="color: #0000ff;">INT</span>, RefProduit <span style="color: #0000ff;">INT</span>, Quantite <span style="color: #0000ff;">INT</span> <span style="color: #0000ff;">NOT</span> <span style="color: #0000ff;">NULL</span>, <span style="color: #0000ff;">CONSTRAINT</span> LigneDevis_PK <span style="color: #0000ff;">PRIMARY</span> <span style="color: #0000ff;">KEY</span> <span class="br0">&#40;</span>NumDevis, RefProduit<span class="br0">&#41;</span>,
<span style="color: #0000ff;">CONSTRAINT</span> LigneDevisProduit_FK <span style="color: #0000ff;">FOREIGN</span> <span style="color: #0000ff;">KEY</span> <span class="br0">&#40;</span>RefProduit<span class="br0">&#41;</span> <span style="color: #0000ff;">REFERENCES</span> Produit,
<span style="color: #0000ff;">CONSTRAINT</span> LigneDevisDevis_FK <span style="color: #0000ff;">FOREIGN</span> <span style="color: #0000ff;">KEY</span> <span class="br0">&#40;</span>NumDevis<span class="br0">&#41;</span> <span style="color: #0000ff;">REFERENCES</span> Devis <span style="color: #0000ff;">ON</span> <span style="color: #0000ff;">DELETE</span> CASCADE<span class="br0">&#41;</span> ;</pre></td></tr></table></code><hr />
</div><br />
Le LDD façon Tutorial D :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br /></div></td><td valign="top"><pre style="margin: 0"><b> 
VAR Produit BASE RELATION {RefProduit INT, Designation CHAR, Prix INT} KEY {RefProduit} ;
VAR Devis BASE RELATION {NumDevis INT, DateDevis CHAR} KEY {NumDevis} ;
VAR LigneDevis BASE RELATION {NumDevis INT, RefProduit CHAR, Quantite INT} KEY {NumDevis, RefProduit} ;</b></pre></td></tr></table></code><hr />
</div><br />
La contrainte imposant la cardinalité 1,n requise par le MCD :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><b>CONSTRAINT CDL Devis {NumDevis} = LigneDevis {NumDevis} ;</b></code><hr />
</div><br />
Il s’agit d’une contrainte d’égalité faisant qu’un devis ne peut exister sans ligne de devis et qu’une ligne de devis ne peut exister sans devis. CDL est le nom de la contrainte, &quot;Devis {NumDevis}&quot; est la projection de Devis sur l’attribut NumDevis et &quot;LigneDevis {NumDevis}&quot; la projection de LigneDevis sur l’attribut NumDevis.<br />
<br />
Il est inutile de doter LigneDevis d’une clé étrangère référençant Devis : la contrainte CDL fait office. Toutefois, une contrainte d’intégrité référentielle (nommée CLP ci-dessous) est nécessaire pour s’assurer qu’une ligne de devis référence un produit existant&nbsp;:<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><b>CONSTRAINT CLP LigneDevis {RefProduit} &#8838; Produit {RefProduit} ;</b></code><hr />
</div><br />
Testons ça avec un jeu d’essai.<br />
<br />
Création de produits :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br /></div></td><td valign="top"><pre style="margin: 0"><b>INSERT Produit RELATION 
  {  TUPLE {RefProduit 1, Designation &quot;boulons de 8&quot;, Prix 100}
   , TUPLE {RefProduit 2, Designation &quot;écrous&quot;, Prix 200}
  } ;</b></pre></td></tr></table></code><hr />
</div><br />
Tentons la création d’un devis :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br /></div></td><td valign="top"><pre style="margin: 0"><b>INSERT Devis RELATION 
  {TUPLE {NumDevis 1, DateDevis &quot;d01&quot;}} ;</b></pre></td></tr></table></code><hr />
</div><br />
En l’absence d’une ligne de devis, il est évident que la contrainte CDL mettra en échec cette tentative...<br />
<br />
Comme l’écrivait l’autre, que faire ? il est temps de parler de l’affectation multiple. Considérons l’instruction suivante :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br /></div></td><td valign="top"><pre style="margin: 0"><b>   INSERT Devis RELATION 
  {
     TUPLE {NumDevis 1, DateDevis &quot;d01&quot;}
  }
 <font color="red"><font size="2">,</font></font> 
   INSERT LigneDevis RELATION 
  {
     TUPLE {NumDevis 1, RefProduit 1, Quantite 100}
   , TUPLE {NumDevis 1, RefProduit 2, Quantite 150}
  }
 <font color="red"><font size="2">;</font></font>
</b></pre></td></tr></table></code><hr />
</div><br />
On a deux affectations (par INSERT), la 1re portant sur Devis et la 2e portant sur LigneDevis.<br />
<br />
Mais étant séparées par une <b>virgule</b> (que je fais rougeoyer), <u>ces deux affectations</u>, font partie d’<u>une seule instruction</u>, elle-même bornée par un <b><u>point-virgule</u></b>. <br />
Ainsi, une instruction peut comporter un nombre quelconque d’affectations et elle est à considérer comme sémantiquement atomique (<i>tout ou rien</i>). Autrement dit, le système traite chaque affectation, disons séquentiellement, sans aucun contrôle (autre que syntaxique), jusqu’à ce que soit atteint le point-virgule marquant la fin de l’instruction. C’est seulement à ce moment-là que les contrôles d’intégrité de la base de données sont déclenchés pour vérification de la validité du résultat de cette instruction (<i><b>immediate checking</b></i>), et si l’intégrité de la base de données est violée, les effets l’affectant sont annulés et un message d’erreur est émis.<br />
<br />
=&gt; Bref, grâce à l’affectation multiple, le respect d’une contrainte telle que CDL ne pose aucun problème, et combien d’autres contraintes en seraient bénéficiaires !&nbsp;!&nbsp;:P<br />
<br />
Pour sa part, SQL méconnaît l’affectation multiple et c’est fort dommage. <br />
Qu’il évolue ! que de simplifications en attendre, combien de triggers bons pour la poubelle&nbsp;!<br />
&nbsp;<br />
<b> A propos de la suppression des devis </b> <br />
<br />
Grâce à l’option CASCADE attachée à la clé étrangère LigneDevisDevis_FK définie plus haut, SQL permet que la suppression d’un devis entraîne la suppression des lignes de ce devis.<br />
<br />
Avec Tutorial D, si on veut par exemple supprimer le devis 1 et ses lignes, on utilisera l’affectation multiple :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br /></div></td><td valign="top"><pre style="margin: 0"><b>DELETE Devis WHERE NumDevis = 1
<font color="red"><font size="2">,</font></font> 
DELETE LigneDevis WHERE NumDevis = 1
<font color="red"><font size="2">;</font></font></b></pre></td></tr></table></code><hr />
</div><br />
A suivre...</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f621/general-developpement/alm/modelisation/schema/">Schéma</category>
			<dc:creator>fsmrel</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2176320/general-developpement/alm/modelisation/schema/respect-niveau-relationnel-cardinalites-1-n-mcd-2e-episode/</guid>
		</item>
	</channel>
</rss>
