gpt4 book ai didi

mysql - 关系表的最佳方式

转载 作者:行者123 更新时间:2023-11-29 00:23:36 24 4
gpt4 key购买 nike

我有一个关于表和关系表的问题......
其实我有这3张表

CREATE TABLE USER (
ID int(11) NOT NULL AUTO_INCREMENT,
NAME varchar(14) DEFAULT NULL
);

CREATE TABLE COUNTRY (
ID int(11) NOT NULL AUTO_INCREMENT,
COUNTRY_NAME varchar(14) DEFAULT NULL
);

CREATE TABLE USER_COUNTRY_REL (
ID int(11) NOT NULL AUTO_INCREMENT,
ID_USER int(11) NOT NULL,
ID_COUNTRY int(11) NOT NULL,
);

好的,现在,1 个用户可以拥有一个或多个国家,因此,一个用户在 USER_COUNTRY_REL 表中有多个条目。
但是,我的表 USER 包含近 130.000 个条目 ...
即使对于 1 个国家/地区的用户,USER_COUNTRY_REL 表也将近 10Mo。
我有几个这种风格的相关表格......

我的问题是,这是最快、更好的方法吗?

直接在 USER 表中放入包含不同 ID 的 COUNTRY 字段(例如:“2、6、...”)不是更好吗?

谢谢大家 ;)

最佳答案

就时间限制而言,您拥有它的方式是最佳的。当然,它占用更多空间,但这是 space-time tradeoff 的一部分- 如果你想更快,你使用更多的空间;如果您想使用更少的空间,它会运行得更慢(平均而言)。

另外,想想 future 。现在,您可能正在为每个用户选择国家/地区,但请稍等。由于范围蔓延的魔力,您的应用程序有一天需要选择给定国家/地区的所有用户,此时扫描每个用户的“国家/地区”字段以查找匹配项将非常慢,而不是仅通过倒退USER_COUNTRY_REL 表,就像您现在可以做的那样。

一般而言,对于一对一或一对多的关联,您可以通过外键链接。对于多对多关联,您希望在两者之间有一个关系表。这种情况是多对多关系,因为每个用户有多个国家,每个国家有多个用户。

关于mysql - 关系表的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20098481/

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