gpt4 book ai didi

javascript - mysql中可以存储字符串格式的数组吗?

转载 作者:行者123 更新时间:2023-11-29 10:35:20 24 4
gpt4 key购买 nike

或者更好,这是好的做法吗?

我想存储书签,每个书签一行。我想要一个标签列,它是一个字符串格式的数组,其中包含定义它的标签的层次结构。例如:

url | tag
'stackoverflow.com', '[faves, internet, QandA]'

我当前的表格如下,我只想修改tag列以字符串形式保存数组。

enter code here

最佳答案

不,将逗号分隔的列表存储在字符串中通常不是一个好主意。

异常(exception):如果您的查询始终将整个字符串视为字符串,并且不需要使用 SQL 表达式来搜索单个元素,那么这样做并没有什么坏处。

在 SQL 中,最好将每一列视为单个标量值,而不是数组。如果您将列视为可以分解为子部分的内容,那么处理数据就会变得尴尬且低效。

对于您的标签,您应该有一个一对多标签表,以便每个书签可以被多个标签引用,标签表中的每一行一个标签。

或者实际上是一个标签查找表,然后是一个将书签映射到其标签的多对多表。

CREATE TABLE Tag (
tag_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
tag VARCHAR(50) NOT NULL
);

CREATE TABLE BookmarkTag (
bookmark_id INT NOT NULL,
tag_id INT NOT NULL,
PRIMARY KEY (bookmark_id, tag_id),
FOREIGN KEY (bookmark_id) REFERENCES Bookmark(bookmark_id),
FOREIGN KEY (tag_id) REFERENCES Tag(tag_id)
);

这为您提供了更大的灵 active ,例如:

  • 每个书签的标签数量没有限制
  • 轻松搜索特定标签
  • 轻松计算每个书签有多少个标签
  • 轻松防止重复、控制允许的标签、从使用该标签的每个书签中删除给定标签等。

另请参阅我对 Is storing a delimited list in a database column really that bad? 的回答

关于javascript - mysql中可以存储字符串格式的数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46517408/

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