Mysql 将多个标记组与多个模型关联
因此,在我的Laravel项目中,我有3个主要的模型表,用于收集五月数据库中的历史数据:Mysql 将多个标记组与多个模型关联,mysql,laravel,Mysql,Laravel,因此,在我的Laravel项目中,我有3个主要的模型表,用于收集五月数据库中的历史数据: 圣人 神殿 事件 我想向模型的每个实例添加标记,使其与属性相关,以便对它们进行比较。我可以使用一个“tags”表,然后可能使用3个额外的pivot表(saint_标记、sires_标记、event_标记)和相应的id来实现这一点 但是,我想在每个模型中对标记进行分组,特别是在神龛中。因此,标签将与每个模型上的特定问题/字段相关,该问题/字段可能由多组标签组成,对于神龛而言,这些标签可能是: 标记组 材
- 圣人
- 神殿
- 事件
- 材料:石头、金、银
- 类型:雕塑、手工制作
- 展示:人、成人、儿童、皇室,活着
- 神殿里的圣徒:活着,做手势,悲伤
silen\u tag
可能有一个主键[tag\u id,silen\u id,tag\u group]
此外,理想情况下,我希望能够轻松地进行扩展,这样我就可以在系统中添加不同的模型,而无需大量的附加表。因此,最好为所有型号的标签和组提供一个单独的透视表,并使用4路主键,如[tag\u id,tag\u group,model\u id,model\u type]
。这样我就可以添加新的模型类型而不需要新的透视表了?或者这被认为是不好的做法
谢谢我的2美分:你走对了方向,只需要稍微调整一下。您可以将标记组规范化为一个单独的表,并从透视表中引用id。在这种情况下,数据透视表现在有
[tag\u id,sicle\u id,group\u id]
,如果您想保持组和标记的唯一性,可以将这3列作为主列进行索引 我的2美分:你在正确的轨道上,只需要稍微调整一下。您可以将标记组规范化为一个单独的表,并从透视表中引用id。在这种情况下,数据透视表现在有[tag\u id,sicle\u id,group\u id]
,如果您想保持组和标记的唯一性,可以将这3列作为主列进行索引 谢谢,这很有意义,但是当我想向数据库中添加新模型时该怎么办呢。我应该只添加新的透视表,还是应该有model\u type
和model\u id
列(例如4向主列,并删除sicle\u id
),以便允许同一表中不同型号的任意数量的标记?或者我应该把它们都分开吗?谢谢,这很有意义,但是当我想向数据库中添加新模型时该怎么办呢。我应该只添加新的透视表,还是应该有model\u type
和model\u id
列(例如4向主列,并删除sicle\u id
),以便允许同一表中不同型号的任意数量的标记?还是我应该把它们分开?