J'ai besoin de mettre en œuvre des fonctionnalités utilisateur personnalisées de base pour mon site Web. Existe-t-il une structure standard pour les bases de données de ce type? Comme c'est la pratique courante d'avoir toutes les informations et données utilisateur dans une seule table avec chaque utilisateur ayant sa propre ligne, ou ces informations devraient-elles être réparties entre différentes tables et reliées entre elles (peut-être pour l'efficacité?) Je ne suis pas extrêmement préoccupé par la sécurité à ce stade, mais je veux évidemment avoir un cryptage de mot de passe avant trop longtemps.
J'ai essayé de trouver ce que je cherchais sur google, mais en vain. Faites-moi simplement savoir si la question nécessite des éclaircissements ou quoi que ce soit.
la source
Il va falloir opter pour une grosse vieille mode "ça dépend".
Bien sûr, vous allez avoir besoin d'une sorte de clé sur cette table. Vous pouvez commencer avec un ID utilisateur. Cela pourrait simplement être une INT incrémentation (ou bigint si vous comptez avoir plus de 2,1 millions d'utilisateurs).
J'ai vu beaucoup de bases de données utiliser également des GUID comme principal UserID. Mais cela ouvre une toute autre boîte de vers à l'aide de GUID pour PK.
Vous devez ensuite décider du degré de normalisation de votre base de données. Allez-vous autoriser votre utilisateur à avoir plusieurs e-mails? plusieurs numéros de téléphone? Si c'est le cas, ils devraient être dans un tableau différent.
Je garderais la table utilisateur principale pour:
Cela devrait être votre point de départ.
De là, vous pouvez ajouter d'autres colonnes en fonction de ce que vous souhaitez stocker. L'e-mail peut être lié à une table d'e-mail, l'adresse à une table d'adresses, etc.
Je vous recommande fortement de lire cet article - http://www.sqlservercentral.com/articles/data-modeling/71725/
la source
S'il s'agit de l'authentification des utilisateurs, j'utiliserais LDAP. Ne créez pas de base de données distincte pour les utilisateurs, si vous utilisez déjà une base de données et avez d'autres tables (commandes, produits, etc.). Vous voudrez peut-être rejoindre ces tables.
la source