mysql - Quelques problèmes avec les tables d'étiquettes
世界只因有你
世界只因有你 2017-05-18 10:49:42
0
2
736

Je viens d'apprendre MySQL et je ne suis pas familier avec MySQL. Maintenant, j'ai trois tables comme celle-ci

.

Tableau des articles

id titre contenu
0 bonjour monde
1 ....

Formulaire de questions

id titre contenu
0 bonjour monde
1 ....

Tableau des balises

id nom avatar
1 Java ....
2 js ....

Les deux tables partagent une table de balises. L'avatar de la table de balises est l'avatar de la balise. Chaque balise a son propre avatar ou un avatar par défaut.
Ma question actuelle est de savoir comment associer la table des tags aux deux autres tables Il faut s'assurer que les articles ou sujets puissent être trouvés rapidement en fonction de l'identifiant du tag ?

La première solution à laquelle j'ai pensé était d'ajouter un champ de balises sous le tableau des articles et le tableau des questions. Séparez par des virgules (je ne sais pas si c'est bon ou pas...), et puis j'ai découvert que je ne sais vraiment pas comment chercher... Comment rechercher comme ça... Est-ce que j'utilise like. ..

Tableau des articles

id titre contenu étiquettes
0 bonjour monde 0,1
1 .... 2,3,4

Formulaire de questions

id titre contenu étiquettes
0 bonjour monde 1,4
1 .... 6,3

Ensuite, j'ai pensé au deuxième plan, car les structures de la table des articles et de la table des questions sont fondamentalement les mêmes, puis-je les fusionner

?

Une combinaison de question et de sujet d'article....

id titre contenu étiquettes type
0 bonjour monde 1,4 article
1 .... 6,3 question

Alors je pense qu'elle ne devrait pas être fusionnée, n'est-ce pas ? Parce que la base de données n'est pas si grande si elle est séparée. Si je veux juste trouver toutes les questions avec une étiquette de 1, sera-t-il plus rapide d'interroger dans une seule table ?

Puis j'ai pensé à un troisième plan, que diriez-vous de faire un tableau de corrélation ? Est-ce que ce tableau de corrélation a besoin d'un identifiant que je ne comprends pas très bien.. S'il y a un tableau de corrélation, alors les tableaux d'articles et de questions ne le seraient-ils pas ? différent ? Le champ tags est nécessaire.

Table des associations

aq_idtag_id01160413

Cette requête semble relativement simple ? Elle peut être effectuée avec une seule instruction select, et la vitesse de requête n'est pas mauvaise... Mais avec le temps, cette table associée contiendra certainement beaucoup de données, et cette requête devrait être très compliqué. Ralentir ?

J'espère que quelqu'un pourra me donner des réponses... Merci à tous d'avance

世界只因有你
世界只因有你

répondre à tous(2)
漂亮男人

Tout d'abord, j'ai été ébloui par le tableau d'articles et le tableau de questions que vous m'avez donné... Oubliez ça si la structure est la même, les données sont toujours les mêmes...
Deuxièmement, les balises de solution que vous avez utilisées pour vous entendre au début ne sont pas conseillés... C'est difficile Modifier les balises, et comme vous l'avez dit, c'est difficile d'interroger
Quant à la fusion de la table des articles et de la table des questions, elle est totalement inutile. base de données, vous pouvez comprendre le paradigme de la base de données ;
Enfin, la table d'association L'idée est très bonne, et utiliser aq_id et tag_id est également correct. Quant à vous dites qu'il pourrait y avoir beaucoup de données dans le futur, ne vous inquiétez pas, sans compter que mySql n'est pas végétarien, le problème de trop de données sera également résolu dans votre future étude

我想大声告诉你

La solution que vous acceptez au début est que les balises peuvent être interrogées. Chaque nombre dans les balises est séparé par des symboles. Utilisez comme pour interroger, par exemple, ,1,11,31. "%, 1, %". Cela devrait pouvoir le découvrir.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal