【问题标题】:Table structure for tags标签的表结构
【发布时间】:2014-12-10 02:27:00
【问题描述】:

假设我想将一些图像 ID 及其标签存储在 Postgres 9.3 数据库中,这样我就可以:

1) 给定一个图像 id,我可以得到它的标签;

2) 给定一个标签,我可以找到那些有这个标签的图片。

哪种表结构更适合这个问题?

a) image_id 作为 PKEY,tag 列将与此图像关联的标签存储为数组;

b) tag 为 PKEY,image_id 列将具有此标签的 image_ids 存储为数组;

c) (image_id, tag) 作为 PKEY。

d) 其他表结构。

我认为 c) 更好,但我没有任何实际经验,有什么建议吗?

谢谢。

【问题讨论】:

  • c 是默认解决方案,几乎适用于任何使用关系数据库的情况。
  • 您还想对数据库做什么?如果只是图像 id 和标签,这听起来有点矫枉过正,没有数据库会有更好的解决方案。这些是多人的图像 ID 和标签吗?它们是共享的吗?图像会存储在数据库中吗?

标签: postgresql database-design


【解决方案1】:

您的选项 C 更好,主要是因为它可以通过标签进行索引,并且还可以将外键强制返回到图像表。

解决方案 b 也可以通过标签进行索引,但不能具有良好的外键约束,并且在删除图像时必须运行昂贵的查询。

解决方案 a 具有外键,但不能按标签索引,并且将是最慢的解决方案,具体取决于具体查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多