おすすめのSQLデータベース設計のためのタグやタグ付け[定休日]
-
09-06-2019 - |
質問
いというのは、聞いたことながら、その方法の実施のタグ付け;をマッピングテーブルとTagIDとItemID(意味がない場合で、かつ、そのよう), 追加の固定はできなTagID列ItemID(う悪)このメソッドをオーバーライドは、タグのテキストカラムがコンマで区切られた音の狂ってしまいます。私も聞いた人におすすめ疎行列がどのようにタグ名の成長を優雅に?
私を失って最善の実践のためのタグ?
解決
三つのテーブル(片の保存全項目には、すべてのタグとの関係について、適切にインデックス,海外のキーセット走行に適切なデータベースはよく働き、よく規模です。
Table: Item
Columns: ItemID, Title, Content
Table: Tag
Columns: TagID, Title
Table: ItemTag
Columns: ItemID, TagID
他のヒント
通常はこのYaakovエリスがこの特別な場合が可能な液
利用テーブル:
Table: Item
Columns: ItemID, Title, Content
Indexes: ItemID
Table: Tag
Columns: ItemID, Title
Indexes: ItemId, Title
この主なメリット:
最初で開発が簡単になり:のテーブル解決のための挿入や更新 item
ましてルックアップの Tag
テーブルがきていることを確認して下さいています。しかし、参加しています。こんな些細な課題です。
そこで質問より簡単な(かります。が主要なデータベースのクエリです:すべての出力 Tags
一つの Item
, を引いたり、タグクラウドと全てのアイテムを選択するときのための一つのタグのタイトル。
すべてのタグに一目:
3つのテーブル:
SELECT Tag.Title
FROM Tag
JOIN ItemTag ON Tag.TagID = ItemTag.TagID
WHERE ItemTag.ItemID = :id
2つのテーブル:
SELECT Tag.Title
FROM Tag
WHERE Tag.ItemID = :id
タグクラウド:
3つのテーブル:
SELECT Tag.Title, count(*)
FROM Tag
JOIN ItemTag ON Tag.TagID = ItemTag.TagID
GROUP BY Tag.Title
2つのテーブル:
SELECT Tag.Title, count(*)
FROM Tag
GROUP BY Tag.Title
項目一タグ:
3つのテーブル:
SELECT Item.*
FROM Item
JOIN ItemTag ON Item.ItemID = ItemTag.ItemID
JOIN Tag ON ItemTag.TagID = Tag.TagID
WHERE Tag.Title = :title
2つのテーブル:
SELECT Item.*
FROM Item
JOIN Tag ON Item.ItemID = Tag.ItemID
WHERE Tag.Title = :title
であるが、一部の欠点がありまの動きをタイムリーかつスペースのデータベースなどをきっかけによりディスクに作業が遅い)で規格化につながる不整合.
サイズ引数ではないが強いので、自然のタグをするのは、それらは正常に可愛らしい小のサイズの増加は大きくなる。そもそも検索、タグのタイトルはなく、ある小さなテーブルを含む各タグを一度だけそのこはtrueです。もしについての貯蓄していくから用地を探してもらいそして、"一太刀の裏切ることができるというのもとても良いインデックスが簡単に補正します。このコースを大きく依存しているサイズのデータベースされています。
の矛盾の引数は議論の余地がある問題です。タグのフリーテキストフィールドとの通りであり操作のように変更すべてのタグは"foo"を"bar"'.
でtldr:今度のテーブル。実際行っています。この記事への参照がある場合に有効な議論する技術を開発しているのです)
ご利用の場合データベースを支援する地図-削減のようにapache couchdbが持つ、保存のタグをプレーンテキストフィールドリスト分野ではベストです。例:
tagcloud: {
map: function(doc){
for(tag in doc.tags){
emit(doc.tags[tag],1)
}
}
reduce: function(keys,values){
return values.length
}
}
このグループ=trueにグループの結果によるタグの名前で返し回数の回数だけそのタグが発生します。この 計数の発生を単語のテキスト.
モーバイルコンピューティングフォーマットされたテキスト欄に[1]の保存のタグを使用できる全文検索エンジンのインデックスです。他でスケーリング問題にしようとした場合に実施すbooleanます。
が必要な場合のタグをすることができますが、追跡するまでの段階的に維持しテーブルやバッチジョブの情報です。
[1]一部のRDBMSにもネイティブ配列の型がも適して保存する必要はありません、解析ステップが、この問題の全文を検索する
私は常にタグを個別のテーブルしたマッピングする。もちろんいは何も行われ、本当に大規模なります。
有する"タグ"テーブルおよび地図表なくかわいいを簡単に生成タグクラウド提供することができるので簡単にとSQLの一覧を取得するためのタグをカウントのターなどの各タグを使用します。
私はあなたが以下のデザイン:品目テーブル:Itemid,taglist1,taglist2
これは高速、簡単に保存、検索、データ項目です。
並列構築別のテーブル:タグ タグ なタグの識別子がしっかりしており、スペースで2カラムを含んでい100項目の作成も行います。
現在から商品を検索タグにできました。