MySQL &

2 Cevap php

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.

2 Cevap

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

Gibi bir şey yapabilirsiniz:

CREATE TABLE tags (
linkid int(10),
tag varchar(20),
primary key(linkid,tag)
);

Yani (linkid, etiketi) ve dizilerini olurdu