[BD]Contraintes d integrité fonctionnelle [Fermé]

Signaler
Messages postés
3
Date d'inscription
vendredi 15 février 2008
Statut
Membre
Dernière intervention
15 février 2008
-
 levilm -
Bonjour,
Pourrais t on m expliquer clairement , que signifie exactement une contrainte d integrité ou dependance fonctionnelle au niveau d' un Mcd?
y a t il un rapport avec les formes normales pour valider un Mcd?

un petit exemple simple pourrait m aider a mieux cerner la chose

je vous remercie

4 réponses

Ce lien pourra bcp t'aider pr resoudre ton pb:

https://www.iutc3.unicaen.fr/~moranb/cours/acsi/donnees1/ea7.htm

bonne journée
8
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Bernard MORAND : meilleur prof d'ACSI du monde !
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
117
Bonjour,

D'une manière générale une contrainte d'intégrité fonctionnelle posée sur les éléments d'une base de données relationnelle est un "verrou" appliqué à une possibilité d'intervention sur une table relativement à une ou plusieurs autres tables appartenant à une ou plusieurs bases de données.

exemple :
deux tables "ENTETE_CMDE" et "LIGNES_CMDE" d'une base de données "COMMANDES" .
Il est inconcevable, sur le plan fonctionnel que le futur applicatiif soit en mesure de créer une ou plusieurs lignes de commande (n° de commande, référence, quantité, prix-unitaire, .........) dans la table "LIGNES_CMDE" SI l'entête de cette commande n'a pas été préalablement créée dans la table "ENTETE_CMDE" (n° de client, n° de commande, client de livraison, de facturation, ........). Cela n'aurait aucun sens l'aspect relationnel en l'occurrence ne pourrait être préservé, il y aurait une possibilité de création de lignes de commmandes "orphelines" (sans en-tête) .Par contre la réciproque peut être concevable (une en-tête sans ligne) si on admet que le futur applicatif sera en mesure, pour des raisons pratiques (administratives) de traiter des commandes en attente de finalisation.
De même créer une entête de commande dans la base de données "ENTETE_CMDE" avec un n° de client inexistant dans la base de données "CLIENTS" n'est fonctionnellement pas recevable.
Où bien l'annulation d'un cllient de la base "CLIENTS" alors que ses commandes ne sont pas toutes soldées en fabrication et/ou en facturation.
Pourriez-vous me définir une contrainte d'intégrité fonctionnelle ?
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
117
Bonjour,

Voici quelques illustrations de contraintes d'intégrité fonctionnelles/référencielles en SQL/DB2 :

--CREATION DE LA TABLE POSTES AVEC CONTRAINTES ET INTEGRITES REFERENTIELLES 

-- CREATION SUR TABLES PARENTES COMMANDE ET ARTICLES :
-- - Toute tentative de création d'une ligne de commande dans la table POSTES  
--       sera rejetée si aucune correspondance entre les deux n° de commande 
--       (NOCDE) des deux tables POSTES et COMMANDE, n'est vérifiée.
--        Si ce cas survient SQLCODE = -530 et SQLSTATE=23503  
-- - Idem pour les REFERENCES des lignes de la table POSTES relativement à 
--       la table ARTICLES. 

-- ANNULATION SUR TABLES PARENTES COMMANDE ET ARTICLES :
-- - Toute ANNULATION, dans la table COMMANDE, d'une COMMANDE entraîne l'annula- 
--       tion de la (ou des) ligne(s) de même numéro (NOCDE) présente(s) dans   
--       la table POSTES. 
-- - En ce qui concerne les référence des lignes de la table POSTES, Toute 
--       tentative d'ANNULATION dans la table ARTICLES, d'une REFERENCE existante 
--       sur une ligne au moins de la table POSTES génère une anomalie du type :
--       SQLCODE = -532 et SQLSTATE=23504.  
   
 CREATE TABLE 			POSTES 				            ( 
			POSTE         	DECIMAL (5)     NOT NULL	    ,
			REFERENCE     	CHAR    (9)     NOT NULL	    ,
			QTE		DECIMAL (6)            		    ,
			PRIXUNIT    	DECIMAL (9,2) 		    ,
			NUL		CHAR    (5)         		    ,
       			NOCDE		CHAR    (8)     NOT NULL	    ,
			PRIMARY KEY     (NOCDE, POSTE) 		    ,
-- Intégrités référencielles :
 	     CONSTRAINT REF_POSTART     FOREIGN KEY    (REFERENCE)
                        REFERENCES ARTICLES (REFERENCE) ON DELETE NO ACTION,
 	     CONSTRAINT REF_POSTCOM     FOREIGN KEY    (NOCDE)
                        REFERENCES COMMANDE (NOCDE)     ON DELETE CASCADE     );

=======================================================================
--    INSERTION D'UNE LIGNE POSTES DONT LA REF. EST INCONNUE DANS ARTICLES    -- 
----  -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*  ----       
--  Tentative d'insertion d'une ligne dans la table POSTES dont la référence est
--     inconnue dans la table ARTICLES/TARIFS 
-- 	      CONSTRAINT REF_POSTART     FOREIGN KEY     (REFERENCE)
--                        REFERENCES ARTICLES (REFERENCE) ON DELETE NO ACTION, 
 INSERT     	INTO 		POSTES  
	VALUES (10, 'ARTINCONN', 2,  100.00, '', '00000001')		       ;

-- RESULTAT OBTENU : A P R E S   T E N T A T I V E  (plantage du job) ----------
-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
-- $ SQL0530N La valeur d'insertion ou de mise à jour de la FOREIGN KEY (clé   $  
-- $      associée) "CHRISTIAN.POSTES.REF_POSTCOM" n'est égale à aucune valeur $
-- $      de la clé parente de la table parente.  SQLSTATE=23503               $
-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$


======================================================================
--     TENTATIVE DE SUPPRESSION DE TOUTES LES LIGNES DE LA TABLE ARTICLES      -- 
----   -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*    ---- 
--   Tentative d'annulation physique de toutes les lignes de la table ARTICLES  
--     en utilisant le synonyme TARIFS.
-- 	      CONSTRAINT REF_POSTART     FOREIGN KEY     (REFERENCE)
--                        REFERENCES ARTICLES (REFERENCE) ON DELETE NO ACTION,

 DELETE		 FROM  		TARIFS	 		 	       ;

-- RESULTAT OBTENU : A P R E S   T E N T A T I V E  (plantage du job) ----------
-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
-- $  SQL0532N Une ligne parente ne peut pas être supprimée car la relation    $ 
-- $  "CHRISTIAN.POSTES.REF_POSTART" limite la  suppression.  SQLSTATE=23504.  $ 
-- $SQLCA Information                                                          $ 
-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$