J'ai besoin de conseils concernant plusieurs enregistrements. J'ai une table avec les champs username
, message
et message_to
. Le scénario pourrait envoyer le même message à plusieurs utilisateurs en une fois. Que suggérez-vous? Sera-t-il efficace d'enregistrer tous les destinataires dans une seule colonne avec des valeurs séparées par des virgules ou d'ajouter plusieurs entrées?Plusieurs valeurs dans une colonne
3
A
Répondre
10
Non, non, non, non, non.
Ceci constituerait une violation majeure du modèle de base de données relationnelle. Créez trois tables: Users, Messages et MessagesSentToUsers.
- Dans le tableau
Users
, stocker une valeuruser_id
etname
de l'utilisateur. - Dans la table
Messages
, stockez une valeurmessage_id
et le messagetext
. - Dans la table
MessagesSentToUsers
, créez un enregistrement pour chaque fois qu'un message est envoyé. Cet enregistrement doit contenir uniquement leuser_id
pour l'utilisateur qui a reçu le message et unmessage_id
pointant vers le texte du message reçu.
Comme les éléments suivants:
| User | | Message | | MessageSentToUsers |
|---------|------| |------------|------| |----------|------------|
| user_id | name | | message_id | text | | user_id | message_id |
En général, les colonnes id dans chaque table sera de type entier. Le cas le plus courant est que le SGBD attribue une valeur à chaque ligne (vous n'avez donc pas à gérer les nombres).
Questions connexes
- 1. Renvoyer plusieurs valeurs dans une colonne dans une requête principale
- 2. Comment sélectionner une cellule avec plusieurs valeurs dans une colonne?
- 3. Autoriser plusieurs valeurs dans BDC Colonne
- 4. SQL Server - Stockage de plusieurs valeurs décimales dans une colonne?
- 5. Windows Forms: Comment afficher plusieurs valeurs dans une colonne
- 6. cakephp récupération de plusieurs valeurs dans une colonne
- 7. Requête SQL avec plusieurs valeurs dans une colonne
- 8. Requête SQL Server avec plusieurs valeurs dans une colonne relative à une autre colonne
- 9. MySQL sélectionner plusieurs valeurs de la colonne
- 10. Je souhaite rechercher et remplacer plusieurs valeurs dans une colonne de table dans une requête MYsql
- 11. Insertion de plusieurs valeurs dans une ligne
- 12. SQL - Plusieurs lignes dans une seule colonne
- 13. Convertir plusieurs enregistrements dans une colonne
- 14. plusieurs composants DataGrid dans une colonne
- 15. Plusieurs colonnes GROUP BY dans une colonne
- 16. Excel - Combiner plusieurs colonnes dans une colonne
- 17. Modification de plusieurs valeurs dans une colonne XML dans SQL Server 2008
- 18. Dans Oracle, comment sélectionner plusieurs valeurs d'une table liée et les stocker dans une seule colonne?
- 19. Comment ajouter une colonne supplémentaire dans une table en comparant les valeurs dans une autre colonne
- 20. Feuille de calcul: compte les valeurs répétées dans une colonne
- 21. Plusieurs valeurs dans java.util.Properties
- 22. Comment faire pour joindre à une table qui a plusieurs valeurs dans la colonne?
- 23. Comment insérer plusieurs valeurs dans une seule colonne à l'aide de sqlite?
- 24. Affichage de plusieurs valeurs de table dans une seule colonne GridView
- 25. Mettre à jour plusieurs valeurs de colonne de table en utilisant une requête unique dans SQL?
- 26. ExtJS Data Grid Calculateur de colonne pour avoir plusieurs valeurs
- 27. SQL GROUP BY - Plusieurs résultats dans une colonne?
- 28. SQLite - stockage de plusieurs valeurs
- 29. valeurs limites consécutives d'une colonne dans une requête SQL
- 30. AWK: Comment diminuer les valeurs dans une colonne d'un
D'accord; parfois, la dénormalisation est appropriée. Mais ce n'est pas un moment. –
@silky: pourquoi? Si vous avez besoin de savoir "Quels messages ont été envoyés à UserX?", Cela est raisonnable. Comme Adnan appelle les destinataires "utilisateurs", ils peuvent déjà avoir leur propre table. Si oui, la solution de Larry ajoute seulement une table simple. – egrunin
Est-ce que les JOINs supplémentaires ne vont pas affecter les performances? – Adnan