gpt4 book ai didi

mysql - 如何存储具有多个 url 的数据

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

我制作了一个抓取工具,它在每个链接的源代码中寻找指定的字符串。问题是我想存储哪个链接包含特定字符串。例如:

+--------+----------------------------------------+
| String | Links |
+--------+----------------------------------------+
| Apple | example1.com example2.com example3.com |
+--------+----------------------------------------+
| Banana | example6 example1 example12124 |
+--------+----------------------------------------+
| Carrot | |
+--------+----------------------------------------+
| Melon | example2 |
+--------+----------------------------------------+

对我来说,使用静态刺痛而不是链接会更好。那是因为我每天都会向抓取工具添加新链接,但字符串保持不变。

当然,我可以在每一行中存储完整的链接,但这是一个可怕的解决方案。你能告诉我我该怎么办吗?我正在考虑将每个链接转换为独特的代码,例如来自:

example.com到:m!93xp

它占用的空间更少,但我仍然认为这不是一个好主意。你觉得怎么样?

最佳答案

我花了几次时间才了解您的问题是什么以及您真正要问的是什么。规范化的结构将产生 3 个具有多对多关系的表。

  • 链接表,存储自动生成的主键的完整链接
  • 将字符串存储到自动生成的主键的字符串表
  • 存储 LinkId、StringId 和自动生成的主键的 Occurrences 表。

这将是重复性最低的数据,并且可能是磁盘空间成本最低的,因为如果字符串或链接很长,而是 4 或 8 字节整数,则不会重复它们。请注意,几乎所有现代数据库服务器都有处理和自动生成数字键的方法,您应该让他们这样做,而不是尝试生成您自己的唯一代码!

类似这样的事情:

create table Strings
(
StringID INT IDENTITY(1,1) NOT NULL PRIMARY KEY
, StringValue VARCHAR(100) NOT NULL
)

create table Links
(
LinkID INT IDENTITY(1,1) NOT NULL PRIMARY KEY
,Link VARCHAR(255) NOT NULL
)

CREATE TABLE Occurences
(
OccurenceId INT IDENTITY(1,1) NOT NULL PRIMARY KEY
,StringId INT NOT NULL
,LinkId INT NOT NULL
)

关于mysql - 如何存储具有多个 url 的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38926899/

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