Je ne sais même pas si l'appelant colonne sérialisée forte> est juste, mais je vais m'expliquer, par exemple, j'ai une table pour les utilisateurs, je veux stocker le téléphone des utilisateurs Numéros (téléphone portable, maison, bureau, etc.), je pensais donc faire une colonne pour chaque type de numéro, mais en même temps est venu à ma tête une idée, que si je sauvegarde un merci p> json code > chaîne dans une seule colonne, donc je n'aurai jamais une colonne qui ne sera probablement jamais utilisée et je peux transformer cette chaîne en une matrice PHP lors de la lecture des données de la base de données, mais j'aimerais entendre les marchandises et les mauvaises Pratique, peut-être que c'est juste une mauvaise idée, mais je veux d'abord savoir ce que d'autres personnes ont à dire sur p>
4 Réponses :
Je ne ferais que cela avec des données non essentielles, par exemple, la couleur préférée de l'utilisateur, le type de marsupial préféré (évidemment «non essentiel», vous devez décider). Le problème avec cela pour les données essentielles (numéro de téléphone, nom d'utilisateur, email, prénom, nom de famille, etc.) est que vous vous limitez à ce que vous pouvez accomplir avec la base de données. Celles-ci incluent des champs d'indexation, en utilisant la commande par clauses, ou même la recherche d'une donnée spécifique. Si plus tard, vous réalisez que vous devez effectuer l'une de ces tâches, ce sera un mal de tête majeur. p>
Votre meilleur meilleur dans cette situation consiste à utiliser une table relationnelle pour 1 à de nombreux objets - ex Je ne sais pas à quel point vous êtes familier avec MySQL, mais si vous n'avez pas entendu parler de la normalisation de la base de données et des jointures de la requête, c'est maintenant un bon moment pour commencer à lire sur eux :) p>
J'espère que cela aide. P> userPhonenumbers code>. Il aurait 3 colonnes: user_id code>, téléphone_number code> et type code>. Le user_id code> vous permet de relier les lignes de cette table à la ligne code> de la table code> correspondante code>, le t-t-t-t-t-t-t-t-t-t-t-t-t-il est explicite et le type code> pourrait être "home", "cellule", "bureau", etc. Cela vous permet d'exécuter toujours les tâches que j'ai mentionnées ci-dessus, et il a également l'avantage supplémentaire de ne pas gaspiller d'espace sur des colonnes vides, comme vous n'ajoutez que rangées à cette table comme vous en avez besoin. p>
Donc, de MySQL 5.7, vous pouvez commander ou rechercher une pièce spécifique de données avec JSON - de sorte que cette réponse n'est donc plus pertinente.
Je ne suis pas sûr de ce que serait les avantages de cette approche. Vous dites "alors, je n'aurai jamais une colonne qui ne sera probablement jamais utilisée ..." Ce que je pense que vous pensez avoir été (dans votre système) que parfois un utilisateur peut ne pas avoir de valeur pour chaque type de numéro de téléphone disponible et qui étant le cas, pourquoi stocker des enregistrements avec des colonnes vides? p>
stocker des enregistrements avec des colonnes vides n'est pas nécessairement mauvaise. Toutefois, si vous souhaitez normaliser votre base de données, vous pouvez avoir une table séparée pour Les contraintes seraient que l'ID est une clé primaire, ID utilisateur est une clé étrangère pour User.ID et le type serait un énumé (de tous les types de numéro de téléphone possibles). P> user_phonenumber code> et créer une relation 1: nombreuses relation entre utilisateur code> et user_phonenumber code > enregistrements. La table user_phonenumber code> aurait essentiellement quatre colonnes: p>
Réponse courte, multiples colonnes.
Réponse longue: P>
Pour l'amour de tout ce qui est saint dans le monde, ne stockez pas les ensembles de données TISHLE dans une seule colonne de texte p> Je suppose que vous aurez une table qui sera soit P>
+-------------------------------------+ +---------+ | Phone | | Users | +-------------------------------------+ +---------+ | user_name| phone_number | type | | U_name | +-------------------------------------+ +---------+
Si vous travaillez avec JSON, il existe des voies plus élégantes que MySQL. Je recommanderais d'utiliser une autre base de données mieux fonctionner avec JSON, comme MongoDB ou un wrapper pour SQL comme Perseee, http: // www .persvr.org / documentation (voir "perstore") p>