mysql - ラベルテーブルに関するいくつかの問題
私は mysql を学んだばかりで、mysql には詳しくありません。現在、次のようなテーブルが 3 つあります
記事表
id |
###タイトル###
###コンテンツ###
|
|
0
###こんにちは###
###世界###
1 |
###おい###
.... |
|
###質問形式###
|
id |
###タイトル###
###コンテンツ###
|
0
###こんにちは###
###世界###
1
###おい###
.... |
|
| タグテーブル
id |
###名前###
アバター |
|
1 |
java |
.... |
2
js
....
|
| 両方のテーブルはタグ テーブルを共有します。タグ テーブルのアバターはタグのアバターです。各タグには独自のアバターまたはデフォルトのアバターがあります。 | 私の現在の質問は、タグ テーブルを他の 2 つのテーブルに関連付ける方法です?
タグ ID に基づいて記事やトピックをすぐに見つけられるようにする必要があります。
私が最初に考えた解決策は、記事テーブルと質問テーブルの下にタグ フィールドを追加することでした。カンマで区切って(良いのか悪いのか分かりませんが…)調べてみると、検索の仕方が分からない…こうやって検索すればいいのか…likeを使うのか…。 .
記事表 |
|
| id
###タイトル###
###コンテンツ###
タグ
|
|
| 0
###こんにちは###
###世界###
0,1
1
###おい###
....
2,3,4
###質問形式###
|
id |
###タイトル###
###コンテンツ###
タグ |
|
0
###こんにちは###
###世界###
1,4 |
|
1 |
###おい###
.... |
6,3
|
| そこで2つ目の案を考えたのですが、記事テーブルと質問テーブルの構造は基本的に同じなので、統合できないでしょうか?
| 質問と記事の件名の組み合わせ....
|
id
###タイトル###
###コンテンツ###
タグ
###タイプ###
|
0 |
###こんにちは###
###世界###
1,4 |
###記事###
|
1
###おい###
....
6,3 |
###質問###
|
| じゃあ、マージしないほうがいいんじゃないでしょうか? データベースは分けてもそれほど大きくないので、ラベルが 1 の質問をすべて見つけたいだけなら、単一のテーブル クエリのほうが速いですが、右?###
そこで、3 番目の解決策を考えました。関連テーブルを作成するのはどうでしょうか? この関連テーブルには ID が必要ですか...よくわかりません。関連テーブルがある場合、記事と記事のテーブルになります。質問がありますか? タグ フィールドは必要ありません。 |
関連付けテーブル
|
| aq_id
| タグID
|
0
1
1
| 6
|
| 0
| 4
|
1
3
|
| このクエリは比較的単純に見えますか? 1 つの select ステートメントだけで実行でき、クエリ速度も悪くありません... しかし、時間が経つにつれて、この関連テーブルには間違いなく大量のデータが含まれるようになります。クエリは非常に遅くなりますか?
誰かが私に答えてくれることを願っています...皆さん、よろしくお願いします
全員に返信(2)返信します
漂亮男人2017-05-18 10:51:42
まず、私はあなたがくれた記事テーブルと質問テーブルに目がくらみました...構造が同じなら、データも同じなら忘れてください...
次に、あなたが仲良くしていたソリューションタグタグを変更するのは難しいです。そして、あなたが言ったように、クエリは困難です。
記事テーブルと質問テーブルの統合については、これは完全に不要です。データベース、データベースのパラダイムを理解できます。
最後に、関連付けテーブル このアイデアは非常に優れており、aq_id と tag_id の使用も正しいです。将来的にデータが大量になるかもしれないと言っているのですが、心配しないでください。mySql はベジタリアンではないことは言うまでもなく、データが多すぎる問題も将来の研究で解決されます
返事
0我想大声告诉你2017-05-18 10:51:42
最初にうまくいくための解決策は、タグ内の各数値を記号で区切ってクエリできることです (例: 1、11、31)。 「%、1、%」のように。これで分かるはずです。
返事
0 キャンセル返事