【发布时间】:2010-08-01 01:58:56
【问题描述】:
我有 3 个表格,可以让我获取某张图片的所有标签,或所有带有特定标签的图片。
我还想知道每个标签存在的次数。我如何使用 MySQL 获取这些信息?
是否值得在Tags 表中添加一个“计数”列来保存此信息?
文件表
File ID File Name ...
------- ---------
1 a.jpg ...
2 b.png ...
3 c.jpg ...
. .
. .
. .
标签表
Tag Name Tag Creator ...
-------- -----------
David david ...
2010 julia ...
. .
. .
. .
FilesTags 表
File ID Tag Name
------- --------
1 2010
1 April
1 David
2 2010
2 Julia
3 Friends
. .
. .
. .
【问题讨论】:
-
您可能会遇到问题,使用 TAGS 主键的自然键。基于字符串的键较慢,因为在 MySQL 中 VARCHAR(4) 与 INT 的空间相同 - 在此之上,您使用的空间比 INT 更多。另外,如果您想更改标记名值 - 您将不得不更新 FilesTags 表中的所有支持引用。
-
@OMG Ponies:这就是具有级联更新的外键的用途(但 Oracle 不支持)。此外,使用自然主键还有一些好处:您不必进行额外的连接来获取标签字符串。
标签: mysql database database-design