[BD]Contraintes d integrité fonctionnelle
tesnimeronsard
Messages postés
3
Statut
Membre
-
levilm -
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
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
https://www.iutc3.unicaen.fr/~moranb/cours/acsi/donnees1/ea7.htm
bonne journée
levilm
Bernard MORAND : meilleur prof d'ACSI du monde !
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.
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.
Bonjour,
Voici quelques illustrations de contraintes d'intégrité fonctionnelles/référencielles en SQL/DB2 :
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 $
-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$