Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Débuter
Débuter Forum d'entraide pour débuter avec Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/07/2011, 14h23   #1
Futur Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 22
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : juillet 2011
Messages : 22
Points : 19
Points : 19
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
bugsman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 21h55   #2
Membre Expert
 
Avatar de pachot
 
Homme Franck Pachot
DBA Oracle
Inscription : novembre 2007
Messages : 703
Détails du profil
Informations personnelles :
Nom : Homme Franck Pachot
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : DBA Oracle
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2007
Messages : 703
Points : 1 630
Points : 1 630
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.
__________________
A lire sur mon blog Oracle - Articles d'Experts des articles traduits en français de Jonathan Lewis, Tom Kyte, Doug Burns, Cary Millsap, Greg Rahn ...
pachot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 14h50   #3
Futur Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 22
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : juillet 2011
Messages : 22
Points : 19
Points : 19
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
bugsman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 20h45   #4
Membre Expert
 
Avatar de pachot
 
Homme Franck Pachot
DBA Oracle
Inscription : novembre 2007
Messages : 703
Détails du profil
Informations personnelles :
Nom : Homme Franck Pachot
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : DBA Oracle
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2007
Messages : 703
Points : 1 630
Points : 1 630
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.
__________________
A lire sur mon blog Oracle - Articles d'Experts des articles traduits en français de Jonathan Lewis, Tom Kyte, Doug Burns, Cary Millsap, Greg Rahn ...
pachot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 10h23   #5
Futur Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 22
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : juillet 2011
Messages : 22
Points : 19
Points : 19
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
bugsman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 13h44   #6
Membre Expert
 
Avatar de pachot
 
Homme Franck Pachot
DBA Oracle
Inscription : novembre 2007
Messages : 703
Détails du profil
Informations personnelles :
Nom : Homme Franck Pachot
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : DBA Oracle
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2007
Messages : 703
Points : 1 630
Points : 1 630
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.
__________________
A lire sur mon blog Oracle - Articles d'Experts des articles traduits en français de Jonathan Lewis, Tom Kyte, Doug Burns, Cary Millsap, Greg Rahn ...
pachot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 13h58   #7
Futur Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 22
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : juillet 2011
Messages : 22
Points : 19
Points : 19
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.
bugsman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 18h11   #8
Membre Expert
 
Avatar de pachot
 
Homme Franck Pachot
DBA Oracle
Inscription : novembre 2007
Messages : 703
Détails du profil
Informations personnelles :
Nom : Homme Franck Pachot
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : DBA Oracle
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2007
Messages : 703
Points : 1 630
Points : 1 630
Alors ça devrait marcher
__________________
A lire sur mon blog Oracle - Articles d'Experts des articles traduits en français de Jonathan Lewis, Tom Kyte, Doug Burns, Cary Millsap, Greg Rahn ...
pachot est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h11.


 
 
 
 
Partenaires

Hébergement Web