J'ai 2 tables - une qui stocke l'information d'utilisateur (identification, nom d'utilisateur, mot de passe) et la deuxième stocke des informations sur l'événement (identification, nom, description, date, nom d'utilisateur). Je voudrais mettre en place des fonctionnalités 'événements favoris'. Cela permettrait à l'utilisateur de stocker ses événements favoris et de les afficher ultérieurement dans une liste. Je ne suis pas sûr de savoir comment mettre en œuvre cela en termes de conception. J'ai besoin d'une solution simple. Quelque chose comme stocker les ID des événements favoris dans un champ de la table des utilisateurs. J'utilise mysql et PHP. Quelqu'un peut-il me diriger vers la bonne direction?Comment créer cette base de données simple?
Répondre
Vous souhaitez avoir une table reliant les clés étrangères des tables d'utilisateurs et d'événements.
utilisateurs Tableau:
id, username, password
Table des événements:
id, name, description, date, username
Favoris Tableau:
id, user_id, event_id
De cette façon, vous pouvez facilement accéder à la liste des événements préférés.
SELECT events.name, events.description, events.date
FROM events, users, favorites
WHERE favorites.user_id = users.id
AND favorites.event_id = events.id
Pourquoi avez-vous ajouté la colonne 'id' dans la table' Favorites'? C'est inutile. – Crozin
Pouvez-vous me dire à quoi devrait ressembler exactement la relation des clés étrangères? – Vonder
Dans user_id et event_id sont les clés étrangères dans cet exemple. Comme vous pouvez le voir dans le SQL à condition qu'ils se rapportent à users.id et events.id (clés primaires). – chills42
Qu'est-ce que vous avez besoin est la relation many-to-many plus classique et de base.
Vous aurez besoin d'une table supplémentaire (disons: user_event_ref
) qui stockera les identifiants d'utilisateur et d'événement.
User:
id
name
Event:
id
name
UserEventRef:
user_id
event_id
Dans usereventref
chaque colonne est un Foreign Key, et les deux colonnes sont parties de clé primaire.
Il est toujours possible d'ajouter un champ tiny-int à la table Events en signalant un événement comme favori. Cela ne viole pas la normalisation en ce que oui ou non un favori n'a aucun effet sur les autres événements. Il a l'avantage supplémentaire de supprimer automatiquement l'événement des favoris si l'événement est supprimé.
Si un schéma de tri est nécessaire pour les favoris, vous pouvez toujours modifier la table des événements de la même manière. Si des détails sur le "favori", comme quand il a été ajouté à la liste etc est nécessaire, vous devez utiliser une table supplémentaire comme suggéré.
Oui, mais si j'ai beaucoup d'utilisateurs? Votre idée fonctionne-t-elle si de nombreux utilisateurs choisissent le même événement ou si l'utilisateur choisit plusieurs événements? – Vonder
Cela ne fonctionne pas, sauf si vous voulez que les favoris soient à l'échelle du système. Je crois que la fonctionnalité prévue est pour les listes de favoris spécifiques à l'utilisateur. – chills42
La conception actuelle ne permet pas d'affecter plusieurs utilisateurs à un seul événement. Il prend en charge un utilisateur à plusieurs événements. – souLTower
- 1. comment concevoir cette base de données mysql
- 2. Comment créer la base de données avancée
- 3. MySQL: comment dois-je rédiger cette base de données?
- 4. Base de données Bejeweled Puzzle - Comment fonctionne cette solution?
- 5. Simple 'base de données' en C++
- 6. Question simple sur les données de base
- 7. Comment concevoir la base de données pour cette situation?
- 8. Structure de base de données simple (SQLite-)
- 9. Requête de base de données ASP.NET simple
- 10. Données de base - Requête simple Question
- 11. Comment créer cette UITableView
- 12. Comment nommer cette méthode simple?
- 13. Comment créer une fonction simple pour interroger la base de données? Le mien ne fonctionne pas!
- 14. comment réécrire cette URL simple?
- 15. Pourquoi cette simple migration de Rails ne met-elle pas à jour ma base de données?
- 16. script SQL, créer une base de données
- 17. Comment créer cette table de liens?
- 18. Comment réparer cette requête SQL simple?
- 19. Une manière simple de créer une ERD pour une revue de conception de base de données
- 20. Comment faire cette requête MySQL dans les données de base?
- 21. comment créer cette requête linq
- 22. Comment créer une couche de base de données appropriée?
- 23. Comment créer cette matrice? (PHP)
- 24. Comment faire cette simple compréhension de liste?
- 25. Comment faire cette mise à jour conditionnelle simple?
- 26. Comment créer une base de données dans Google BigTable
- 27. Façon la plus simple de créer une application de base de données minuscule dans linux
- 28. Erreur de migration de base de données simple dans Rails
- 29. comment créer nettcpbinding de cette liaison personnalisée
- 30. créer une base de données MySQL personnelle
Créez une troisième table pour stocker les combinaisons userid/eventid pour chaque événement favori d'un utilisateur. – Veger