Requêtes SQL, faux ou correct ? [SQL] - SQL/NoSQL - Programmation
Marsh Posté le 05-05-2009 à 12:12:31
faboun_21 a écrit : Bonjour, |
Idem précédemment
Marsh Posté le 05-05-2009 à 14:14:11
C'est pas du SQL ça !?
Qu'est-ce que c'est ?
Marsh Posté le 05-05-2009 à 14:28:17
ReplyMarsh Posté le 06-05-2009 à 09:35:27
infoman64 a écrit : c'est un truc algebre relationnel je crois, |
Je confirme, c'est de l'algèbre relationnel.
Quand tu démarre sur les bases de données, tu commence par apprendre à créer des shémas conceptuels de type entité/association.
Puis les schémas relationnels, puis l'algèbre relationnel, puis les requêtes SQL.
Marsh Posté le 06-05-2009 à 09:54:09
J'ai un parcours IG, et je n'ai jamais fait d'algèbre relationnel.
Ca fait partie de Merise ? Si oui, c'est un passage que j'ai dû râter
Marsh Posté le 06-05-2009 à 11:00:39
kao98 a écrit : J'ai un parcours IG, et je n'ai jamais fait d'algèbre relationnel. |
Affirmatif c'est la base de toutes les gestions de base de données, a fortiori Merise.
Toi ou ton formateur avez du effectivement squizer quelques cours.
Marsh Posté le 06-05-2009 à 11:09:47
wakat a écrit : |
Exagère pas non plus.
J'ai vérifié. Dans Merise : point d'algèbre relationnelle.
Et c'est tellement la base de tout modèle relationnel qu'on en croise, d'ailleurs, à tous les coins des forums et du web !
Et vu comment ça a l'air super utile, je regrette pas forcément de ne pas m'être attardé sur ce sujet.
Ca ressemble à un truc de mathématicien.
Marsh Posté le 06-05-2009 à 11:17:11
c'est vrai que moi aussi dans ma formation je n'est jamais vu cette partie,
et jamais entendu parlé.
J'etait juste tombe dessus par hasard, sur le net
ca a une utilité cette forme de notation?
ca aide a mieux comprendre les requetes?
je pense que ca doit servir a quelque chose.
Marsh Posté le 06-05-2009 à 11:18:35
En fait, si j'ai bien compris, c'est un concept différent de Merise, une approche plus mathématique de la modèlisation des données.
Mes cours à l'époque, et mon expérience depuis, étant plutôt tourné vers Merise/2, je comprends que j'ai pu passer à côté.
Ca peut être intéressant pour avoir une approche plus ensembliste des données.
Marsh Posté le 06-05-2009 à 11:22:00
ReplyMarsh Posté le 06-05-2009 à 12:15:44
infoman64 a écrit : ah ok, mais comme je sais pas ce qu'est merise |
En effet on peut dire que ça aide à mieux comprendre les requêtes.
Exemple:
RAH0=PROJ(Detail ;No_Command;No_Article Comme “001025”)
CETTE REQUETE SERA UTILISEE COMME SOUS REQUETE.
RAH1=JOIN (Ventes, Clientel ; Ventes.No_Client=Clientel.No_Client Et Ventes.No_Command Dans(Rah0) ; No_Client, Societe, Nom, Prenom)
RAH= SELECT DISTINCT Clientel.No_Client, Societe, Nom, Prenom
FROM Ventes, Clientel
WHERE Ventes.No_Client=Clientel.No_Client
AND Ventes.No_Command IN (SELECT DISTINCT No_Command
FROM Detail WHERE No_Article LIKE"001025" );
Avec l'algèbre relationnel, tu vois clairement quelle a été le cheminement intellectuel du programmeur pour obtenir sa requête.
Quand tu enchaines projection(s) + jointure(s) + restriction(s) + union(s) pour arriver à tes fins et que tu l'exprime par une seule requête, c'est bien utile pour comprendre et surtout pour modifier ta requête.
Chacun sa technique!
Marsh Posté le 06-05-2009 à 12:28:12
Mwé, m'enfin, ce n'est pas de l'algèbre relationnel pur. Y a peut être le cheminement intellectuel pour obtenir la requête, mais aucunement les propriétés de complexité, de décidabilité et d'optimisation de l'algèbre relationnel.
Marsh Posté le 06-05-2009 à 14:03:58
ah ouais c'est pas mal comme truc ca,
mais apres pour moi c'est pareil que l'autres(peut etre et meme surement que j'ai pas assez de recul sur cette technique)
c'est beaucoup utiliser?
Marsh Posté le 06-05-2009 à 16:34:12
Je ne sais pas si c'est beaucoup utilisé mais je peux te dire que nos formateurs ne jurent que par ça quand il s'agit de structurer une requête.
Et pourtant ce sont des gars qui maitrisent parfaitement SQL.
J'ai pour exemple la dernière mise en situation qu'ils nous ont donné à faire, je t'assure qu'ils nous ont précisés que dans le rapport, les requêtes étaient facultatives mais pas l'algèbre!!!
D'après eux, une ligne d'algèbre bien faite peut être traduite dans n'importe quel langage de programmation de base de données. Après c'est juste un problème de syntaxe de la commande.
Marsh Posté le 06-05-2009 à 17:27:12
Il y a une équivalence entre l'algèbre relationnel et le calcul relationnel. Par ailleurs, toute requête écrite en algèbre ou en calcul est écrivable en SQL (l'inverse est faux). L'avantage de l'algèbre, c'est que c'est procédural, le calcul est déclaratif et le SQL est un mélange ignoble des deux :-)
Marsh Posté le 02-05-2009 à 16:03:29
Bonjour,
Je voudrais savoir si mes requêtes (à faire en modèle relationnel)sont justes?
Je vous remercie beaucoup d'avance,
Agréable journée à vous :
Voici mon schéma relationnel
* CLIENT(NoClient, NomC, PrénomC, VilleC)
* ARTICLE (NoArt, NomArt, PoidsArt, Couleur, PrixAchat, PrixVente, NoFourn)
* FOURNISSEUR (NoFourn, NomFourn, Adresse)
* VENTE (NoClient, NoArt, QtéVendue, DateVente)
Lister le numéro des clients auxquels ont été vendus plus de 10 articles:
R1 = RESTRICT (VENTE/ NbVendu=10)
Q1 = PROJET ( R1/ N°Client)
Lister le numéro et le nom des clients qui ont acheté des articles seulement entre le 01/12/04 et aujourd'hui
R1=RESTRICT ( VENTE / DateVente>1/10/2004 )
R2=Join (R1/CLIENT )
Q2=PROJECT ( CLIENT / Nomclient Numclient)
Lister les noms des clients qui ont acheté l'article N°1 et N°2:
R1 = Restrict (VENTE / NoArt=1)
R2 = Restrict (R1/ NoArt=2)
R3=Join (R2/CLIENT )
Q1= PROJECT (CLEINT, NomC)
Lister les noms des articles qui ont été vendus au client N°1 ou au client N°2
R1 = Restrict (VENTE/ NoClient=1)
R1'=PROJECT(R1/NoCLient)
R2 = Restrict (VENTE/ NoClient=2)
R2'=PROJECT ( R2/NoClient)
R3 = Union (R1/ R2)
R4=Join (R3/ARTICLE )
Q1= PROJECT (ARTICLE, NomArt)