-
Cardinalité et SQL
Bonjour,
J'ai une table Professeur et une table Eleves.
Un professeur peut avoir 5 à 30 élèves et un élève put avoir qu'un seul professeur. Avec SQLite, comment puis-je vérifier cette cardinalité avec une requête SQL ?
Par exemple, comment empêcher qu'un utilisateur ajoute plus de 30 élèves à la table Professeur ou qu'il affecte plusieurs professeurs à un élève ?
Merci de votre aide.
-
Bonjour,
Si c'est dans un cadre scolaire, les professeurs ne devraient pas être en association directe avec les élèves mais avec les matières, matières qui font l'objet de cours, cours animés par des professeurs en fonction des classes. La limitation du nombre d'élèves est par classe et non par professeur.
Ex : un professeur peut enseigner dans 3 classes, chacune ayant 25 élèves, soit 75 élèves en tout, mais ça respecte la limite de 30 par classe.
Cela étant dit, quelle que soit l'association n-aire, la cardinalité maximale n est la même au niveau du script DDL de création des tables, et ce que n puisse prendre la valeur 2 ou 5000.
Pour vérifier lors de l'insertion d'un nouvel élève dans la classe que la limite de 30 est respectée, un comptage du nombre d'élèves déjà présents dans la classe est requis. Il faut tenir compte des éventuels threads concurrents susceptibles d'ajouter des élèves dans les classes.
On se gardera bien d'utiliser la valeur maxi des identifiants de type "identity" ou "auto_increment" pour vérifier la limite de 30, ces identifiants ne présentant jamais de garantie de numérotation contiguë et ce quel que soit le SGBD.