0

私のウェブサイトの 1 つにタグ システムを追加する必要があります。

今、私はこのようなものをコーディングしています:

tags_table

CREATE TABLE `tags_table` (
`id` int(15) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`seo_url` varchar(50) NOT NULL,
主キー (`id`)

files_table には「tags」フィールドがあります [varchar(250)]

新しいタグを追加すると:

  • tags_table からすべてのタグを一覧表示し、必要なものを選択します
  • タグ名を files_table.tags に保存します -> コンマ区切りの値

そうすれば、ファイルのタグを簡単に表示できます。

ファイルを編集するとき: - タグを選択/選択解除して、再度保存します。

異なるテーブルを使用した方法 II:

  • 私は、tags_files のような別のテーブルを作成し、tag_id と file_id を配置できることを知っています

しかし、ファイルを編集するときに、そのファイルに追加または削除されたタグを確認するにはどうすればよいですか?

より効率的なものは何ですか?

フィールドまたは別のテーブルのカンマ区切りの値?

また、タグ名を編集したり、タグを削除したりすると、すべてのファイルにも変更を加える必要があります。

4

2 に答える 2

2

コンマ区切りの値は使用しないでください。クエリが遅くなる傾向があります。1 つの例外は、MySQL を使用して FULLTEXT インデックスと MATCH を使用する場合ですが、特定の DBMS特定のストレージ エンジン (MyISAM) に縛られている場合です。

タグを含む別のテーブルと、タグ ID をファイルにリンクするリンク テーブルがある場合、次の利点があります。

  • タグの削除は、その ID を持つすべてのレコードをリンク テーブルから削除してから、タグ レコードを削除するのと同じくらい簡単です。
  • タグの名前変更は、1 回の更新にすぎません。
  • 使用可能なタグのリストを簡単に照会し、高速カウントを行って使用頻度を確認できます。
  • まだ使用されているタグを削除できないようにする参照整合性 (外部キー)。
  • タグに一致するファイルを見つけるために「LIKE」などを使用するよりも高速なクエリ。
  • そしておそらくもっとたくさん。
于 2012-10-13T11:44:50.180 に答える
0

要件に応じて、次のものが必要です。

  1. すべてのファイルに加えられる変更
  2. 効率

tags_filesファイルにタグを追加または削除するだけで、テーブル内の新しいエントリを削除または追加できるため、保存用に別のテーブルを使用することを強くお勧めしtags_filesます。

コンマ区切りのアプローチは、次の理由で適切ではありません。

  1. 変更ごとに、files タグの行を編集します。
  2. MySQL の検索機能を利用できず、あまり効率的ではない文字列検索を使用せざるを得なくなるため、検索はより困難になります。
于 2012-10-13T11:44:05.577 に答える