Nasıl etiket sistemi uygulamak
En iyi yolu etiket sistemi uygulamak için ne KADAR kullanılır gibi merak ediyordum. Bu düşünüyordum ama iyi kullanmalarına olanak ile gelmiyor.
3 tablo temel bir çözüm düşünüyorum: tags
tablo, articles
tablolar tag_to_articles
Bir tablo. bir sahip
Bu sorun için en iyi çözüm, ya da alternatif var mı? Tablo bu arama için zaman ve çok büyük olacaktı bu yöntemi kullanarak çok verimli olmadığını düşünüyorum. Öte yandan sorgu hızlı yürüten bir o kadar da önemli değil.
CEVAP
İlginç bir blog yazısı bulacağına inanıyorum: Tags: Database schemas
Sorun: bir etiket bulunduğu bir veritabanı şema istiyorum istediğiniz kadar etiket ile yer imi (ya da bir blog yazısı ya da her neyse). Daha sonra, bir için yer imleri sınırlamak için sorgular çalıştırmak istediğiniz etiketler Birliği veya kavşak. De dışarıda bırakmak istiyorsanız (ki: eksi) arama sonucunda bazı etiketler.
“MySQLicious” çözüm
Bu çözüm, şema sadece bir tablo var, normal dışı. Bu tür “” MySQLicious ithalat del çünkü.MySQLicious çözüm denir-- .bize bu yapı ile bir tabloya veri.
Kesişim (VE) Sorguda“”: . arama Java eklentisi semweb
SELECT *
FROM `delicious`
WHERE tags LIKE "%search%"
AND tags LIKE "%webservice%"
AND tags LIKE "%semweb%"
Birliği (VEYA) Sorguda“”: . arama|Java eklentisi|semweb
SELECT *
FROM `delicious`
WHERE tags LIKE "%search%"
OR tags LIKE "%webservice%"
OR tags LIKE "%semweb%"
Eksi Sorgu “arama Java eklentisi-semweb”
SELECT *
FROM `delicious`
WHERE tags LIKE "%search%"
AND tags LIKE "%webservice%"
AND tags NOT LIKE "%semweb%"
“Bir yandan da” çözüm
Scuttle iki tablodaki verileri düzenler. Bu tablo “” “”-tablo ve yabancı anahtar var “”-tablo. yer imi etiketi olduğu scCategories
Kesişim (VE) Sorguda“”: . imi Java eklentisi semweb
SELECT b.*
FROM scBookmarks b, scCategories c
WHERE c.bId = b.bId
AND (c.category IN ('bookmark', 'webservice', 'semweb'))
GROUP BY b.bId
HAVING COUNT( b.bId )=3
Etiketi olduğu ilk yer imi etiketi tüm kombinasyonları aranır,“”, “” veya “” (c.semweb Java eklentisi imi('', '', '') semweb), o zaman sadece üç etiketi için aranan var yer imleri hesaba (SAYIM OLMASI(b.Java eklentisi bookmark kategori teklif)=3).
Birliği (VEYA) Sorguda“”: . imi|Java eklentisi|semweb Sadece yan bırakın ve birlik vardır:
SELECT b.*
FROM scBookmarks b, scCategories c
WHERE c.bId = b.bId
AND (c.category IN ('bookmark', 'webservice', 'semweb'))
GROUP BY b.bId
Eksi (Dışlama) “Yer imi Java eklentisi-semweb”, yani: imi VE semweb. Java eklentisi sorgu için
SELECT b. *
FROM scBookmarks b, scCategories c
WHERE b.bId = c.bId
AND (c.category IN ('bookmark', 'webservice'))
AND b.bId NOT
IN (SELECT b.bId FROM scBookmarks b, scCategories c WHERE b.bId = c.bId AND c.category = 'semweb')
GROUP BY b.bId
HAVING COUNT( b.bId ) =2
İçin Sorgulamak ZORUNDA SAYIMI neden dışarıda bırakarak “imi Java eklentisi-semweb”.|
“Toxi” çözüm
Toxi üç tablolu bir yapı ile geldi. Tabloyu “” imleri ve etiketleri-n m ilgili. tagmap) Her etiket farklı yer imleri ile birlikte ve tam tersi kullanılabilir. Bu da wordpress tarafından kullanılan DB-şema. Sorguların “çözüm. bir yandan da aynıdır oldukça
Kesişim (VE) Sorguda“”. imi Java eklentisi semweb
SELECT b.*
FROM tagmap bt, bookmark b, tag t
WHERE bt.tag_id = t.tag_id
AND (t.name IN ('bookmark', 'webservice', 'semweb'))
AND b.id = bt.bookmark_id
GROUP BY b.id
HAVING COUNT( b.id )=3
Birliği (VEYA) Sorguda“”. imi|Java eklentisi|semweb
SELECT b.*
FROM tagmap bt, bookmark b, tag t
WHERE bt.tag_id = t.tag_id
AND (t.name IN ('bookmark', 'webservice', 'semweb'))
AND b.id = bt.bookmark_id
GROUP BY b.id
Eksi (Dışlama) “Yer imi Java eklentisi-semweb”, yani: imi VE semweb. Java eklentisi sorgu için
SELECT b. *
FROM bookmark b, tagmap bt, tag t
WHERE b.id = bt.bookmark_id
AND bt.tag_id = t.tag_id
AND (t.name IN ('Programming', 'Algorithms'))
AND b.id NOT IN (SELECT b.id FROM bookmark b, tagmap bt, tag t WHERE b.id = bt.bookmark_id AND bt.tag_id = t.tag_id AND t.name = 'Python')
GROUP BY b.id
HAVING COUNT( b.id ) =2
İçin Sorgulamak ZORUNDA SAYIMI neden dışarıda bırakarak “imi Java eklentisi-semweb”.|
Nasıl tıklanabilir bir etiket olan bir...
Nasıl uygulamak için !önemli kullanıyo...
Nasıl pre etiket metni kaydır miyim?...
Nasıl Pull-to-Yenileme Android uygulam...
Nasıl bir etiket bir şube farklıdır? B...