假设我想在 Postgres 9.3 数据库中存储一些图像 ID 及其标签,这样我就可以:
1) 给定一个图片id,我可以得到它的标签;
2) 给定一个标签,我可以找到那些有这个标签的图像。
哪种表结构更适合这个问题?
a) image_id
作为PKEY,tag
列将与此图片关联的标签存储为数组;
b) tag
为PKEY,image_id
列将拥有该tag的image_id存储为数组;
c) (image_id, tag)
作为 PKEY。
d) 其他表结构。
我认为 c) 更好,但我没有任何实际经验,所以有什么建议吗?
谢谢。
最佳答案
您的选项 C 更好,主要是因为它可以通过标签进行索引,并且还可以将外键强制返回到图像表。
解决方案 b 也可以通过标签索引,但不能有良好的外键约束,并且在删除图像时您将不得不运行昂贵的查询。
解决方案 a 具有外键,但无法通过标签索引,并且将是最慢的解决方案,具体取决于具体查询。
关于postgresql - 标签的表结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27378342/