gpt4 book ai didi

mysql - 将多个标签组与多个模型相关联

转载 作者:行者123 更新时间:2023-11-30 22:00:52 25 4
gpt4 key购买 nike

所以我在我的 Laravel 项目中有 3 个主要模型表用于 may 数据库中的历史数据收集:

  • 圣人
  • 神社
  • 事件

我想为模型的每个实例添加标签以关联属性,以便可以比较它们。我可以用一个“标签”表来做到这一点,然后可能还有 3 个具有相应 ID 的额外数据透视表(saint_tag、shrine_tag、event_tag)。

但是,我想在每个模型中对标签进行分组,尤其是神殿。因此标签将与每个模型上的特定问题/字段相关,它可能由几组标签组成,对于 Shrine 来说可能是:

标签组

  • Material :石头、金、银
  • 类型:雕塑,手工制作
  • 显示:人物、成人、 child 、皇室、活着
  • 神殿中出现的圣人:还活着,打手势,悲伤

这是一个基本示例,但如您所见,alive 出现在具有相同模型的两个组中,在比较数据时能够区分它属于哪个组很重要。

我不想只将标签存储为每个字段的字符串数组,这样我就不仅仅是比较实例的字符串。主要是为了我可以向从标签表中输入数据的用户建议标签,并且应该有助于保持一致性。

那么最好如何在数据库中进行设置呢?也许在数据透视表中有一个单独的列,例如“tag_group”?所以 shr​​ine_tag 可能有一个 [tag_id, shrine_id, tag_group] 的主键?

此外,理想情况下,我希望能够轻松扩展,这样我就可以向系统添加不同的模型,而无需大量额外的表。因此,使用 4 向主键(如 [tag_id, tag_group, model_id, model_type])为所有模型的标签和组创建一个数据透视表是个好主意。这样我就可以在没有新数据透视表的情况下添加新模型类型了吗?或者这被认为是不好的做法?

谢谢

最佳答案

我的 2 美分:您走在正确的轨道上,只需要稍作调整。您可以将 tag_group 规范化为一个单独的表,并从数据透视表中引用 id。在这样的数据透视表中,现在有 [tag_id, shrine_id, group_id] 如果你想保持组和标签的唯一性,你可以将 3 列索引为主要列。

关于mysql - 将多个标签组与多个模型相关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43409367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com