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

JPA Java Discussion :

Enumération & Tables


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 33
    Par défaut Enumération & Tables
    Bonjour à tous !
    Lors de la création de ma BDD j'ai le schéma suivant :
    J'ai une entité 'Période' qui a les champs suivant : Id, Nom, Couleur.
    Dans mon appli une période aura aussi une liste de jour de la semaine ( ex: Lundi, Mardi, Mercredi).
    Je pensais faire une table JourdelaSemaine avec un champ 'idPeriod' pour respecter la règle suivante :
    Une période ---- a ----- 1 à n JourdelaSemaine
    Jourdelasemaine ---- appartient a ----- 1 à 1 période (pour empêcher de créer plusieurs période sur le lundi par ex) .


    Le seul hic est que côté classe je pensais faire une énumération pour représenter les jours de la semaine, ainsi qu'une variable List<Jourdelasemaine> toto , dans ma classe Période. et que je ne sais pas comment persister une énum avec une table de ma base.



    Ma question : Est-ce que j'utilise la bonne méthode (une énum + une table) ? ou bien est-ce que ce n'est pas possible et je dois faire une simple énum sans table pour représenter les jourdelasemaine, et ajouter un champ 'jourdelasemaine' dans ma table Période? Mais avec la dernière solution je ne vois pas comment représenter le fait qu'une période a plusieurs joursdelasemaine en base ?
    Je suis un peu perdu sur le procédé comme vous le voyez..

    Merci d'avance

  2. #2
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    Bonjour,

    On manque un peu d'informations et donc difficile de dire si ce que tu envisage est correcte.

    par exemple a quoi correspond une période, une durée entre deux date ?
    Si oui, alors il peux y avoir deux lundi dans la même période et ton raisonnement est donc faux !
    Si non, mais que tu définis plusieurs periode dans un calendrier, fatalement il y aura plusieurs périodes sur un lundi !

    Citation Envoyé par Sharym Voir le message
    Ma question : Est-ce que j'utilise la bonne méthode (une énum + une table) ? ou bien est-ce que ce n'est pas possible et je dois faire une simple énum sans table pour représenter les jourdelasemaine, et ajouter un champ 'jourdelasemaine' dans ma table Période? Mais avec la dernière solution je ne vois pas comment représenter le fait qu'une période a plusieurs joursdelasemaine en base ?
    Pour ce qui est de savoir s'il faut faire une table qui contient les jours de la semaine (si j'ai bien compris de Lundi a Dimanche et sans notion de date) alors je ne vois aucun intéret !
    Pourquoi faire une table avec des données qui ne changeront jamais !

    Pour le reste donne plus d'info sur ce que représente une période, et ensuite on vera comment le stocké en base !
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 33
    Par défaut
    Dans mon appli, une période sera un ensemble de jour dans la semaine, sous forme de chaine de caractères.
    Typiquement : une instance de période Lundi, sera défini par " Lundi, Mardi, Mercredi, Jeudi,Vendredi", et une autre Samedi sera défini juste par "Samedi", c'est pour ça que j'avais fait une table pour les stocker, car avec une simple énumération je ne vois pas comment dire en base que ma période peut avoir plusieurs jours. Une période est défini par une liste de jour de la semaine et non un ensemble de date, car ici c'est une période hebdo et il faut que ce soit une lsite de jour de la semaine (cahier des charge imposé)

    Use case : quand mon utilisateur voudra créer une période ( ici hebdomadaire ), il choisira un nom, une couleur et aura 7 checkbox pour choisir quels jours iront dans cette période .



    Bah disons que c'est la seul solution que j'ai trouvé pour dire qu'une période a plusieurs jours de la semaine ( avec le champ idPeriod) et non qu'un jour peut avoir plusieurs période (INTERDIT) .
    Je ne vois pas comment représenter ça en base de donnée autrement.. Parce que si je ne fais pas de table pour les jours (lundi, mardi, etc), comment dire en base qu'une période peut avoir 1.n joursdelasemaine mais qu'un jour peut être attribué qu'à une seule période.

    Merci

  4. #4
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Je ne vois pas comment représenter ça en base de donnée autrement.. Parce que si je ne fais pas de table pour les jours (lundi, mardi, etc), comment dire en base qu'une période peut avoir 1.n joursdelasemaine mais qu'un jour peut être attribué qu'à une seule période.
    Pense la relation dans l'autre sens, un jour de la semaine connais SA période.
    Ainsi tu as bien deux objets (et donc deux table) pour récrée ta relation jour de la semaine/période et cela impose qu'un jour a au plus une période.
    Cependant, vérifie que c'est bien ce que veux le client. Car le cas, d'utilisation que tu nous présente n'implique pas cette unicité.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 33
    Par défaut
    D'accord merci !

    Le client veut :

    Une période a au minimum un jour, au maximum 7 donc 1.n
    Un jour doit appartenir au minimum et au maximum une période (unicité pour empêcher de créer plusieurs période sur le même jour de la semaine.) donc 1.1

    En effet @kolodz je pensais bien qu'il fallait garder ma table, j'en reviens donc à ma question :
    Est-il possible de persister une table sous forme d'énumération ( simplicité d'utilisation ) ou je n'ai pas le choix de créer une classe pour représenter mes jours ?

  6. #6
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Si tes jours ont une propriété période (en plus de leur nom), c'est qu'ils sont plus qu'une simple énumération. Même si il est possible d'avoir des énumérations avoir des propriétés statiques. Ce qui n'est pas ton cas.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réparation table/entête endommagée
    Par tbesrour dans le forum Paradox
    Réponses: 15
    Dernier message: 27/11/2007, 10h42
  2. Enumérer les champs d'une table
    Par Daniel MOREAU dans le forum VBA Access
    Réponses: 6
    Dernier message: 28/09/2007, 13h18
  3. [Oracle] Enumération des champs d'une table
    Par gogolak dans le forum Langage SQL
    Réponses: 3
    Dernier message: 31/03/2006, 16h58
  4. Newbie......compilateur et table de caractères
    Par Cyberf dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 21/08/2002, 14h29
  5. [Comparatifs] Limites nombres tables et quantité de données
    Par benj63 dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 13/06/2002, 21h31

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