gpt4 book ai didi

MYSQL 标签列冗余

转载 作者:行者123 更新时间:2023-11-29 04:09:54 34 4
gpt4 key购买 nike

我有一个这样的标签表:

TAG ID | TAG_NAME | IMAGE_ID 

ex:
1 | FUNNY | 10 <br />
2 | DOG | 10
3 | SUNNY | 10
4 | JULY | 10

并且我还在图像表中保留对与图像关联的所有标签的引用

IMAGE_ID | IMAGE_NAME | IMAGE_TAGS ( varchar(255) utf8_general_ci )     

ex:
10 | dog.jpg | FUNNY,DOG,SUNNY,JULY

图像表中标签列的原因是,如果检索到图像,则也可以检索所有关联的标签,而无需深入标签表。但出于某种原因,我开始认为最好从标签表中获取所有关联的标签以减少冗余并确定它与该标签相关联(它可能已被删除或删除但数据不匹配)-
但话又说回来,我也觉得保留标签栏可能是有益的。我不知道是应该保留还是删除该栏。我是不是想多了?

最佳答案

是的,应该删除 image_tags 列。

当您存储逗号分隔的数据时,您将失去数据库引擎附带的所有索引和完整性优势。这就是为什么它被认为是 sql 反模式的原因。

您的标签表可能也不应该有 image_id 列。考虑使用此模式:

tags
---
tag_id *
tag_name

images
---
image_id *
image_name

imagetags
----
it_image_id *
it_tag_id *

每个图像的标签保存在 m:n 表 imagetags 中。外键约束将有助于进一步加强数据完整性。

关于MYSQL 标签列冗余,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14540128/

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