Base de données 1 Flashcards
(37 cards)
Association : A –0..1—-0..*–B
R_A (#A_clé, A_att)
R_B (#B_clé, B_att, A_clé=>R_A)
Association : A –1—-0..*–B
R_A (#A_clé, A_att)
R_B (#B_clé, B_att, A_clé=>R_A)
A_clé NOT NULL
Association : A –1—-1..*–B
R_A (#A_clé, A_att)
R_A IN R_B
R_B (#B_clé, B_att, A_clé=>R_A)
A_clé NOT NULL
Classe d’association :
A –0..1–◇–0..*–B
R_A (#A_clé, A_att)
R_B (#B_clé, B_att, A_clé=>R_A, Association_att)
Classe d’association :
A –1–◇–1..*–B
R_A (#A_clé, A_att)
R_A IN R_B
R_B (#B_clé, B_att, A_clé=>R_A, Association_att)
A_clé NOT NULL
Association : A –0..*—-0..et–B
R_A (#A_clé, A_att)
R_B (#B_clé, B_att)
R_AB (#(A_clé=>R_A, B_clé=>R_B))
Association : A –1..—-1..–B
R_A (#A_clé, A_att)
R_A IN R_AB
R_B (#B_clé, B_att)
R_B IN R_AB
R_AB (#(A_clé=>R_A, B_clé=>R_B))
Classe d’association :
A –0..–◇–0..–B
R_A (#A_clé, A_att)
R_B (#B_clé, B_att)
R_AB (#(A_clé=>R_A, B_clé=>R_B, Asso_clé_loc), Asso_att)
Classe d’association :
A –1..–◇–1..–B
R_A (#A_clé, A_att)
R_A IN R_AB
R_B (#B_clé, B_att)
R_B IN R_AB
R_AB (#(A_clé=>R_A, B_clé=>R_B, Asso_clé_loc), Asso_att)
Association : C ⯁–1—-0..*–D
R_C (#C_clé, C_att)
R_D (#(D_clé, C_clé=>R_C), D_att)
Association : C ⯁–1—-1..*–D
R_C (#C_clé, C_att)
R_C IN R_D
R_D (#(D_clé, C_clé=>R_C), D_att)
Association : C ⯁–1—-0..*–D
avec clé étrangère dans D
R_C (#C_clé, C_att)
R_D (#(D_att, C_clé=>R_C))
Association : C ⯁–1—-0..*–D
avec 2 clé étrangère dans D
R_C (#C_clé, C_att)
R_D (#(D_att1, D_att2, C_clé=>R_C))
Association : A –(0..)1—-(0..)1–B
R_A (#A_clé, A_att)
R_A IN R_B
R_B (#B_clé, B_att, A_clé=>R_A)
clé(A_clé=>R_A) ou A_clé=>R_A UNIQUE
ou
R_AB (#A_clé, A_att, B_clé, B_att)
clé(B_clé) ou B_clé UNIQUE
Association : A –1—-1–B
version simple
R_AB (#A_clé, A_att, B_clé, B_att)
clé(B_clé)
ou
R_AB (#B_clé, B_att, A_clé, A_att)
clé(A_clé)
Association : A –1—-1–B
version complexe
R_A (#A_clé, A_att)
R_A IN R_B
R_B (#B_clé, B_att, A_clé=>R_A)
clé(A_clé=>R_A)
ou
R_B (#B_clé, B_att)
R_B IN R_A
R_A (#A_clé, A_att, B_clé=>R_B)
clé(B_clé=>R_B)
Association : A –1—-0..1–B
R_A (#A_clé, A_att)
R_B (#B_clé, B_att, A_clé=>R_A)
clé(A_clé=>R_A)
ou
R_AB (#A_clé, A_att, B_clé, B_att)
B_clé UNIQUE
Association : A –0..1—-0..1–B
R_A (#A_clé, A_att)
R_B (#B_clé, B_att, A_clé=>R_A)
A_clé=>R_A UNIQUE
Traduction par référence
Classe mère : clé + att
Classe fille 1 : clé + att
Classe fille 2 : clé + att
R_M (#M_clé, M_att)
R_F1 (#M1_clé=>R_M, F1_clé, F1_att)
clé(F1_clé)
R_F2 (#M2_clé=>R_M, F2_clé, F2_att)
clé(F2_clé)
V_F1 = join (R_M, R_F1, M_clé = M1_clé)
V_F2 = join (R_M, R_F2, M_clé = M2_clé)
Héritage non exclusif
Classe mère non abstraite
Traduction par classe fille
Classe mère : clé + att
Classe fille 1 : clé + att
Classe fille 2 : clé + att
R_F1 (#M1_clé, M1_att, F1_clé, F1_att)
clé(F1_clé)
R_F2 (#M2_clé, M2_att, F2_clé, F2_att)
clé(F2_clé)
Héritage exclusif
Classe mère abstraite
Traduction par classe mère
Classe mère : clé + att
Classe fille 1 : clé + att
Classe fille 2 : clé + att
V1
R_MF1F2 (#M_clé, M_att, F1_clé, F1_att, F2_cle, F2_att, type: {M, F1, F2, F12})
F1_clé et F2_clé UNIQUE
F1_clé et F2_clé NOT NULL
V_M = restriction (R_MF1F2, type=’M’)
V_F1 = restriction (R_MF1F2, type={‘F1’|’F1F2’})
V_F2 = restriction (R_MF1F2, type={‘F2’|’F1F2’})
V2
R_MF1F2 (#M_clé, M_att, F1_clé, F1_att, F2_cle, F2_att, type: {F1, F2, F12})
F1_clé et F2_clé UNIQUE
V_F1 = restriction (R_MF1F2, type={‘F1’|’F1F2’})
V_F2 = restriction (R_MF1F2, type={‘F2’|’F1F2’})
Héritage (presque) sans spécificité
Classe mère non abstraite
Dépendance fonctionnelle (DF)
X determine fonctionnellement Y ou Y depend fonctionnellement de X
( X -> Y)
si pour tout tuple t1 et t2 de R
t1[X] = t2[X] alors t2[Y] = t2[Y]
Règles d’inférence de DF
- Réflexivité : YcX => X -> Y
- Augmentation : X -> Y => XZ -> YZ
- Transitivité : X -> Y et Y -> Z => X -> Z
- Pseudo transitivité : X -> Y et WY -> Z => WX -> Z
DF élémentaire
X -> Y où Y n’a qu’un seul attribut