Etiketler sistemini desteklemek için sql düzeni nedir?

2 Cevap php

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

2 Cevap

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