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 ?
Partager