Si j'ai deux tables - logins et des utilisateurs, comme suit:Comment déterminer où placer la clé étrangère dans ce scénario?
Logins
LoginIdNo
UserIdNo
HashedPassword
Users
UserIdNo
LoginIdNo
Username
Chaque connexion « a un utilisateur » et chaque utilisateur « a une connexion » mais qui « appartient à » qui?
S'agit-il simplement d'un appel de jugement ou existe-t-il une formule de passage à blanc pour déterminer où la clé étrangère doit résider?
Il y a deux différences entre Login et User auxquelles je pensais. L'un est la table de l'utilisateur aurait beaucoup d'autres champs pour les informations de contact (adresse, téléphone, etc). Alors que la table Logins serait plus fragmentée en termes de données, la table dans son ensemble pourrait subir une forme de cryptage indépendante de mon application (je ne sais pas exactement comment cela serait fait). –
Votre exemple de piste d'audit constitue un bon point. Inversement, si une trace d'audit est requise pour chaque modification des données utilisateur, la clé étrangère est peut-être l'ID de connexion, sauf si les informations de connexion sont également auditées - si l'utilisateur et le login ont des traces d'audit. fonctionne - dans ce cas peut-être nous avons aussi besoin d'une table UserAudit et LoginAudit? –
@fraggle: Je préfère penser à cette distinction en tant que personne et utilisateur, ce qui est une décision de modélisation raisonnable. Mais si vous faisiez ce nom d'utilisateur et mot de passe serait probablement sur la même entité. – cletus