Bonjour

Concept de cle étranger

voici la vision table tbr_0110 est lié à tbr_0120 par le champ Code_tbr_0110 .
La table tbr_0110 et tbr_0110_a de légere différence sont les clé primaire
Pour ces 2 tables les champs suivant sont fixes.
Type_enr ='0110'
Drapeau = 'C'

Pour les 4 champ suivant la valeur est unique (Type_enr , Drapeau , Code_tbr_0110 , Date_debut) raison de sa définition de cle primaire pour la table tbr_0110_a.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
CREATE TABLE tbr_0110 (
        Type_enr varchar(4) ,
        Drapeau varchar(1),
        Code_tbr_0110  varchar(10) NOT NULL PRIMARY KEY ,
        Date_debut   DATE,
        Date_fin DATE,
        Libelle varchar(50)       
        );
 
 CREATE TABLE TRB_GE_0120 (
            Type_enr varchar(4),
            Drapeau varchar(1),
            Code_tbr_0110  varchar(10),
            Code_tbr_0120 varchar(10),
            Date_debut  DATE,
            Date_fin DATE,
            Description varchar(250),
            Ordre_vente INTEGER,
            nb_de_valeur INTEGER,
            CONSTRAINT TRB_GE_0120_PK PRIMARY KEY (Code_tbr_0110 , Code_tbr_0120 , Date_debut ) ,
            FOREIGN KEY(Code_tbr_0110) REFERENCES tbr_0110 (Code_tbr_0110)
             );
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CREATE TABLE tbr_0110_a (
        Type_enr varchar(4) ,
        Drapeau varchar(1),
        Code_tbr_0110  varchar(10) ,
        Date_debut   DATE,
        Date_fin DATE,
        Libelle varchar(50),
		CONSTRAINT tbr_0110_PK PRIMARY KEY (Type_enr , Drapeau , Code_tbr_0110 , Date_debut) 
        );
 
CREATE TABLE tbr_0120_a (
            Type_enr varchar(4),
            Drapeau varchar(1),
            Code_tbr_0110  varchar(10),
            Code_tbr_0120 varchar(10),
            Date_debut  DATE,
            Date_fin DATE,
            Description varchar(250),
            Ordre_vente INTEGER,
            nb_de_valeur INTEGER,
            CONSTRAINT tbr_0120_a_pk PRIMARY KEY (Type_enr , Drapeau ,Code_tbr_0110 , Code_tbr_0120 , Date_debut ) ,
            FOREIGN KEY(Code_tbr_0110) REFERENCES tbr_0110_a (Code_tbr_0110)
             );

mon problème est sur la définition FOREIGN KEY dans tbr_0120_a , la creation de la table tbr_0120_a.

Le système refuse de définir la clé étrangere car il ne s'agit pas d'un clé primaire de la table tbr_0110_a.

alors pourquoi ne pas utiliser les champs de la cle primaire de la table tbr_0110_a (Type_enr , Drapeau , Code_tbr_0110 , Date_debut) et bien parce que le contenu des champs Date_debut et Date_fin sont des valeurs unique à chaque table .

on peu ainsi avoir
table tbr_0110_a
Type_enr Drapeau Code_tbr_0110 Date_debut Date_fin Libelle
'0110' 'c' 'TAX456' 01/01/2010 null valeur des codages TAX456
'0110' 'c' 'XME16' 01/01/2015 null valeur des ecarts




table tbr_0110_a
Type_enr Drapeau Code_tbr_0110 Code_tbr_0120 Date_debut Date_fin Description Ordre_vente nb_de_valeur
'0120' 'c' 'TAX456' 'Oker77' 01/02/2011 31/12/2013 Traitement des informations 1 22
'0120' 'c' 'TAX456' 'OPER456' 01/01/2015 31/12/2017 Traitement des affectation 2 17
'0120' 'c' 'XME16' 'Aw15' 01/01/2010 null Traitement operation complexe 1 33

Quelle serait selon vous la FOREIGN KEY a creer pour tbr_0120_a ?

Comment creer un lien entre ces 2 tables ?