gpt4 book ai didi

mysql - 在 MySQL 数据库中实现树结构

转载 作者:太空宇宙 更新时间:2023-11-03 10:51:24 27 4
gpt4 key购买 nike

这个问题可能有好几个人问过,但我还是没有得到正确的答案。所以这里是

我想将大洲、国家和城市加载到下方的组合框。所以我需要在它们之间建立关系。意味着城市需要在一个国家,而国家属于一个大陆。所以我当然是在谈论树结构。那么我应该如何在 MYSQL 数据库中以有效的方式实现它呢?需要多少张 table ?如何处理它们之间的关系?

这是图片。

http://i.stack.imgur.com/st4oz.jpg

最佳答案

有表示任意树的正式方法,但我认为以下更简单并且应该足够了:

CREATE TABLE Continents (
id INT AUTO_INCREMENT NOT NULL,
name VARCHAR(20) NOT NULL,
PRIMARY KEY (id),
UNIQUE (name)
)

CREATE TABLE Countries (
id INT AUTO_INCREMENT NOT NULL,
name VARCHAR(20) NOT NULL,
continent INT NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (continent) REFERENCES Continents(id),
UNIQUE (name)
)

CREATE TABLE Cities (
id INT AUTO_INCREMENT NOT NULL,
name VARCHAR(20) NOT NULL,
country INT NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (country) REFERENCES Countries(id),
UNIQUE (name)
)

我没有测试代码,所以可能有一些语法错误。不过,我希望意图很明确。

@Vmai 在他对这个问题的评论中提出了一个很好的观点。
我的解决方案是让“问题国家”在它们所在的每个大陆的国家/地区表中出现一次。(因此土耳其将在数据库中出现两次,一次将 continent 设置为 id 的亚洲,一次是欧洲的 id。俄罗斯也是如此。)当然,城市也是如此。

关于mysql - 在 MySQL 数据库中实现树结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24681150/

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