Vous êtes sur la page 1sur 18

SEANCE N° 2 du 06/10/2023

CORRECTION DU DEVOIR DE MAISON ET TP D’IMPLEMENTATION

I- MODELE CONCEPTUEL DES DONNEES MCD

HOTEL
HotelCode
HotelNom
HotelNbreEtoile
HotelAdrVille
HotelEmail
HotelTel

ENCADREUR 1,n JOUEURCAF


EncadreurRef JoueurID
EncNom 1,1 MVTHOTEL
1,1 JouNom
EncPrenom dateArrivee JouPrenom
EncPosteRole dateDepart JouDateNaiss
EncContactTel JouLieuNaiss
EncEmail 0,n JouPoste
1,n 1,n
EncPasseport JouClubActuel
EncPhoto JouPasseport
NATIONPARTICIP
JouPhoto
NatParticipID
NatNom
NatSurnom
NatPoule
NatClassmtFifa
NatEmailFede
NatNbreTitre 0,n
NatPhoto
0,n

MATCHJOUER
matchNumID
matchDate
matchPhase
matchLieuStade
matchArbitre
matchButRecevant
matchButVisiteur
matchObservation
matchButeursRec
matchButeursVis

BASE DE DONNEES-II ET POO C# ENSEIGNANT : M. BANDAMAN JT 1


II- MODELE LOGIQUE DES DONNEES MLD
HOTEL (HotelCode, HotelNom, HotelNbreEtoile, HotelAdrVille, HotelEmail, HotelTel)

NATIONPARTICIP (NatParticipID, NatNom, NatSurnom, NatPoule, NatClassmtFifa,


NatEmailFede,NatNbreTitre, NatPhoto)

JOUEURCAF (JoueurID, JouNom,


JouPrenom,JouDateNaiss,JouLieuNaiss,JouPoste,JouClubActuel,
JouPasseport, JouPhoto,# NatParticipID)

ENCADREUR (DirigeantID, DirigNom, DirigPrenom, DirigPosteRole, DirigContactTel,


DirigEmail, DirigPasseport,
DirigPhoto, # NatParticipID)

MVTHOTEL (mvtHotelID, #HotelCode, # NatParticipID, dateArrivee, dateDepart)

MATCHJOUER (matchNumID, # NatParticipID1, # NatParticipID2, matchDate, matchPhase,


matchLieuStade, matchArbitre, matchButRecevant, matchButVisiteur, matchObservation,
matchButeursRec, matchButeursVis)

III- IMPLEMENTATION SOUS MS-SQL SERVER 2019


IV.1 Lancer Management studio et se connecter

Lancer management studio (ms-SQL server express


2019) et se connecter

BASE DE DONNEES-II ET POO C# ENSEIGNANT : M. BANDAMAN JT 2


IV.2 Créer une nouvelle base de données dbCAN2023Votrenom

a) Sous MS SQL SERVER 2019

CREATE DATABASE [dbCan2023Prof]

IV.3 CREER LES TABLES DE VOTRE MLD DANS LA BD DBCAN2023VOTRENOM

 Définir les attributs et leurs types


 Définir les clés primaires
 Définir les propriétés clé secondaires

CREATE TABLE [dbo].[NATIONPARTICIP]


(
[NatParticipID] [int] NOT NULL,
[NatNom] [varchar](50) NULL,
[NatSurnom] [varchar](50) NULL,
[NatPoule] [char](1) NULL,
[NatPhaseAtteinte] [varchar](10) NULL,
[NatEmailFede] [varchar](50) NULL,
[NatNbreTitre] [int] NULL,
[NatPhoto] [varbinary](max) NULL,
PRIMARY KEY ([NatParticipID]
)

IV.4 Insertion de données dans les tables

BASE DE DONNEES-II ET POO C# ENSEIGNANT : M. BANDAMAN JT 3


POULE A ---> STADE FHB ABIDJAN
NATIONS COTE D'IVOIRE MALI GUINEE GAMBIE
EQUATORIALE

JOUEURS G1, G12 G3, G11 G5, G9 G10, G8

ENCADREURS

HOTEL

POULE B ---> STADE EBIMPE ANYAMA


NATIONS SENEGAL NIGERIA RD CONGO TANZANIE

JOUEURS G2, G7 G4, G6 G6, G5 G11, G4

ENCADREURS

HOTEL

INSERT INTO NATIONPARTICIP


(NatParticipID,NatNom, NatSurnom,NatPoule)
VALUES
('207','GAMBIE','TORTUES','A'),
('243','GUINEE EQUATORIALE','','A'),
('221','SENEGAL','LIONS DE LA TERRENGA','B'),
('253','NIGERIA','SUPER EAGLES','B'),
('247','RD CONGO','','B'),
('263','TANZANIE','','B'),
('251','EGYPTE','PHARAONS','C'),
('233','GHANA','LIONS DE LA TERRENGA','C'),
('227','CAP-VERT','','C'),
('217','GUINEE BISSAU',NULL,'C')

SEANCE N° 3 du mercredi 11/10/2023


CORRECTION DU DEVOIR DE MAISON ET TP D’IMPLEMENTATION

III. LES FORMES NORMALES

BASE DE DONNEES-II ET POO C# ENSEIGNANT : M. BANDAMAN JT 4


Après avoir obtenu la liste des tables par application des règles de passage du MCD au MLD, il est
important de s’assurer, eu égard à l’importance des données contenues dans les bases de données,
de s’assurer que certaines anomalies sont identifiées et corrigées :

 Pas de problème de cohérence


 Pas d’anomalie de redondance
 Pas d’anomalie d’insertion
 Pas d’anomalie de suppression
 Pas d’anomalie de mise à jour

TABLES ETUDIANT
etuMatri etuNomPrenom etuAdresse codeFiliere nomFiliere
c
19-0001 BA ADJA MARIAM 20 BP 147 ABIDJAN20 GLOG, Génie logiciel,
GCIV Génie civil
20-1010 DIEI SALOMON 145 cocody rue des GLOG Génie logiciel
agoutis
22-2020 MALICK DOMINIQUE 63 bassam rue HKB GLOG Génie logiciel
21-1010 COMPAORE 145 rue des agoutis CPTA comptabilite
KADIDIATOU
22-2020 DIOMANDE AZZIZ 17 BP 456 ABIDJAN 17 GLOG Génie logiciel
ADJAME 220 logements

a. La colonne etuNomPrenom n’est pas atomique (nom, prénom)


b. La colonne etuAdresse n’est pas atomique (code postal, ville, rue)
c. La colonne codeFiliere n’est pas atomique (liste de code)
d. Si une nouvelle filière TRANSPORT – LOGISTIQUE est créée il est impossible d’insérer
cette filière sans créer un étudiant de cette filière (anomalie d’insertion)
e. Si l’on supprime tous les enregistrements nous perdons toutes information sur les filières
existantes (Anomalie de suppression)
f. Si l’on décide de changer le nom de la filière GENIE LOGICIEL en INFORMATIQUE ET
DEVELOPPEMENT D’APPLICATIONS il est nécessaire de modifier toutes les lignes des
étudiants en GENIE LOGICIEL

III.1. PREMIERE FORME NORMALE 1NF (contenu des attributs)

 1ère FORME NORMALE 1NF


Une table (Relation) est en 1NF si
- Tous les attributs ont une valeur atomique (une seule valeur, pas de liste)

NOM MONTANT ADRESSE


Delano Franklin ROOSEVELT 20£ 64, bvd DAVOUT Paris
Félix HOUPHOUET-BOIGNY 570 CFA COCODY 27 rue J. AKA
François MITTERAND 963 USD

a) L’attribut « NOM » n’est pas atomique (on peut le décomposer en nom et prénoms)
b) L’attribut « MONTANT » n’est pas atomique (On a des valeurs en CFA, USD, £) les
valeurs ne sont pas de même type

BASE DE DONNEES-II ET POO C# ENSEIGNANT : M. BANDAMAN JT 5


c) L’attribut Adresse n’est pas atomique (adresse, rue, commune)

IDPersonne NomPersonne PrenomEnfant


1010 COMPAORE KADIDIATOU JEROME, ROSE, AKISSI
2020 KONAN HENRI LUCETTE, LUC, PATRICK

Les valeurs de l’attribut « PrenomEnfant » constituent une liste si la personne a plusieurs


enfants

III.2. DEUXIEME FORME NORMALE 2NF (table à clé composée)

 2e FORME NORMALE
Une table (Relation) est en 2NF si :
- Elle est en 1NF
- Tout attribut n’appartenant pas à la clé, dépend de la totalité de la clé (et pas d’une partie
seulement de la clé)

EVALUATION (CodeMatiere, MatriEtudiant, Moyenne, Rang, NomEtudiant)

L’attribut nomEtudiant dépend uniquement de MatriEtudiant et non pas de la totalité de


la clé primaire.

SOLUTION
EVALUATION (CodeMatiere, MatriEtudiant, Moyenne, Rang)
ETUDIAN (MatriEtudiant, NomEtudiant ,...)

III.3. TROISIEME FORME NORMALE 3NF (dépendance transitive)

 3e FORME NORMALE
Une table (Relation) est en 3NF si :
- Elle est en 2NF
- Aucun attribut ne faisant pas partie de la clé primaire ne doit dépendre d'une partie
des autres attributs ne faisant pas non plus partie de la clé primaire

EtuMatricule EtuNom EtuPrenom FiliereCode FiliereNom


1010 OULD MOHAMED GL GENIE LOGICIEL
2020 KOKOBE JEMIMA RT RESEAU TELECOM
3030 KODJO AMANCHI GL GENIE LOGICIEL

EtuMatricule  FiliereCode ET FiliereCode  FiliereNom DONC

EtuMatricule  FiliereNom PAR TRANSITIVITÉ

EtuMatricule EtuNom EtuPrenom FiliereCode


1010 OULD MOHAMED GL
2020 KOKOBE JEMIMA RT
3030 KODJO AMANCHI GL

BASE DE DONNEES-II ET POO C# ENSEIGNANT : M. BANDAMAN JT 6


FiliereCode FiliereNom
GL GENIE LOGICIEL
RT RESEAU TELECOM

IV- IMPLEMENTATION SOUS MySQL


a. Démarrer phpMyAdmin

IV-1 CREATION DE LA BD

 Panel de gauche / Clic sur


Nouvelle base de données
/bouton CREER

IV-1 COMMANDES SQL

1. CREATION D’UNE BASE DE DONNEES : CREATE DATABASE

SYNTAXE SQL EXEMPLE


CREATE DATABASE [IF NOT EXISTS] CREATE DATABASE IF NOT EXISTS
Nom_de_la_BD dbCan2023

2. CREATION D’UNE TABLE : CREATE TABLE

BASE DE DONNEES-II ET POO C# ENSEIGNANT : M. BANDAMAN JT 7


SYNTAXE SQL EXEMPLE
[USE Nom_de_la_BD] Use dbCan2023
CREATE TABLE [IF NOT EXISTS] CREATE TABLE IF NOT EXISTS Joueur
Nom_de_la_Table (
( joueurID int,
column_1_definition,
jouNom varchar(50),
column_2_definition,
...,
jouPrenom varchar(70),
table_constraints natParticipID int,
) PRIMARY KEY (joueurID),
FOREIGN KEY (natParticipID)
REFERENCES NATIONPARTICIP
(natParticipID)

3. DEFINIR LA CLE ETRANGERE D’1 TABLE MySQL

 Sélectionner la table / Afficher la structure / sélectionner la colonne à


définir comme clé étrangère/Click sur vue relationnelle
 Créer un index

4. MODIFIER LA STRUCTURE D’UNE TABLE


o Ajouter une nouvelle colonne
SYNTAXE SQL EXEMPLE
ALTER TABLE nomDeLaTable ALTER TABLE Nationparticip
ADD nomCol typeDonnées ADD modifDate datetime ;

o Supprimer une colonne

SYNTAXE SQL EXEMPLE


ALTER TABLE nomDeLaTable ALTER TABLE Nationparticip
DROP nomCol DROP modifDate

BASE DE DONNEES-II ET POO C# ENSEIGNANT : M. BANDAMAN JT 8


o Renommer une colonne

SYNTAXE SQL EXEMPLE


ALTER TABLE nomDeLaTable
CHANGE Col_AncienNom Col_NewNom TypeDonnées

o Modifier le type d’une colonne

SYNTAXE SQL EXEMPLE


ALTER TABLE nomDeLaTable ALTER TABLE Nationparticip
MODIFY nomCol newtypeDonnées MODIFY modifDate date ;

5. SUPPRIMER UNE TABLE DE LA BASE DE DONNEES

SYNTAXE SQL EXEMPLE

DROP TABLE nomDeLaTable DROP TABLE Nationparticip

6. INSERTION DE DONNEES DANS UNE TABLE : INSERT INTO

SYNTAXE SQL EXEMPLE


[USE Nom_de_la_BD] USE dbCan2023Prof
INSERT INTO Nom_de_la_Table INSERT INTO NATIONPARTICIP
( (NatParticipID,NatNom, NatSurnom,NatPoule)
column_1_nom, column_2_nom, VALUES
('27','AFRIQUE DU SUD','BAFANA BANFANA','D'),
..., column_N_nom
('242','CONGO BRAZZA','','D'),
)
('258','MOZAMBIQUE','','D'),
VALUES ('222','MAURITANIE','','D'),
(Liste de valeur 1), ('216','TUNISIE','','E'),
(Liste de valeur 2), ('212','MAROC','','E'),
… ('264','NAMIBIE', null,'E'),
(Liste de valeur N) ('260','ZAMBIE','','E'),
('244','ANGOLA','','F'),
('217','ALGERIE',NULL,'F')

BASE DE DONNEES-II ET POO C# ENSEIGNANT : M. BANDAMAN JT 9


SYNTAXE SQL EXEMPLE
[USE Nom_de_la_BD]
INSERT INTO Nom_de_la_Table INSERT INTO JOUEURCAF
( (JoueurID, JouNom,JouPrenom,JouNumDossard,NatParticipID)
column_1_nom, column_2_nom, VALUES
..., column_n_nom ('mal-2121','TRAORE','HAMARI',2, 223),
) ('mal-0335','KOITA','SEKOU', 20, 223),
VALUES ('mal-6664','DIARRA','GUIGUI', 1, 223)
(Liste de valeur 1),
(Liste de valeur 2),

(Liste de valeur N)

7. MODIFIER LES DONNEES D’UNE TABLE

SYNTAXE SQL EXEMPLE


[USE Nom_de_la_BD] USE dbCan2023Prof
UPDATE Nom_de_la_Table UPDATE JOUEURCAF
SET SET
Col1 = valeur1, natNom = 'REPUBLIQUE D''EBURNIE',
Col2 = valeur2, natEmailFede='fede@eburnie.ebu'
… WHERE natParticipID=225 ;
Coln = valeurn
WHERE condition

8. SUPPRIMER LES DONNEES D’UNE TABLE

SYNTAXE SQL EXEMPLE


[USE Nom_de_la_BD] USE dbCan2023Prof
DELETE FROM Nom_de_la_Table DELETE FROM NATIONPARTICIP
WHERE conditions WHERE natPoule=’G’ ;

DELETE FROM Utilisateur ;

TRUNCATE TABLE Utilisateur ;

9. RECHERCHE DE DONNEES DANS UNE TABLE : SELECT

SYNTAXE SQL EXEMPLE


[USE Nom_de_la_BD] USE dbCan2023Prof
SELECT (Col1, col2, …, colN) SELECT
FROM nomDeTable NatParticipID,NatNom,NatSurnom,NatPoule
WHERE conditions FROM NATIONPARTICIP
WHERE natPoule=’A’ ;

SELECT DISTINCT

BASE DE DONNEES-II ET POO C# ENSEIGNANT : M. BANDAMAN JT 10


SEANCE N° 4 du vendredi 13/10/2023
INTERFACE VISUAL STUDIO 2022 C#
CONNEXION A UNE BD MS-SQL SERVER
CONNEXION A UNE BD MYSQL

V- INTERFACE VISUAL STUDIO 2022 C#

BASE DE DONNEES-II ET POO C# ENSEIGNANT : M. BANDAMAN JT 11


V-1 CONCEPTION DE FORMULAIRES D’INTERFACE HOMME-MACHINE

V-2 CONNEXION VS-2022 BD SQL-SERVER 2019

 Lancer VS 2022
 Afficher l’explorateur de serveur
 Connexion à la base de données

BASE DE DONNEES-II ET POO C# ENSEIGNANT : M. BANDAMAN JT 12


 Renseigner le nom du serveur
(local)

(local)\SQLEXPRESS
Selon les paramètres d’installation de SQL SERVER 2019
 Indiquer la Base de Données puis tester la connexion
 La connexion est établie et s’aperçoit
dans l’explorateur de serveurs

V-3 CONNEXION VS-2022 BD SQMySQL

 Configuration de VS 2022 pour MySQL


Outils /Gestionnaire de package nuget /Gérer les packages nuget pour la solution…

BASE DE DONNEES-II ET POO C# ENSEIGNANT : M. BANDAMAN JT 13


SEANCE N° 5 du Mercredi 18/10/2023
INTERFACE VISUAL STUDIO 2022 C#
CONNEXION A UNE BD MS-SQL SERVER
CONNEXION A UNE BD MYSQL

BASE DE DONNEES-II ET POO C# ENSEIGNANT : M. BANDAMAN JT 14


Jointure SQL
Les jointures en SQL permettent d’associer plusieurs tables dans une même requête. Cela
permet d’exploiter la puissance des bases de données relationnelles pour obtenir des résultats
qui combinent les données de plusieurs tables de manière efficace.
Exemple
En général, les jointures consistent à associer des lignes de 2 tables en associant l’égalité des
valeurs d’une colonne d’une première table par rapport à la valeur d’une colonne d’une
seconde table. Imaginons qu’une base de 2 données possède une table “utilisateur” et une
autre table “adresse” qui contient les adresses de ces utilisateurs. Avec une jointure, il est
possible d’obtenir les données de l’utilisateur et de son adresse en une seule requête.
On peut aussi imaginer qu’un site web possède une table pour les articles (titre, contenu, date
de publication …) et une autre pour les rédacteurs (nom, date d’inscription, date de naissance
…). Avec une jointure il est possible d’effectuer une seule recherche pour afficher un article et
le nom du rédacteur. Cela évite d’avoir à afficher le nom du rédacteur dans la table “article”.
Il y a d’autres cas de jointures, incluant des jointures sur la même table ou des jointure
d’inégalité. Ces cas étant assez particulier et pas si simple à comprendre, ils ne seront pas
élaboré sur cette page.
Types de jointures
Il y a plusieurs méthodes pour associer 2 tables ensemble. Voici la liste des différentes
techniques qui sont utilisées :
 INNER JOIN : jointure interne pour retourner les enregistrements quand la condition
est vrai dans les 2 tables. C’est l’une des jointures les plus communes.
 CROSS JOIN : jointure croisée permettant de faire le produit cartésien de 2 tables. En
d’autres mots, permet de joindre chaque lignes d’une table avec chaque lignes d’une
seconde table. Attention, le nombre de résultats est en général très élevé.
 LEFT JOIN (ou LEFT OUTER JOIN) : jointure externe pour retourner tous les
enregistrements de la table de gauche (LEFT = gauche) même si la condition n’est pas
vérifié dans l’autre table.
 RIGHT JOIN (ou RIGHT OUTER JOIN) : jointure externe pour retourner tous les
enregistrements de la table de droite (RIGHT = droite) même si la condition n’est pas
vérifié dans l’autre table.
 FULL JOIN (ou FULL OUTER JOIN) : jointure externe pour retourner les résultats
quand la condition est vrai dans au moins une des 2 tables.
 SELF JOIN : permet d’effectuer une jointure d’une table avec elle-même comme si c’était
une autre table.
 NATURAL JOIN : jointure naturelle entre 2 tables s’il y a au moins une colonne qui
porte le même nom entre les 2 tables SQL
 UNION JOIN : jointure d’union

Exemples de jointures
INNER JOIN

BASE DE DONNEES-II ET POO C# ENSEIGNANT : M. BANDAMAN JT 15


Intersection de 2 ensembles

SELECT *
FROM A
INNER JOIN B ON A.key = B.key

LEFT JOIN

Jointure gauche (LEFT JOINT)

SELECT *
FROM A
LEFT JOIN B ON A.key = B.key

LEFT JOIN (sans l’intersection de B)

Jointure gauche (LEFT JOINT sans l’intersection B)


SELECT *
FROM A
LEFT JOIN B ON A.key = B.key
WHERE B.key IS NULL
RIGHT JOIN

BASE DE DONNEES-II ET POO C# ENSEIGNANT : M. BANDAMAN JT 16


Jointure droite (RIGHT JOINT)
SELECT *
FROM A
RIGHT JOIN B ON A.key = B.key
RIGHT JOIN (sans l’intersection de A)

Jointure droite (RIGHT JOINT sans l’intersection A)


SELECT *
FROM A
RIGHT JOIN B ON A.key = B.key
WHERE B.key IS NULL
FULL JOIN

Union de 2 ensembles

SELECT * FROM A FULL JOIN B ON A.key = B.key


FULL JOIN (sans intersection)

Jointure pleine (FULL JOINT sans intersection)

BASE DE DONNEES-II ET POO C# ENSEIGNANT : M. BANDAMAN JT 17


SELECT *
FROM A
FULL JOIN B ON A.key = B.key
WHERE A.key IS NULL
OR B.key IS NULL
P

BASE DE DONNEES-II ET POO C# ENSEIGNANT : M. BANDAMAN JT 18

Vous aimerez peut-être aussi