Méthode pour transformer un schéma conceptuel en relationnel:
Règle 1: toutes les entités deviennent des tables
Règle 2: Toutes les relations d'unicité donnent lieu à des clés étrangères (qui sont les clés primaire de l'attribut unique) dans l'attribut plusieurs
Règle 3: Toutes les relations plusieurs à plusieurs donnent lieu à des tables aussi et elle a pour clés primaires les clés primaires des deux relations desquelles elle découle.
Schéma conceptue = entité/associationl: table dans les carrés, clés soulignés et associations apparaissent
graphique du schéma relationnel: table carré, clé en gras et clés étrangères pointent
Schéma relationnel: écritures avec clés soulignées.
Syntaxe de base SQL:
select: on y met tout ce que l'on veut afficher.
select distinct: pour ne pas avoir plusieurs fois la même chose. Vérifier les cas ou on peut avoir plusieurs fois la même chose. Par exemple un étudiant peut avoir validé deux cours qui n'ont pas de prérequis mais on a besoin de son nom qu'une seule fois.
select count: pour compter -> s'il y a "combien" dans la question.
Dans le select, on peut avoir des opérations simples comme la moyenne (avg), le minimum (min), maximum (max). Ici, on ne veut que les AFFICHER.
from: on y met toutes les tables concernées (même si on ne les affiche pas dans le select mais dans le where par exemple)
where: exprime toutes les conditions. Ne pas oublier de vérifier s'il y a des conditions "évidentes" avec le "not null". Bien vérifier tout ce qui peut être null.
where avec "%": like '20%'= commence par 20; like '%20'=finit par 20; like '%20%'= contient juste 20
group by: nous permet de regrouper ce que l'on veut afficher en fonction des attributs. Par exemple s'il y a "chaque" dans la question.
having: exprime aussi la condition comme where MAIS on l'utilise quand les opérateurs (avg,min,max,count,sum) sont des CONDITIONS. Par exemple, on veut afficher les étudiants dont la MOYENNE est supérieure à une valeur. min(valeur) supérieure à note.
order by: order by (attribut) desc pour décroissant, asc pour croissant (par défaut).
Méthode requêtes imbriquées:
select.
from
where ..opérateur de jointure in/not in (select opérateur de jointure from where conditions énoncées)
Méthode auto-jointure:
select: ne change pas, on affiche ce qui nous est demandé MAIS affecté de son indice car le nom sera le même.
from c1.attribut,c2.attribut
where conditions (c1.attribut de comparaison) et OBLIGATOIRE: c1.attribut <> c2.attribut (différent).
