Base de données 1 Flashcards
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
DF non triviale
élimination des DF déduites par réflexivité ou augmentation
ie A n’appartenant pas à X et il n’existe pas de X’ compris dans X tq X’ -> A
fermeture transitive
ensemble de DF augmenté de celles obtenues par transitivité
couverture mini
sous-ens min de DF élémentaires permettant de générer ttes les autres
1FN
si tout attribut contient 1 valeur monovaluée et non composée (pas de n-uplets)
2FN
1FN + tous les att non clés dpd de la totalité de la clé ou il n’existe pas de DF
ie MG -> MD tq MG c clé
3FN
2FN + pas d’att n’appartenant pas à la clé, qui dpd de la clé par transitivité ou il n’existe pas de DF
ie MG -> MD tq MG inter clé = ens vide
Théorème
Tte relation R a une (ou plusieurs) décompositions en 3FN tq la décomposition préserve DF et qu’elle est sans perte
BCFN
Forme normale de Boyce-Codd
3FN + les seules dpdces non triviales sont celles dans lesquelles une clé détermine un ou plusieurs attributs
ie il n’existe pas de DF MG -> MD tq MG different de clé
Dépendance multivaluée (DM)
X -» Y si pour une valeur de X, il y a un ensemble de valeur de Y associées et cet ensemble est indpdt de Z=R{X,Y}
4FN
si tte DM X -» Y avec X c_ R et Y c_R, l’un au moins des Prop suivantes est vérifié :
- X -» Y est triviale
- X est clé de R
1 4FN ne contient que des DF ou 1 seule DM
TH 2
Tte relation à une décomposition en 4FN sans perte de données
5FN
suppression des redondances