Clé primaire composée

siahmedaek Messages postés 45 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 29 octobre 2009 - 28 oct. 2009 à 10:03
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 4 nov. 2009 à 13:50
j'ai une table employe qui coporte le matricule
j'aimerais bien ce matricule soit significatif
exemple Enseignant E
personnel Administratif A

si on veut ajouter un enregistrement N° 1
le programe doit verifier
qualité
(enseignant ou employe)
date de recrutement(extraire l'annee)

qualité/annee recrutement/N° Ordre
E/06/00001
sachant que le N° Ordre incremente automatiquement
merci d'avance..

6 réponses

madcap Messages postés 77 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 22 février 2011
28 oct. 2009 à 13:16
Je ferai une table Qualite avec
id_qualite PK incrémentation auto
nom_qualite string

A l'intérieur de cette table tu insères des différents type de qualité comme Enseignant, Eleve, etc..

Ensuite dans ta table employé, tu as :
Num_ordre PK --> tu définis toi-même selon ton exemple précédent (E/06/0001)
Annee_recrutement datetime
id_qualite FK --> Liaison sur la table qualite

La FK doit être 0, ou plusieurs du côté de la table Qualite et de 1.1 du côté de la table Employé.

Voilà, j'espère que c'est clair

A+
0
siahmedaek Messages postés 45 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 29 octobre 2009
28 oct. 2009 à 14:14
merci pour l'eclaircissement
mais j'essaie de trouver une solution avec qulité un champ dans la table employe

j'ai commencer par un controle de qualite
[code=pas]var c :string;
if c='E' then.....
if c='A' then....


c:=c+'/'..../codepour l'annee de recrutement
il ya une sorte de decodage de date dans delphi

decodedate(date y-m-d)
ann:=inttostr(y)
0
madcap Messages postés 77 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 22 février 2011
28 oct. 2009 à 15:40
Euh pourrais-tu être plus clair ?
Car là j'ai rien compris
0
siahmedaek Messages postés 45 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 29 octobre 2009
29 oct. 2009 à 13:37
la table Employe(matricule,nom,prenom.....,date_recrutement,qualite).

ce que je veut Obtenir comme resultat----------->
lors d'enregistrement des employes le matricule doit etre comme suit :
Enseignant/annee_recrutement/N°Ordre
c'est a dire E/08/00001
sachant que qualité comporte seulement deux valeurs (Enseignant 'E' ou employe'A')

je sais qu'il ya une sorte de
DECODEDATE(date)
elle est utile pour extraire l'annee de recrutement a partir de la date(DD,MM,YY) c a d le YY

merci ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
madcap Messages postés 77 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 22 février 2011
29 oct. 2009 à 13:48
Je crois que ce que tu veux utiliser comme méthode c'est :
DecodeTime()


Tu fais F1 dessus et tu as un exemple de son utilisation (je l'ai copié) :
{
This example uses a button and two labels on a form. When
the user clicks the button, the current date and time are
reported in the captions of the two labels.
}
procedure TForm1.Button1Click(Sender: TObject);
var
  Present: TDateTime;
  Year, Month, Day, Hour, Min, Sec, MSec: Word;
 begin
  Present:= Now;
  SysUtils.DecodeDate(Present, Year, Month, Day);  Label1.Caption := 'Today is Day ' + IntToStr(Day) + ' of Month '
    + IntToStr(Month) + ' of Year ' + IntToStr(Year);
  SysUtils.DecodeTime(Present, Hour, Min, Sec, MSec);
  Label2.Caption := 'The time is Minute ' + IntToStr(Min) + ' of Hour '
    + IntToStr(Hour);
end;


Voilà j'espère qu'avec ça tu vas pouvoir faire ce que tu veux ^^

A+
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
4 nov. 2009 à 13:50
@siahmedaek:

Clé primaire composite = très mauvaise méthode

Une clé primaire doit être atomique..
En revanche si tu as besoin de créer en revanche, un champ composite pour tel ou tel besoin alors tu peux créer un champ calculé ou même stocké (quelquefois, c'est même préférable..)

Souvent, ce besoin cache une analyse pas très bien ficelée
avec des tables non créées..

cantador
0
Rejoignez-nous