- Concepts relationnels
- Opérations usuelles
- détails des opérations
- application sur un exemple simple
Ensemble de données simples (dites atomiques) réparties dans des tables et reliées entre elles, permettant le fonctionnement d’une organisation, d’une entreprise via une ou plusieurs applications informatiques.
Ensemble des logiciels permettant aux utilisateurs d’insérer, de modifier et de rechercher efficacement des données spécifiques dans une grande masse d’informations partagée par de multiples utilisateurs.
Domaine : Ensemble de valeurs caractérisées par un nom
Cardinal : Nombre d’éléments d’un domaine
Quelques exemples de domaines usuels :
Entier : 0, 1, 5, -4, 1324587, ... Réel : 1.5, 3.14, -5.09, 10654.241687, 0.00000001, ... Chaîne de caractères : "abcdef", "bonjour vous", "1", ... Sexe : "H", "F" (ici, cardinal = 2) Date : nombre de jours depuis une date de référence
Produit cartésien : Ensemble des n-uplets (\(d_1, d_2, \ldots, d_n\)) où chaque \(d_i\) est un élément du domaine \(\mathbf{D}_i\)
Si on a un premier attribut Code
dont le domaine est {1, 2, 3, 4}
(cardinal = 4) et un autre TVA
de domaine {0, 5, 10}
(cardinal = 3), le produit cartésien des deux domaines Codes X TVA
aura un cardinal de 12 (4 * 3) et prendra les valeurs suivantes :
{ (1, 0), (2, 0), (3, 0), (4, 0), (1, 5), (2, 5), (3, 5), (4, 5), (1,10), (2,10), (3,10), (4,10) }
Description d’une table
NULL
(non-présence de l’information)Schéma de la base de données Exemple
Table : Etudiant
IdEtu Nom Prenom Sexe Age 1 1 Remin Norbert H 19 2 3 Constant Raphaelle F 20 3 4 Fleurot Isabelle F 19 4 5 Yannic Sandrine F 18 5 6 Josse Francis H 20
Table : Matiere
IdMat Libelle Coeff 1 1 Maths 1.0 2 2 Stats 3.0 3 3 Com 1.0 4 5 SQL 2.5
Table : Note
IdEtu IdMat Note 1 3 1 12 2 3 5 15 3 4 5 2 4 4 2 9 5 4 1 7 6 1 1 18 7 1 2 11 8 1 5 5 9 6 1 9
Sélection de lignes d’une table, sur la base d’une condition à respecter (cette condition peut être une combinaison de comparaison à l’aide de AND
et de OR
- attention aux parenthèses dans ce cas)
Age >= 19
, sur la table Etudiant
IdEtu Nom Prenom Sexe Age 1 Remin Norbert H 19 3 Constant Raphaelle F 20 4 Fleurot Isabelle F 19 6 Josse Francis H 20
Sélection de colonnes d’une table, sur la base d’une liste d’attributs
Prenom
et Sexe
, sur la table Etudiant
Prenom Sexe Norbert H Raphaelle F Isabelle F Sandrine F Francis H
Opération artihmétique, fonction mathématique, fonction sur chaîne de caractères, …
2015 - Age
), dans la table Etudiant
IdEtu Nom Prenom Sexe Age 2015 - Age 1 Remin Norbert H 19 1996 3 Constant Raphaelle F 20 1995 4 Fleurot Isabelle F 19 1996 5 Yannic Sandrine F 18 1997 6 Josse Francis H 20 1995
Calcul statistique (somme, moyenne, nombre de valeurs, …) sur un attribut, éventuellement en fonction des valeurs d’un autre attribut
AVG(Age) 19.2
Sexe AVG(Age) F 19.0 H 19.5
Création de deux tables pour opérations ensemblistes :
Sexe = "H"
)IdEtu Nom Prenom Sexe Age 1 Remin Norbert H 19 6 Josse Francis H 20
Age = 20
)IdEtu Nom Prenom Sexe Age 3 Constant Raphaelle F 20 6 Josse Francis H 20
Ensemble des lignes présentes dans l’un et/ou l’autre des deux tables, celles devant avoir les mêmes colonnes
IdEtu Nom Prenom Sexe Age 1 Remin Norbert H 19 6 Josse Francis H 20 3 Constant Raphaelle F 20 6 Josse Francis H 20
une même ligne peut être présente dans les deux tables : à gérer si on veut ne l’avoir qu’une seule fois
Ensemble des lignes présentes dans les deux tables simultanément, celles devant avoir les mêmes colonnes
IdEtu Nom Prenom Sexe Age 6 Josse Francis H 20
L’union et l’intersection sont commutatives au contraire de la différence (cf ci-après)
Ensemble des lignes présentes dans la première table et absentes dans la deuxième table, les deux devant avoir les mêmes colonnes
IdEtu Nom Prenom Sexe Age 1 Remin Norbert H 19
IdEtu Nom Prenom Sexe Age 3 Constant Raphaelle F 20
Association de chaque ligne de la première table avec chaque ligne de la deuxième table
IdMat
et IdEtu
IdMat IdEtu 1 1 1 3 1 4 1 5 1 6 2 1 2 3 2 4 2 5 2 6 3 1 3 3 3 4 3 5 3 6 5 1 5 3 5 4 5 5 5 6
Restriction d’un produit cartésien aux lignes respectant une condition (le plus souvent égalité de deux attributs ayant le même nom)
Note
et Matiere
IdEtu IdMat Note Libelle Coeff 3 1 12 Maths 1.0 3 5 15 SQL 2.5 4 5 2 SQL 2.5 4 2 9 Stats 3.0 4 1 7 Maths 1.0 1 1 18 Maths 1.0 1 2 11 Stats 3.0 1 5 5 SQL 2.5 6 1 9 Maths 1.0
Organisées dans des tables différentes,
Absolument nécessité des jointures.
Jointure naturelle : la restriction est sur l’égalité des attributs ayant le même nom entre les deux tables ;
Jointure interne : on ne garde que les lignes ayant des informations dans les deux tables ;
Jointure externe gauche (et respectivement droite) : on garde aussi les lignes de la table de gauche (resp. de droite) qui n’ont pas de connexion avec une ligne de l’autre table ;
Jointure externe complète : toutes les lignes des deux tables sont conservées.
Etudiant
et Note
IdEtu Nom Prenom Sexe Age IdEtu IdMat Note 1 Remin Norbert H 19 1 1 18 1 Remin Norbert H 19 1 2 11 1 Remin Norbert H 19 1 5 5 3 Constant Raphaelle F 20 3 1 12 3 Constant Raphaelle F 20 3 5 15 4 Fleurot Isabelle F 19 4 1 7 4 Fleurot Isabelle F 19 4 2 9 4 Fleurot Isabelle F 19 4 5 2 5 Yannic Sandrine F 18 NA NA NA 6 Josse Francis H 20 6 1 9
L’étudiante n’ayant pas de note est conservée mais des valeurs NULL
(indiquées par des NA
ici)
Prenom Libelle Note Raphaelle Maths 12 Isabelle Maths 7 Norbert Maths 18 Francis Maths 9 Raphaelle SQL 15 Isabelle SQL 2 Norbert SQL 5 Isabelle Stats 9 Norbert Stats 11
Libelle Moyenne Maths 11.5 Stats 10.0 SQL 7.3
Possibilité (quasi-infinie) de combiner toutes les opérations
SELECT { attribut | expression | fonction } [, ... ] FROM table [, ...] WHERE condition(s) GROUP BY attribut(s) HAVING condition(s) ORDER BY attribut(s)/nombre(s);
FROM
;WHERE
permet de faire les restrictions ;SELECT
;SELECT
, avec les attributs de regroupement d’agrégat dans le GROUP BY
;HAVING
;ORDER BY
.subset(table, subset = condition(s), select = attribut(s)) transform(table, attribut = expression(s)) aggregate(attribut ~ attribut(s), table, fonction) merge(table, table, ...)
subset
;transform
;aggregate
;merge
.Il est souvent possible de réaliser des opérations selon la logique relationnelle et d’autres selon une logique plus spécifique au langage R. Il est présenté ici les fonctions orientées relationnel.
data table; merge table table; attribut = expression; where condition(s); keep | drop attribut(s); run; proc means | freq; run;
merge
permet de déterminer les tables pour les jointures ;keep
ou le drop
;where
;data
et les agrégats dans une procédure summary
, means
ou freq
.Idem que pour R, différentes voies sont parfois possibles.
Interrogation de données avec :