Je crée un forum de discussion (en quelque sorte) dans ASP.NET MVC, et j'ai besoin d'autoriser les publications de visiteurs non enregistrés. Les visiteurs n'ont qu'à spécifier un alias à publier, et peuvent éventuellement fournir une adresse e-mail et une URL de site Web.Utilisateurs non enregistrés dans la base de données
Quelle est la meilleure pratique pour gérer les messages d'utilisateurs non enregistrés dans une base de données?
Je suis un peu d'un débutant dans la conception de base de données, mais ces options viennent à l'esprit:
- Insérer un nouveau record dans la table des utilisateurs pour chaque poste par un visiteur non enregistré. (Faciliterait les requêtes lorsque les enregistrements dans les tables Posts et Users auront une relation 1-à-1, mais gonfle la table Users)
- Créer une nouvelle table pour les utilisateurs non enregistrés et créer de nouvelles entrées pour les nouvelles combinaisons alias-email-url , réutiliser ceux qui existent déjà. (Dans un tel scénario, aurais-je deux clés étrangères dans la table Posts pour RegisteredUserId et UnregisteredUserId?)
- Ajoutez les champs UnregisteredAlias, UnregisteredEmail et UnregisteredUrl directement au tableau Posts. (Terriblement dénormalisé, mais encore une fois cela me semble une solution propre Est-ce que je devrais alors rendre le champ UserId de la table Posts nullable, et le mettre à null pour ces messages?).
- La solution évidente que je n'ai pas encore pensée?
Est-ce que l'une de ces solutions causerait des problèmes avec le mappage LINQ To SQL?
Edit:
Pour clarifier les choses, je dois enregistrer un alias (un nom) et une adresse e-mail facultative et url pour chaque poste faite par un visiteur non enregistré. Cette information est affichée avec le message, donc visiteur! = Anonyme dans ce cas.
Ils ne sont pas enregistrés si .... "avoir une obligation d'autoriser les messages des visiteurs non enregistrés." – BIDeveloper
Enregistré ou Non enregistré - ce sont des utilisateurs et leur maison naturelle est la table Utilisateurs. –
@Jim - Oui, mais même les utilisateurs non enregistrés ont certaines informations à leur sujet (Alias, EMail, URL). À moins que vous ne vouliez dupliquer ceci sur chaque publication faite par le même utilisateur non enregistré, la meilleure chose à faire est de le stocker dans la table Users et d'avoir un "flag" indiquant si un enregistrement donné dans la table Users est un utilisateur enregistré ou non. . – CraigTP