gpt4 book ai didi

php - 通过 PHP 从 Mysql 数据库获取大层次结构数据的最佳方法

转载 作者:行者123 更新时间:2023-11-29 08:27:23 25 4
gpt4 key购买 nike

我有一个像这样的数据层次结构:

Country
-President // A Person
--Central
---Prime Minister // A Person
----State
-----Chief Minister // A Person
------District
-------District Minister // A Person
--------Area
---------Area Minister (AM) // A Person

所以基本上我在这里想做的是,我想要 FocusArea Minister 。因为他将成为我申请的灵魂。其他的只是等级制度的一部分。假设我要添加 Area Minister那么他/她将处于Area之下,和Area位于District Minister下和District Minister位于District下和District位于Chief Minister下和SO ON......

我在这里所做的是添加 Area Minister 的这些详细信息进入我的MySQL Database所以我在数据库中所做的是,我创建了下表:

  1. 国家//用于添加条目
  2. President//用于添加国家/地区的总统(因此,country_id 在这里是外键)
  3. Central//用于在 President 下添加central(因此,president_id 在这里是外键)
  4. ...
  5. ...
  6. ...
  7. ...
  8. ...
  9. Area//用于在区域经理下添加区域(因此district_manager_id在这里是外键)
  10. Area_Minister//用于在区域中添加区域部长(AM)(因此此处的area_id是外键)

问题是获取 AM 的详细信息通过**PHP** 。我正在从 **MySQL** 获取数据以及 AM是我正在寻找的核心数据,但在某些时候也需要关联数据。但核心是AM - Data 。但是,如果我采用这种方式,我会尝试从 10 - TEN TABLES 获取数据。 。我觉得这是痛苦。

因为要获取需要的数据,我匹配Area ID在AM ,然后District Minister ID在Area依此类推到层次结构的起始级别。

有什么办法可以最大限度地减少这个过程。因为我想要的核心数据只是 AM i.e Area Manager's Data .

任何我能很好地构建它的方式。或者也许如果任何寻求帮助的人可以向我提供关于这是否可以通过存储过程来完成的见解。

我只是在寻找一种方法来降低 PHP 中代码的复杂性和 MySQL 中的许多表,而核心数据就在那里 AM仅。

请多多指教。

最佳答案

您的基本表结构是正确的,并且您指定的表数据结构似乎是合理的。如果您想减少访问区域经理时打开的 table 数量,您可以执行以下操作。

  1. 使用装饰器。您可以创建一个区域管理器对象,该对象在获取区域管理器时仅加载所需的最少数据。向该对象添加从其他表获取数据的方法,并且仅在需要该数据时才运行查询。例如:

    class AreaManager {

    public function __construct() {
    //do code which loads the basic table data for an area manager
    }

    public function getPresident() {
    // do the SQL needed to load the president from the relational tables
    }

    }
  2. 对数据进行非规范化。您可以定期运行一个脚本,该脚本获取您的数据并将其放入一个表中 - 这样您就有了这样的结构:

    area_manager_id | country_name | president | prime_minister | etc.

    当您更改关系时,该脚本必须进行更新,但可以让您通过单个查询轻松访问数据。

话虽如此,您已经按照应有的使用方式设置了关系表,并且 10 个表查询通常并不是世界末日。

关于php - 通过 PHP 从 Mysql 数据库获取大层次结构数据的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17576364/

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