Prenez la table Loan ci-dessous à titre d'exemple. Est-ce qu'il nécessite une clé primaire?Est-ce que chaque table a besoin d'une clé primaire?
Répondre
Oui. Votre table de prêt ressemble à une table de jonction, de sorte que le PK doit être la combinaison de DocumentID
et EmployeeID
.
Je pense qu'un document peut être emprunté plusieurs fois par le même employé, donc ce n'est pas unique. Si les champs de date sont 'datetime' vous pouvez en ajouter un pour le rendre unique, mais je vous conseille d'utiliser un 'id'field qui incrémente automatiquement dans chaque table comme clé primaire pour être sûr. – BitAccesser
Est-ce que toutes les tables ont besoin d'une clé primaire: Non
chaque table doit avoir une clé primaire: Oui. Il peut y avoir des situations où une table n'a pas besoin d'une clé primaire, mais celles-ci sont rares et en général chaque table devrait en avoir une. C'est parce que vous voulez identifier de manière unique un enregistrement et qu'il devient difficile de travailler avec des enregistrements qui n'ont pas de clés primaires.
Dans votre cas, OUI votre table de prêt doit avoir une clé primaire. Comme Andre a déjà dit dans sa réponse, il devrait être une combinaison des DocumentID
et EmployeeID
.
Au risque d'introduire une certaine confusion: Utilisez soit DocumentID
+ EmployeeID
ou EmployeeID
+ DocumentID
. L'ordre peut faire la différence. Si vous partez pour dire DocumentID
+ EmployeeID
(dans cet ordre) alors la base de données utilisera la clé primaire lors de la recherche sur DocumentID
plus EmployeeID
(n'importe quel ordre dans votre requête), et pour les recherches sur le DocumentID
mais ne l'utilisera pas lors de la recherche sur seulement EmployeeID
.
Comment avez-vous l'intention de l'utiliser? Pourquoi demandez-vous? – doctorlove
En cas d'urgence, vous avez un meilleur accès à chaque enregistrement. – reporter