Database
 sql >> Base de données >  >> RDS >> Database

Algèbre relationnelle

Lorsque vous travaillez avec le modèle relationnel, nous avons 2 groupes d'opérations que nous pouvons utiliser.

La première est appelée algèbre relationnelle , et c'est un langage procédural .

C'est sur cela que SQL est basé, et en tant que tel, il est très important d'apprendre - car SQL est la norme de facto pour travailler avec des bases de données relationnelles.

Le second est appelé calcul relationnel et au lieu d'être procédural, c'est un langage déclaratif . C'est une différence fondamentale dans la façon dont nous interagissons avec les bases de données, car vous ne dites pas au logiciel de base de données quoi faire , vous lui dites simplement ce que vous voulez , et laissez-le trier les détails de la façon de le faire.

Il s'agit d'une distinction courante parmi les langages de programmation. Dans le frontend moderne, nous disons que l'interaction avec le DOM dans React est déclarative. L'utilisation de JavaScript vanille pour modifier le DOM est procédurale.

Des langages comme Datalog, QBE et QUEL ont pour base le calcul relationnel. Je ne vais pas en parler parce que je pense que c'est une façon beaucoup plus spécialisée de faire les choses par rapport à l'approche plus pratique suivie par SQL, mais vous pouvez l'examiner si vous le souhaitez.

Après cette introduction, passons à l'algèbre relationnelle .

Nous avons 2 types d'opérations :

  • opérations principales
  • opérations de jointure

Opérations primaires en algèbre relationnelle

Les opérations principales sont :

  • syndicat pour obtenir des données de deux tables, en générant une somme des tuples, tant que les deux tables ont les mêmes colonnes et types d'attributs (domaine).
  • différence pour obtenir des données contenues dans la première table mais pas dans la deuxième table, générant une différence des tuples, tant que les deux tables ont les mêmes colonnes et types d'attributs (domaine).
  • produit cartésien pour obtenir des données de deux tables et générer une seule table qui combine les données de celles-ci, en fonction d'une valeur d'attribut.
  • sélectionner pour extraire uniquement certains des tuples (lignes) contenus dans une table en fonction de certains critères.
  • projet pour générer un nouveau tableau contenant uniquement un ou plusieurs attributs (colonnes) d'un tableau existant
  • renommer utilisé pour renommer un attribut, utilisé pour éviter les conflits lorsque plusieurs tables ont le même nom pour différentes données

Opérations de jointure en algèbre relationnelle

Les jointures sont probablement les opérations les plus puissantes que vous pouvez effectuer avec l'algèbre relationnelle. Ils s'appuient sur les opérations primaires et vous permettent de corréler les données contenues dans différentes relations (tables).

Note :Je parlerai bientôt des jointures en pratique dans un SGBD, c'est surtout de la théorie.

Nous avons 2 versions principales de jointure :jointure naturelle et jointure thêta . Toutes les autres versions sont extraites de ces 2.

Joindre naturel

Joindre naturel met en corrélation deux relations (tables) et crée une nouvelle table basée sur les mêmes valeurs d'un attribut.

Nous avons d'abord besoin de deux relations avec le même nom d'attribut (colonne). Ensuite, si les valeurs des attributs de la relation A ne correspondent pas aux attributs de la relation B, la ligne ne fait pas partie du résultat, elle est ignorée.

Exemple :

Relation A

ID d'employé Nom
1 Marquer
2 Tony
3 Rick

Relation B

Nom du responsable ID d'employé
Todd 1
Albert 2

Nous pouvons effectuer une jointure naturelle pour obtenir le nom du patron de chaque employé :

ID d'employé Nom Nom du responsable
1 Marquer Todd
2 Tony Albert

Étant donné que les relations ont en commun le nom de l'attribut Employee ID, il n'est présent qu'une seule fois dans le résultat, et non 2 fois.

L'employé #3 présent dans la relation A, Rick, n'est pas inclus dans ce tableau, car il n'y a pas d'entrée correspondante dans la relation B.

Theta-join

Une thêta-jointure permet d'effectuer une jointure basée sur n'importe quel critère pour comparer deux colonnes dans deux relations différentes, pas seulement sur l'égalité comme le fait la jointure naturelle.

Il effectue un produit cartésien de deux tables et filtre les résultats en fonction de la sélection que nous souhaitons effectuer.

Equi-jointure

L'équi-jointure est une jointure thêta, où la sélection est basée sur l'égalité entre les valeurs d'attribut dans les deux tables différentes.

La différence avec la jointure naturelle est que nous pouvons choisir les noms d'attributs (colonnes) que nous voulons comparer.

Nous parlerons beaucoup plus des jointures plus tard lorsque SQL sera introduit, afin que nous puissions les utiliser dans la pratique.