Envoyé par
Richard_35
dans ce cas (une analyse dépend de deux conditions) la cardinalité est : Analyse -1,2--[dépend]--0,n- Condition. Non ?
Reprenons au niveau conceptuel :
1er cas : [ANALYSE] --- 2,2 ---(DEPENDRE)--0,N--[CONDITION]
La cardinalité minimum 2 signifie qu’une analyse participe au moins deux fois à l’association-type DEPENDRE ;
La cardinalité maximum 2 signifie qu’une analyse participe au plus deux fois à l’association-type DEPENDRE.
=>
Une analyse participe exactement deux fois à l’association-type DEPENDRE.
2e cas : [ANALYSE] --- 1,2 ---(DEPENDRE)--0,N--[CONDITION]
La cardinalité minimum 1 signifie qu’une analyse participe au moins une fois à l’association-type DEPENDRE ;
La cardinalité maximum 2 signifie qu’une analyse participe au plus deux fois à l’association-type DEPENDRE.
=>
Une analyse peut ne pas participer exactement deux fois à l’association-type DEPENDRE, mais une seule fois, en contradiction avec la contrainte initiale selon laquelle il doit y avoir exactement deux conditions pour chaque analyse.
Redescendons au niveau tabulaire.
Le diagramme de Steph18 est correct, sinon qu’il comporte une erreur concernant la clé primaire de la table Statiscal_Analysis et doit être remplacé par le suivant :
En effet, une clé primaire est une clé candidate et à ce titre doit respecter les contraintes d’unicité et d’irréductibilité des clés.
Supposons maintenant que l’analyse 1 fasse référence aux conditions 2 et 4, ni plus, ni moins. D’après le diagramme proposé par Steph18, cette analyse peut en réalité faire référence à une diarrhée de conditions :
1 2 3 4 5 6 7 8 9
|
Analyse Control Test
------- ------- ----
1 1 2
1 1 3
1 2 1
1 2 4
1 3 1
... ... ... |
En respectant la règle d’irréductibilité, cette situation devient impossible :
1 2 3 4 5 6 7 8 9
|
Analyse Control Test
------- ------- ----
1 1 2
1 1 3
1 2 1
1 2 4
1 3 1
... ... ... |
Maintenant, même avec une clé primaire rendue irréductible, rien n’interdit qu’une analyse fasse référence deux fois à un contrôle ou à un test :
1 2 3 4 5
|
Analyse Control Test
------- ------- ----
1 2 2
... ... ... |
Mais ceci est facilement contrôlable au niveau SQL :
1 2 3 4 5 6 7 8 9 10 11
|
CREATE TABLE ANALYSE
(
Analyse INTEGER NOT NULL
, Control INTEGER NOT NULL
, Test INTEGER NOT NULL
, CONTRAINT ANALYSE_PK PRIMARY KEY (Analyse)
, CONTRAINT ANALYSE_FK1 FOREIGN KEY (Control) REFERENCES CONDITION (condition)
, CONTRAINT ANALYSE_FK2 FOREIGN KEY (Test) REFERENCES CONDITION (condition)
, CONSTRAINT ANALYSE_C1 CHECK (Test <> Control)
) ; |
Partager