Ben insanlar konuları nakleder php küçük bir forum yazılımı kodlu ettik, ve ben etiketleri desteklemek istiyoruz.
Bunun için kaç SQL tabloları i yapmak gerekir? ve kısaca Tag sistemi nasıl çalışacak?
Teşekkürler
M ilişki tablo (tag_id, Post_id): Temelde etiketleri (id, tag) masa ve etiketleri-to-mesajların M gerekiyor. Belirli bir etiket için mesajları seçmek için
select posts.* from posts, tags, post_tags
where post_tags.post_id = posts.id
and post_tags.tag_id = tags.id
and tags.tag = "whatever_tag"
Yorumuna cevaben: tek bir tablo (etiket, post) yaklaşımı "basit" görünebilir, ama tam olarak ölçeklenebilir değil. Ne sizin etiketi için bazı ekstra bilgi eklemek için karar - oluşturma tarihi ve kim tarafından oluşturulduğu gibi. Veya kullanıcılar SO burada gibi "favori etiketleri", atalım - ayrı etiketler tablo olmadan bu zor olacak.
Genel olarak, o başında "karmaşık" görünse bile, veritabanı normalized tutmak daha iyidir.
Yazıda bazı iyi muhakeme ve performans test "Tagsystems: performance tests" vardır