[解決済み] タグ付けのためのデータベース設計【終了しました
2022-04-20 21:50:27
質問
以下のタグ付け機能をサポートするために、データベースをどのように設計しますか。
- アイテムは多数のタグを持つことができる
- 指定されたタグのセットでタグ付けされたすべてのアイテムの検索を迅速に行う必要があります(アイテムはすべてのタグを持つ必要があるため、OR検索ではなくAND検索になります)。
- アイテムの作成/書き込みは、素早く検索/読み取りができるようにするため、遅くなることがあります。
理想的には、(少なくとも)n個の与えられたタグのセットでタグ付けされたすべてのアイテムの検索は、単一のSQLステートメントを使用して実行される必要があります。検索するタグの数だけでなく、アイテムのタグの数も未知であり、高くなる可能性があるため、JOINを使用することは現実的ではありません。
何かアイデアはありますか?
今までの回答ありがとうございました。
しかし、私が間違っていなければ、与えられた回答は、タグのOR検索を行う方法を示しています。(n個のタグの1つ以上を持つすべての項目を選択する)。私は効率的なAND-searchを探しています。(すべてのn個のタグを持つすべてのアイテムを選択する - そしておそらくもっと。)
どのように解決するのですか?
AND化について。関係除算の操作をお探しのようですね。 この記事 関係詞分割について、簡潔かつ理解しやすい方法で説明しています。
パフォーマンスについて。ビットマップベースのアプローチは、直感的にこの状況に合っているように思います。しかし、digiguruが提案するように、ビットマップインデックスを"manual"で実装するのは良い考えとは思えません。しかし、Oracleを含むいくつかのDBMSはビットマップインデックスを提供しており、これは何らかの形で役に立つかもしれません。
関連
-
windows mysql prompt access denied for user ''@'localhost' to database.
-
[解決済み] SQL Serverで実行中の合計を計算する
-
[解決済み] ...値に挿入する ( SELECT ... FROM ... )
-
[解決済み] JOINとINNER JOINの違いについて
-
[解決済み] SQLのIN句をパラメータ化する
-
[解決済み] PostgreSQLからのPL/pgSQL出力をCSVファイルに保存する
-
[解決済み] SQL Serverでレコードを削除した後、IDシードをリセットする。
-
[解決済み] DISTINCTでCOUNT(*)を選択する
-
[解決済み] SQL ServerでINSERT INTOとしてデータをエクスポートする
-
[解決済み] "ON UPDATE CASCADE "を使用する場合について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
解決策:ユーザー root で localhost:3306 にある MySQL に接続できませんでした。
-
windows mysql prompt access denied for user ''@'localhost' to database.
-
[解決済み] LINQでInclude()は何をするのですか?
-
[解決済み] SQLのSELECTでIF...THENを実行するにはどうすればよいですか?
-
[解決済み] SQL Serverでストアドプロシージャ内のテキストを検索する
-
[解決済み] SQL JOIN - WHERE句とON句の比較
-
[解決済み] postgres: ユーザーをスーパーユーザーにアップグレードしますか?
-
[解決済み] SQLiteデータベースで、一度に複数行を挿入することは可能ですか?
-
[解決済み] SQL ServerでINSERT INTOとしてデータをエクスポートする
-
[解決済み】タグまたはタグ付けのための推奨SQLデータベース設計【クローズド