diff --git a/DB Implementation/TP/TP1/pdn.md b/DB Implementation/TP/TP1/pdn.md
index e222137c66b849f8e38571b829ee766feb37ad51..0b20dce72f515f21e2d687919b5271ad6da87924 100644
--- a/DB Implementation/TP/TP1/pdn.md	
+++ b/DB Implementation/TP/TP1/pdn.md	
@@ -325,7 +325,7 @@ table(DELEGUE) {
 ETUDIANT "1" -- "0..*" GROUPE : est dans
 GROUPE "1" -- "0..*" INSCRIPTION : a pour étudiant
 INSCRIPTION "1" -- "1" ETUDIANT : est pour
-COURS "1" -- "0..*" INSCRIPTION : a pour étudiant
+COURS "1" - "0..*" INSCRIPTION : a pour étudiant
 DELEGUE "1" -- "1" GROUPE : est pour
 DELEGUE "1" -- "1" ETUDIANT : est pour
 
diff --git a/DB Implementation/cm2.pdf b/DB Implementation/cm2.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..f318a3ada7047134283c46647b0c592ec69f6bc8
Binary files /dev/null and b/DB Implementation/cm2.pdf differ
diff --git a/DB Implementation/pdn.md b/DB Implementation/pdn.md
index b0249cde9244cdae17f3ea28b74d66301832c13b..1b8baa7c86b68c3b7634ee5ff75e037b32e26398 100644
--- a/DB Implementation/pdn.md	
+++ b/DB Implementation/pdn.md	
@@ -130,4 +130,92 @@ On obtient donc :
 
 > **Que se passe-t-il avec : `DELETE FROM Conference WHERE idConf = 0` ?**
 
-La suppression est possible car la clé primaire n'est pas violée. Il existe bien une clé primaire avec `idConf` = 0.
\ No newline at end of file
+La suppression est possible car la clé primaire n'est pas violée. Il existe bien une clé primaire avec `idConf` = 0.
+
+
+# Cours Magistral 2
+
+## TD2
+
+### Exercice 1
+
+Implémenter les fonctions suivantes :
+
+- Le client 0 ajoute des carottes à son panier
+- Le prix des pommes augmente de 1€
+- Supprimer les carottes des produits disponibles
+
+On se base des tables suivantes :
+
+Somme :
+
+| Client | Total |
+|--------|-------|
+| 0 | 10 |
+| 1 | 5 |
+
+Panier :
+
+| Client | Produit |
+|--------|---------|
+| 0 | 0 |
+| 0 | 1 |
+| 1 | 0 |
+
+Produit :
+
+| Produit | Nom | Prix |
+|---------|-----|------|
+| 0 | pommes | 5 |
+| 1 | poires | 5 |
+| 2 | carottes | 3 |
+
+#### Question 1
+
+> **Le client 0 ajoute des carottes à son panier**
+
+```sql
+-- On ajoute les carottes au panier
+INSERT INTO Panier VALUES (0, 2);
+
+-- On récupère le prix des carottes
+prixCarottes <- SELECT Prix FROM Produit WHERE Produit = 2;
+
+-- On met à jour le total du client 0
+UPDATE Somme SET Total = Total + prixCarottes WHERE Client = 0;
+```
+
+#### Question 2
+
+> **Le prix des pommes augmente de 1€**
+
+```sql
+-- On met à jour le prix des pommes
+UPDATE Produit SET Prix = Prix + 1 WHERE Produit = 0;
+
+-- On récupère le prix des pommes
+prixPommes <- SELECT Prix FROM Produit WHERE Produit = 0;
+
+-- On met à jour le total de chaque client si il y a des pommes dans son panier
+UPDATE Somme SET Total = Total + prixPommes WHERE Client IN (SELECT Client FROM Panier WHERE Produit = 0);
+```
+
+#### Question 3
+
+> **Supprimer les carottes des produits disponibles**
+
+```sql
+-- On récupère le prix des carottes
+prixCarottes <- SELECT Prix FROM Produit WHERE Produit = 2;
+
+-- On met à jour le total de chaque client si il y a des carottes dans son panier
+UPDATE Somme SET Total = Total - prixCarottes WHERE Client IN (SELECT Client FROM Panier WHERE Produit = 2);
+
+-- On supprime les carottes du panier
+DELETE FROM Panier WHERE Produit = 2;
+-- On supprime les carottes des produits disponibles
+DELETE FROM Produit WHERE Produit = 2;
+```
+
+Note : L'ordre est important dans les requêtes sinon il peut y avoir des erreurs soit d'execution soit de calcul.
+