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

 Oracle Discussion :

Gérer une clé sous oracle dont une partie de la forme de la clé est imposée


Sujet :

Oracle

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Analyste assurance qualité logiciel
    Inscrit en
    Juillet 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste assurance qualité logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 22
    Points : 27
    Points
    27
    Par défaut Gérer une clé sous oracle dont une partie de la forme de la clé est imposée
    Bonjour,

    Actuellement en stage dans le cadre de ma formation continue, je suis en train de rencontrer un problème sur la création d'une clé pour une base de donnée oracle sur laquelle j'ai des contraintes de formes.

    La clé doit comporter pour le début au minimum les deux derniers chiffres de l'année et éventuellement le mois en cours, suivi de 4 chiffres en incrément automatique.

    Comment gérer cela proprement ? Serait-il préférable de passer par une clé composite (AAMM + incrément) ou bien est il possible de créer une clé sous ce format dans oracle ?

    Cordialement,

    bugsman, apprenti SGBD

  2. #2
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Il faudrait savoir:
    - si l'incrément se remet à zéro à chaque nouvelle année (ou nouveau mois)
    - si l'incrément peut avoir des trous
    - s'il y a beaucoup d'autres tables qui référencent cette clé.

    si la réponse aux 3 est 'non' alors ça peut être simple. Sinon, ...

    Cordialement,
    Franck Pachot.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Analyste assurance qualité logiciel
    Inscrit en
    Juillet 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste assurance qualité logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 22
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    pour répondre à vos questions :
    - L'incrément est remis à zéro chaque mois
    - L'incrément ne peut pas avoir de trou
    - Il y aura 4 tables qui utiliseront cette clé.

    J'ai continué à me documenter, et un des articles sur la gestion de clé suggère éventuellement l'utilisation d'une table gérant l'incrément d'une clé. Est ce que ce serait une solution envisageable ?

    Cordialement,
    Bugsman, apprenti SGBD

  4. #4
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bugsman Voir le message
    - L'incrément ne peut pas avoir de trou
    Alors dans ce cas je vois 2 solutions, parce qu'il faut tenir compte du fait qu'un insert peut être rollbacké pour n'importe quelle raison, et donc laisser un trou:
    1. utiliser une table qui donne la valeur suivante, puis est incrémentée. Mais alors l'enregistrement de cette table sera vérouillé et il ne pourra pas y avoir plusieurs inserts en même temps -> pb de performance
    2. ne pas utiliser cet incrément comme clé, mais comme une autre colonne qui sera mis à jour une fois que l'insert sera commité (en batch par exemple).
    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Analyste assurance qualité logiciel
    Inscrit en
    Juillet 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste assurance qualité logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 22
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    Le problème d'insert multiple ne se pose pas, parce qu'il est prévu qu'un seul utilisateur puisse effectuer les inserts utilisant ce numéro.

    Je pense que la solution de la table donnant l'incrément est la solution la mieux adaptée, la difficulté restant tout de même l'unicité de ce numéro.

    Je vais continuer à avancer sur l'application qui va gérer la base de données,et je verrais alors si cette solution fonctionne correctement ou non.

    Merci pour votre réponse.
    Bugsman, apprenti SGBD

  6. #6
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bugsman Voir le message
    Le problème d'insert multiple ne se pose pas, parce qu'il est prévu qu'un seul utilisateur puisse effectuer les inserts utilisant ce numéro.
    Oui, mais un autre utilisateur voulant insérer un autre numéro devra attendre que le premier commite pour avoir le numéro suivant.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Analyste assurance qualité logiciel
    Inscrit en
    Juillet 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste assurance qualité logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 22
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par pachot Voir le message
    Oui, mais un autre utilisateur voulant insérer un autre numéro devra attendre que le premier commite pour avoir le numéro suivant.
    Dans l'absolu ce que tu dis est vrai. Dans l'utilisation de l'application, la table utilisant ce numéro comme une clé ne pourra être accédé que par un seul utilisateur.

    Pour résumer l'application qui se cache derrière cette question, j'ai des utilisateurs qui effectuent une demande de problème (une table). Cette demande est analysée par un comité qui donne une réponse : acceptée, refusée, ou en attente de complément. Si la réponse est acceptée, la demande est transformé en problème (une autre table). C'est la table problème qui utilisera cette numérotation, et un seul utilisateur pourra transformer une demande de problème en problème, cette transformation étant effectué par le pilote du comité. Donc mon problème d'accès par plusieurs utilisateurs n'a pas lieu d'être dans mon cas, car il n'y aura pas plusieurs pilotes connectés en même temps.

    Je reste tout à fait d'accord avec ta remarque, c'est simplement que le contexte de mon application permet cette manipulation peu élégante.

  8. #8
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Alors ça devrait marcher
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

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

Discussions similaires

  1. connaître la taille d'une table sous oracle
    Par loukili81 dans le forum Administration
    Réponses: 2
    Dernier message: 01/06/2007, 15h24
  2. Config d'une Datasource sous Oracle
    Par adilov dans le forum Wildfly/JBoss
    Réponses: 13
    Dernier message: 14/03/2007, 21h27
  3. Demarrage automatique d'une base sous oracle 9i
    Par tarekos dans le forum Oracle
    Réponses: 4
    Dernier message: 20/03/2006, 17h48
  4. Equivalent sous Oracle d une option SQLServer
    Par Pasiphae dans le forum Oracle
    Réponses: 3
    Dernier message: 19/11/2004, 17h30
  5. Encore une jointure sous Oracle pour la route
    Par ebaynaud dans le forum Langage SQL
    Réponses: 15
    Dernier message: 04/11/2004, 11h40

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