IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 MySQL Discussion :

Limiter cardinalité d'une table


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 20
    Par défaut Limiter cardinalité d'une table
    Bonjour,

    Est ce que on peut limité la cardinalité d'une table Mysql, càd :

    eleve (1,1)-------------(1,15)classe / c pour limité le nombre d'enregistrement et former des groupes d'élèves de 15.

    à chaque fois j'arrive au nombre de 15 enregistrement, je créer une nouvelle table groupe2 ect.

    Merci.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Il suffit que dans votre table vous rajoutiez une contraintes pour que la clef soit comprise entre 1 et 15 !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Saluton,
    J'avais bien pensé à cette possibilité mais ça veut dire qu'il renonce à l'AUTO-INCREMENT, car s'il supprime un des id de 1 à 15, il ne peut plus en créer de nouveau.
    Bien que j'aie l'impression qu'il y ait un défaut de modélisation dans cette approche, j'avoue ne pas voir quelle alternative proposer.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par l_dl_d Voir le message
    eleve (1,1)-------------(1,15)classe / c pour limité le nombre d'enregistrement et former des groupes d'élèves de 15.

    à chaque fois j'arrive au nombre de 15 enregistrement, je créer une nouvelle table groupe2 ect.
    Classe et Groupe sont à mon avis deux notions différentes.

    Vouloir créer une table par groupe est une erreur de conception.

    Le morceau de MCD donné signifie :
    - 1 élève appartient à une seule classe
    - 1 classe comprend de 1 à 15 élèves

    Les tables qui en découlent sont :
    Classe (C_Id, C_Libelle, ...)
    Eleve (E_Id, E_IdClasse, E_Nom, E_Prenom, ...)

    Et pour s'assurer qu'il n'y a pas plus de 15 élèves par classe, il faudra prévoir un TRIGGER BEFORE INSERT à l'insertion d'un élève qui
    - vérifiera combien d'élèves font déjà partie de la classe à laquelle on veut affecter l'élève ;
    - si ce nombre est 15, alors créer une nouvelle classe, récupérer son ID, créer l'élève avec ce nouvel ID de classe ;
    - sinon créer l'élève avec l'ID choisi par l'utilisateur.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    C'est limpide, la contrainte est supportée par le trigger.
    Merci Cinéphil, je pressentais que créer un table par classe n'était pas la solution, mais le réflexe trigger me faisait défaut.
    Reste à gérer éventuellement de savoir proposer des places qui se libèreraient.
    Mais c'est une autre histoire.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Maljuna Kris Voir le message
    Reste à gérer éventuellement de savoir proposer des places qui se libèreraient.
    Citation Envoyé par CinePhil
    - vérifiera combien d'élèves font déjà partie de la classe à laquelle on veut affecter l'élève ;
    Si une place est libérée dans une classe, il n'y aura plus que 14 élèves affectés à la classe et le trigger acceptera d'affecter le nouvel élève à la classe choisie.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Oui, oui, dans l'idéal il faudrait faire une requête pour recenser les classes où il reste de la place pour les proposer dans une liste de sélection à laquelle on ajouterait "nouvelle classe".
    Mais je digresse par rapport à la problématique initiale énoncée.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

Discussions similaires

  1. [2012] Limiter résultats d'une table
    Par mmimlav dans le forum SSRS
    Réponses: 1
    Dernier message: 23/08/2013, 11h23
  2. [MySQL] Utiliser la valeur d'un limit présent dans une table
    Par gwena54 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/07/2007, 21h08
  3. Limiter les droits à une partie des lignes d'une table
    Par Nabu dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 20/08/2006, 00h04
  4. [SQL] Limiter la saisie dans une table
    Par dolphi dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 16/09/2005, 11h43
  5. Limite maximale d'une table INTERBASE 7
    Par lio33 dans le forum InterBase
    Réponses: 4
    Dernier message: 26/08/2005, 14h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo