gpt4 book ai didi

mysql - 使用 MySQL 的关系模式

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

我正在开发一个系统,其目标是创建一个庞大的数据库来存储关键字(我有一个抓取器来获取这些关键字)。

我使用分区来加速查询,这是我的初始结构:

CREATE TABLE `keywords` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`keyword` char(255) NOT NULL DEFAULT '',
`currency` char(5) DEFAULT NULL,
....
PRIMARY KEY (`id`,`keyword`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
/*!50500 PARTITION BY RANGE COLUMNS(keyword)
(PARTITION p0 VALUES LESS THAN ('a') ENGINE = InnoDB,
PARTITION p1 VALUES LESS THAN ('b') ENGINE = InnoDB,
...
PARTITION p25 VALUES LESS THAN ('z') ENGINE = InnoDB,
PARTITION p26 VALUES LESS THAN (MAXVALUE) ENGINE = InnoDB) */

现在,提出了一个新要求,除了存储关键字外,我还需要一种方法来创建关键字之间的关系。

假设我有一个种子关键字和相关关键字

例子:

种子关键字: Car

相关关键字: Blue Car , Red Car , Convertible Car , 2 doors , 4 doors

在另一个交互中,

种子关键字: Convertible Cars

相关关键字: Ferrari , Mustang , 2 doors ,

然后当用户搜索关键词Car时我需要显示最多 2 个深层次的相关关键字。

-Car
-- Blue Car
-- Red Car
-- Convertible Car
---- Ferrari
---- Mustang

Keywords表格

+----+---------------+
| id | keyword |
+----+---------------+
| 1 | Car
| 2 | Blue Car
| 3 | Convertible Car
| 4 | Ferrari
| 5 | Mustang
| 6 | Red Car
+----+---------------+

我正在考虑使用 Proxy存储关键字之间关系的表

Relationship表格

+----+----------+-----------+
| id | seed_id | related_id |
+----+----------+-----------+
| 1 | 1 | 3
| 2 | 3 | 4
| 3 | 3 | 5
| 4 | 3 | 6
| 5 | 1 | 2
+----+----------+-----------+

最后,使用 LEFT/JOINS 创建正确的查询。

鉴于关键字表可能有数亿行,您如何看待这种方法?

另一个想法是只保留关键字表并添加一个 parent_id 字段,但在这种情况下,我将有重复的关键字,我的首要任务是为每个关键字保留一行,以免得到一个更时髦的表。

提前致谢。

最佳答案

问题是,一个关键字可以有多少关系?如果是接近父子关系的东西,即一个item只有一个parent,但是可以有多个children,那么最好使用这样的结构:


+----+--------------------+------------+
|编号 |关键字 |父 ID |
+----+--------------------+------------+
| 1 |汽车 | 0 |
| 2 |蓝车 | 1 |
| 3 |敞篷车 | 1 |
| 6 |红车| 1 |
| 6 |野马 | 3 |
| 6 |法拉利 | 3 |
+----+--------------------+------------+
简单的左连接同一张表将帮助你。

关于mysql - 使用 MySQL 的关系模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34860995/

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