Ben bir webapp oluşturma. Ben etiketleri desteklemek istiyorum. Nasıl MySQL tablo kurarım? Ben çeşitli etiketleri ile bir bağlantı ilişkilendirmek istiyorum.
Aşağıdaki biçim link başına birden fazla etiket izin verir ve bağlantılar aynı etiketleri paylaşmanızı sağlar. Bu kolayca bağlantılar popüler olduğunu görmek için izin verir, ve aynı zamanda yinelenen etiketler depolama kaçının.
Schema
Links
LinkID
Url
Name
Tags
TagID
Name
LinkTags
LinkID
TagID
Sample data:
Links
---------------------------------------------------
LinkID URL Name
1 http://avira.com/ Avira Antivirus
2 http://microsoft.com/ Microsoft
---------------------------------------------------
Tags
---------------------------------------------------
TagID Name
---------------------------------------------------
1 Software
2 Antivirus
3 Operating Systems
---------------------------------------------------
LinkTags
---------------------------------------------------
LinkID TagID
---------------------------------------------------
1 1
1 2
2 1
2 3
Queries
Linkler ve etiketler:
SELECT Links.*, GROUP_CONCAT(Tags.Name) AS TagList
FROM Links
LEFT JOIN LinkTags
ON LinkTags.LinkID = Links.LinkID
LEFT JOIN Tags
ON Tags.TagID = LinkTags.TagID
GROUP BY Links.LinkID
Ten en popüler etiketler:
SELECT Tags.*
FROM LinkTags
LEFT JOIN Tags
ON Tags.TagID = LinkTags.TagID
GROUP BY LinkTags.TagID
ORDER BY (COUNT(LinkTags.LinkID)) DESC
LIMIT 10