Bonjour,
Mon problème ne porte pas vraiment sur le langage SQL mais la logique des bases de données.
Voilà j'ai deux tables :
Message (où je stocke les infos de l'email) et Attachement où je stocke les infos sur les pièces jointes de l'email).
J'ai deux possibilités :
Ici, je crée une clé primaire "codeAtt" pour les pièces jointes, mais qui ne veut rien dire sémantiquement, car la même pièce jointe peut être stockée à chaque fois avec une nouvelle clé, chaque fois qu'elle est utilisée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Create table Message( codeMessage Integer Not Null AUTO_INCREMENT, Objet Varchar(50), Message Text, DateMessage Date Not Null, TimeMessage Time Not Null, Primary Key (codeMessage) ); Create Table Attachement ( codeAtt Integer Not Null AUTO_INCREMENT, Chemin Varchar(50) Not Null, codeMessage Integer Not Null, Primary Key (codeAtt), Foreign Key (codeMessage) References Message (codeMessage) on Update Cascade on Delete Cascade );
Ici, j'utilise codeMessage dans la table Attachement, non seulement comme une clé étrangère mais aussi pour une clé primaire de la table, je trouve ça plus significatif dans la réalité, mais ça ne me permettra d'avoir qu'une seule pièce jointe par message !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Create table Message( codeMessage Integer Not Null AUTO_INCREMENT, Objet Varchar(50), Message Text, DateMessage Date Not Null, TimeMessage Time Not Null, Primary Key (codeMessage) ); Create Table Attachement ( Chemin Varchar(50) Not Null, codeMessage Integer Not Null, Foreign Key (codeMessage) References Message (codeMessage) on Update Cascade on Delete Cascade, Primary Key (codeMessage) );
Où pourrais-je utiliser une autre clé primaire pour la table attachement ??
Partager