【问题标题】:what is the best design for the table which have one forign key and the FK has multiple tags and every tags has its own table table什么是具有一个外键且 FK 具有多个标签且每个标签都有自己的表的表的最佳设计
【发布时间】:2020-02-11 20:00:40
【问题描述】:

嘿,我只是想为照片创建一个表。它有一个可以存储多种类型的列,就像它属于(野生动物、自然、冒险..等)和标签一样,它有自己的表用于表更新记录

【问题讨论】:

    标签: mysql database database-design entity-relationship


    【解决方案1】:
    photos:
        id,
        who, when, where
    
    tags:   -- this is a many:many mapping table
        photo_id,   -- join to photos.id
        tag VARCHAR(99)
        PRIMARY KEY(tag, photo_id),
        INDEX(photo_id, tag)
    

    tag 栏目可能有野生动物、自然、冒险等

    如果通过标签,您的意思是category,而一张照片只属于一个类别,那么它的做法会有所不同:将category(或category_id)添加到photos。这是1:many 关系。

    【讨论】:

    • 我不明白你的意思,你能不能让我更清楚一点。我只想创建一个表关系,其中一列有多种类型的标签或关键字,每个关键字也有自己的表,其中主表的每个条目也反映标签表。作为新手,请以更清晰的方式建议我
    • "...每个关键字也有自己的表格..." -- 不要有多个表格。我假设“标签”、“类型”和“关键字”是彼此的同义词;如果您认为它们有所不同,那我就错过了。
    • 谢谢你的建议,是的,这些东西也一样,但请澄清你的建议。
    【解决方案2】:

    您可以继续保留 6 列。

    photo_tag_id、photo_tag、photo_links、photo_created_date、photo_updated_date

    在将数据存储在 MySql 中时,该表在 photo_tag_id 和 photo_tag 上是唯一的,主索引在 photo_tag_id 上,辅助索引在 photo_tag 列上。您可以随时根据 photo_tag_id 和 photo_tag 的过滤条件进行更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-20
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-03
      相关资源
      最近更新 更多