假设我想在Postgres 9.3 DB中存储一些图像ID及其标签,以便我可以:
1)鉴于图像ID,我可以得到它的标签;
2)给定一个标签,我可以找到那些带有这个标签的图像。
哪个表结构更适合此问题?
a)image_id
作为PKEY,列tag
将与此图像关联的标记存储为数组;
b)tag
作为PKEY,列image_id
存储将此标记作为数组的image_ids;
c)(image_id, tag)
作为PKEY。
d)其他表格结构。
我认为c)更好,但我没有任何实际经验,所以有什么建议吗?
感谢。
答案 0 :(得分:1)
您的选项C更好主要是因为它可以通过标记索引并且还可以将外键强制回映像表。
解决方案b也可以通过标记进行索引,但不能有良好的外键约束,并且在删除图像时必须运行昂贵的查询。
解决方案a具有外键,但不能通过标记索引,并且将是解决方案中最慢的,具体取决于特定查询。