Importer un modèle d'exemple

    Ouvrir un projet enregistré

    LOuTRe - L'Outil pour la Théorie Relationnelle

    Syntaxe des requêtes

    Nous donnons ci-dessous la syntaxe des requêtes avec des exemples illustratifs.

    Affectation

    Toutes les requêtes sont écrites comme des affectations de la forme Resultat = ... opération ... de façon à ce que le résultat puisse être enregistré dans une nouvelle relation, avec un nom unique.

    Les noms de relations commencent par une lettre majuscule ou minuscule et contiennent des lettres, des chiffres ou le caractère underscore _

    Copier une relation

    La copie d'une relation se réalise en affectant au résultat une relation existante.

    Exemple : R2 = R1 créé une nouvelle relation R2 contenant les attributs et les enregistrements de R1.

    Union, intersection différence

    Ces trois opérateurs s'écrivent respectivement union, intersect, except.

    Exemples : R3 = R1 union R2 créé une relation R3 qui est l'union de R1 et de R2.

    Deux remarques :

    • Pour pouvoir s'appliquer, les opérandes doivent avoir les mêmes attributs (c'est-à-dire les mêmes noms d'attributs).
    • Chacun de ces opérateurs peut être écrit en minscule ou en majuscule (ou un miXe DeS DeuX).

    Produit cartésien

    Le produit cartésien est réalisé par le mot-clé pcart (insensible à la casse).

    Exemple : R3 = R1 pcart R2 créé une relation R3 résultant du produit cartésien de R1 par R2.

    Sélection

    La sélection permet de filtrer les enregistrements d'une relation pour ne conserveur que ceux satisfaisant un certain critère de sélection.

    Exemple : R2 = S( ...critère de sélection... ) R1

    Prenez garde à bien utiliser la syntaxe S( (sans espace entre le S et la parenthèse ouvrante) pour désigner l'opération de sélection.

    Le critère de sélection est une expression booléenne de type :

    • comparaison entre attributs et/ou valeurs : égalité =, inégalité <>, inférieur strict < (pour des attributs/valeurs numériques), inférieur ou égal <=, supérieur strict >, supérieur ou égal >=
    • expression logique : conjonction &&, disjonction || entre expressions booléennes

    Dans le cas où l'une des opérande serait une constante représentant une chaîne de caractères, celle-ci doit être délimitée par des guillemets doubles.

    Exemple : R2 = S(Prenom = "Marie" || Prenom = "Cynthia")R1 créé une relation R2 à partir de la relation R1 où seuls sont conservés les enregistrements dont l'attribut Prenom est égal à la chaîne de caractères Marie ou Cynthia.

    Attention, les majuscules dans les noms des attributs ou les valeurs des chaînes ont leur importance.

    Projection

    La projection permet ne garder qu'un sous-ensemble des attributs d'une relation.

    La syntaxe R2 = [att1, att2] R1 créé une relation R2 par projection de la relation R1 sur les attributs att1 et att2.

    Les majuscules/minuscules ont leur importance dans le nom des attributs demandés.

    Jointures internes

    L'opération de jointure s'exprime avec la syntaxe : R3 = R1 [R1.attA=R2.attB] R2 qui va créer une nouvelle relation R3 qui sera le résultat de la jointure de R1 avec R2 en respectant le critère de jointure associé.

    Quelques remarques :

    • dans le critère de jointure, s'il n'y a pas d'ambigüité sur les noms des attributs concernés, alors il n'est pas nécessaire de les préfixer par le nom de leur relation d'origine.
      Exemple : si on suppose que attA et attB sont uniques, on peut écrire l'exemple précédent avec R3 = R1[attA=attB]R2
    • R3 = R1[attA=attB]R2 est équivalent à R3=R2[attA=attB]R1, même si la présentation du résultat ne sera pas la même (rappel : dans une relation, il n'y a pas d'ordre pour les attributs, ni pour les enregistrements).
    • pour réaliser une jointure naturelle sur un attribut on écrira juste [ le nom de l'attribut entre les crochets ].
      Exemple : R3 = R1[attC]R2 (on suppose que attC est commun à R1 et R2)
    • on peut réaliser une θ-jointure, en remplaçant l'égalité du critère de jointure par n'importe quel prédicat respectant la syntaxe décrite dans la section précédente.

    Jointures externes

    Les jointures externes se décrivent en rajoutant un + entre le nom de la relation et le crochet, du côté de la relation dont on souhaite conserver tous les enregistrements, même ceux pour lesquels ils n'existe pas de possibilité de satisfaire le critère de jointure.

    Exemple : R3 = R1+[R1.attA = R2.attB]R2 permet de réaliser une jointure externe à gauche.

    Division

    La syntaxe R3 = R1 [ L1 / L2 ] R2 permet de réaliser la division de R1 par R2 par rapport aux listes d'attributs L1 (issus de R1) et L2 (issus de L2).

    Exemple : R3 = R1[ R1.NoEtudiant / R2.NoEtudiant] R2 permet de récupérer dans R3 créé une relation contenant tous les attributs de R1 sauf NoEtudiant et contenant des enregistrements qui, lorsqu'ils sont suffixés aux valeurs de NoEtudiant issues de R2, sont tous présents dans R1.

    Quelques remarques :

    • Les deux listes d'attributs L1 et L2 doivent faire la même taille et présenter les attributs mis en correspondance dans le même ordre.
    • La syntaxe R3 = R1 DIV R2 est un raccourci pour la syntaxe précédente qui réalise la division par rapport aux attributs communs de R1 et R2.