MCD/MLD, req algébrique/ req SQL, exercice de base

MCD/MLD, req algébrique/ req SQL, exercice de base - SQL/NoSQL - Programmation

Marsh Posté le 19-12-2011 à 22:39:01    

Bonjour à tous,
Je m'intéresse au fonctionnement des bases de données, et j'ai commencé à me documenter sur le modèle conceptuel de données et sur le modèle logique de données.
La théorie semble facile, relation hiérarchique, non hiérarchiques, cardinalités, foreign key, identifiant et j'en passe...
Je cherche à utiliser un outil pour visualiser les tables, et les relations qu'elles peuvent avoir entre elles.
 
http://img694.imageshack.us/img694/7659/mcd1.png
J'ai quelques question :
 
 
Voilà les diverses requêtes demandées :)
 
http://img841.imageshack.us/img841/3063/67970442.png


Message édité par rotamtamki le 03-01-2012 à 15:37:15
Reply

Marsh Posté le 19-12-2011 à 22:39:01   

Reply

Marsh Posté le 20-12-2011 à 17:15:37    

Voilà ce que j'ai trouvé :
Les requetes algébriques sont en rouge, les requetes sql sont en bleu

 
Requete 1 :

Matricule de Marcel Latour :
 
R1= SELECTION Technicien (Nom="Latour", Prénom="Marcel" )
R2= PROJECTION R1(matricule)

 
Requete 2 :
 
Néant
 
Requete 3:
 
nom du technicien dont le libellé du grade est "tech débutant":
 

R1= SELECTION Grade (libellé= "technicien débutant" )
R2= JOINTURE (R1,Technicien,R1.CodeGrade=Technicien.CodeGrade)
R3= PROJECTION (R2, nom)

 
SELECT nom
FROM Technicien T, Grade G
WHERE G.Codegrade=T.CodeGrade(#)
<---- On met un # ? jai vu ca dans un exo corrigé
AND libéllé="technicien débutant"
 
 
La on arrive dans des requêtes SQL un peu plus chaudes (pas sur du tout)
 
Requete 4 :
 
Nombre de techniciens dont le grade a pour code "TSB"
 

SELECT SUM (technicien) AS Nombretech
FROM technicien T, grade G
WHERE T.Code_Grade=G.Code_Grade
AND Code_GRade = "TSB"

 
Requete 5 :
 

Nom et prénom des techniciens ayant au moins une compétence dans le domaine dont le libellé est "hardware"

 
SELECT nom, prénom
FROM technicien T, qualifier Q
WHERE Q.libellé_Compétence=T.libellé_Compétence
AND Libellé_compétence="Hardware"

 
Requete 6 :
 
Nombre de compétences du technicien dont le matricule est 000217:

SELECT SUM(compétence) AS nbtechcompé
FROM technicien T,qualifier Q
WHERE Q.libellé_compétence=T.libellé_compétence
AND T.matricule="000217"

 
Requete 7 :
 
Noms et prénoms des techniciens ayant le meme grade que Samuel Vely
 

Néant

A venir


Message édité par rotamtamki le 03-01-2012 à 16:26:14
Reply

Marsh Posté le 03-01-2012 à 16:26:46    

up !
Exo mis à jour avec mes réponses !

Reply

Marsh Posté le 03-01-2012 à 16:48:12    

Pour la Requete 4:
SELECT SUM (technicien) AS Nombretech
FROM technicien T
AND Code_Grade = "TSB"  
 
-> Pas besoin de jointure vu que tu as déja la valeure.
 
Requete 5 et Requete 6:
Il manque des infos, quelles sont les colonnes dans la table Qualifier (sur quoi on fais la jointure)?
 
 

Reply

Marsh Posté le 03-01-2012 à 16:52:21    

Oliiii a écrit :

Pour la Requete 4:
SELECT SUM (technicien) AS Nombretech
FROM technicien T
AND Code_Grade = "TSB"  
 
-> Pas besoin de jointure vu que tu as déja la valeure.
 
Requete 5 et Requete 6:
Il manque des infos, quelles sont les colonnes dans la table Qualifier (sur quoi on fais la jointure)?
 
 


Bonjour,
 
Merci de ta réponse
Pour la requete 4, on cherche à connaitre le nombre de technicien avec le grade TSB. Cest vrai qu'on cherche aucune infos sur le technicien en fait ! on veut juste compter le nombre de grade dont le code est TSB, c'est ce que tu veux dire ?
 
Pour la requete 5 et 6, cest toutes les infos que j'avais sur la page d'exos qu'on ma refilé
 
 
Edit : j'ai trouvé un cours sur le net qui explique que lorsque les cardinalités sont à N de chaque côté, la table du milieu prend les identifiants de chaque table qui l'entoure !
 
Soit un MLD qui ressemble à ca :  
 
Technicien (Matricule, Civilité, Nom, Prénom, #Code grade)
Grade (Code grade, Libellé grade)
Compétence (Code compétence, Libellé compétence, #Code domaine)
Domaine (Code domaine, Libellé domaine)
Qualifier (#Code compétence,#matricule)


Message édité par rotamtamki le 03-01-2012 à 16:55:43
Reply

Marsh Posté le 03-01-2012 à 21:48:01    

Up :)

Reply

Marsh Posté le 04-01-2012 à 09:06:42    

Pour la requete 4 ce que je veux dire c'est que la clé etrangere te permet de faire ton WHERE sans avoir besoin de joindre une autre table.
 
Pour la requete 5:
SELECT T.nom, T.prénom
FROM technicien T
JOIN qualifier Q on T.Matricule = Q.Matricule
JOIN Compétence C on c.Code_compétance = Q.Code.competence
WHERE c.libellé_Compétence="Hardware"  
 
Requete 6:
SELECT SUM(Q.Code_compétence) AS nbtechcompé
FROM qualifier Q
WHERE Q.matricule="000217"

Reply

Marsh Posté le 04-01-2012 à 09:43:13    

Ok pour ces deux là,
je vais mettre à jour mon premier post avec tes rectifications. Tu as regardé le MLD ? même si c'est le plus simple, il te semble correct ?
 
merci
 
rotam

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed