Bonjour,
j'ai élaboré avec Looping un MCD pour modéliser ce que je mets dans le titre.
Le MCD est :
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 :
Je fais la requête suivante pour avoir la liste des licences :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 mailJe m'attendais à avoir des couples (utilisateur /application) uniques. Or dans la réponse, il y a entre autres 8 fois le même couple.
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 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 ?










Répondre avec citation
Partager