Bonjour,

j'ai élaboré avec Looping un MCD pour modéliser ce que je mets dans le titre.

Le MCD est :
Nom : licences.png
Affichages : 158
Taille : 14,5 Ko

Les DDL des 3 tables sont :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
CREATE TABLE t_US_user(
   user_ident INT UNSIGNED AUTO_INCREMENT,
   user_sesaid INT NOT NULL,
   user_firstname VARCHAR(100) NOT NULL,
   user_lastname VARCHAR(100) NOT NULL,
   user_email VARCHAR(255),
   PRIMARY KEY(user_ident)
);

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
CREATE TABLE t_LI_license(
   lic_ident INT UNSIGNED AUTO_INCREMENT,
   lic_date_start DATETIME NOT NULL,
   lic_end_date DATETIME NOT NULL,
   app_ident INT UNSIGNED NOT NULL,
   user_ident INT UNSIGNED NOT NULL,
   PRIMARY KEY(lic_ident),
   FOREIGN KEY(app_ident) REFERENCES t_AP_application(app_ident),
   FOREIGN KEY(user_ident) REFERENCES t_US_user(user_ident)
);

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
CREATE TABLE t_AP_application(
   app_ident INT UNSIGNED AUTO_INCREMENT,
   app_name VARCHAR(100),
   PRIMARY KEY(app_ident)
);

Les règles de gestion sont les suivantes :
R1-une licence est possédée par un (et un seul) et porte sur une application (et une seule)

R2-une license a une date de début (forcément) et une date de fin (éventuellement)

R3-un utilisateur a un identifiant (user_sesaid), un prénom, un nom et une adresse mail
Je fais la requête suivante pour avoir la liste des licences :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT AP.app_name,US.user_sesaid from  t_AP_application AS AP 
INNER JOIN t_LI_license AS L ON L.app_ident=AP.app_ident 
INNER JOIN t_US_user AS US ON US.user_ident=L.user_ident
Je m'attendais à avoir des couples (utilisateur /application) uniques. Or dans la réponse, il y a entre autres 8 fois le même couple.

Je ne mets pas le contenu des tables car c'est immense et il y a des données confidentielles mais en ai-je donné assez pour qu'on me dise où est l'erreur ?