我正在尝试建立一个允许照片标记的数据库。我希望照片应该显示标签,并在单击时显示具有相同标签的所有其他照片。一种方法是使用存储标签和照片的 ID,但这需要在上传照片时插入至少 3 个表(照片表、标签表、查找表,而且我必须搜索标签是否已经存在的第一个天气)。而且当我显示与特定标签相关的图像时也会花费更多时间。我认为第二种方法是制作标签表并将照片表的 id 存储为外键和标签名称。这里我有在没有搜索的情况下只更新两个表,并且在显示时我只使用两个表来匹配特定的标签条目。帮助我找出问题并提出其他解决方案是否可行。插入和显示的速度很重要
问问题
127 次
2 回答
0
您应该创建三个表。
照片、标签和 photo_tags。photo_tags 是您的参考表。
这允许照片和标签具有多对多的关系。
可以使用三个表。在现实生活中,我们使用许多表,如果您使用正确的连接编写选择语句,数据库会非常快。
于 2012-06-18T03:43:57.417 回答
0
您的照片和标签似乎具有所谓的多对多关系。照片可以有很多标签,标签可以有很多照片。
因此,您确实需要第三个表来表示这种关系。这通常称为连接表,因为它用于JOIN
查询中的两个正确表。
确实,这意味着还要维护一个表,但这是对这种关系建模的唯一方法(在大多数 DBMS 中,包括 MySQL)。
将标签添加到照片时,查找该标签,如果它不存在,则创建它。然后使用该标签的 ID 和照片 ID 在连接表中插入一行。
于 2012-06-18T03:44:17.907 回答