【问题标题】:Optimal storing of data PHPPHP 数据的最佳存储
【发布时间】:2013-05-06 21:10:59
【问题描述】:

我有一个包含 typeID typeName 和 Importance 的类型表,重要性列越高,它出现的速度就越快。它以降序返回

然后我有一个费用表,其中包含 ExpenseID、各种费用、typeID、重要

费用 typeID 参考 typeID typeID

现在在 PHP 中,我正在尝试尽可能高效地对它们进行分组,这样我就可以使用单个数据结构来遍历列表

我在想

$type [The TypeID] [The Type Name or row indicator in other cases] 
[expense information here]

但是 TypeID 不是按顺序排列的,这意味着很多无用的操作。

我可以$type[auto increment here][TypeID][The Type Name or row indicator in other cases] [expense information here]

然而,这意味着我无法在填写费用信息时只执行$type[$row['typeID']],并且必须执行更多操作,这也不能解决我获取用于召回的 typeID 的问题

我可以在费用和 typeID 之间进行内部连接,但是我有一堆重复的信息,因为结构只是 $type[incremntal][all information here],但这会一遍又一遍地存储类型名,尽管它不是最佳的实际上是可用的并且目前正在寻找最佳选择还必须不断比较以前的类型 ID 和当前的类型 ID 才能知道我是否显示标题。

你能想出任何使用单一结构且没有重复数据的东西吗?

我的脑海里突然出现了一些别的东西。 通过 id 查找表格行并在其下方插入一行的代码是什么?我以前从来没有做过这样的事……

【问题讨论】:

  • 这是关于数据库结构、查询、数组的问题,我很困惑
  • 这是一个我有这些数据并且不希望任何重复的问题,那么实现它的方法是什么,有点问题。抱歉,如果不清楚。哦,希望能够回忆起来

标签: php sql data-structures normalize


【解决方案1】:

mysql查询:

$q="select t.typeID, t.typeName, e.ID, e.name from type t left join 
    expense e on t.typeID = e.typeID";

php代码:

$res=mysql_query($q);
while($r=mysql_fetch_assoc($res)){
   $exp[$r["typeID"]][] = $r;
}

现在$exp 数组将包含按typeID 分组的所有费用。您可以在查询中添加可选排序以满足您的需求。

希望这会有所帮助。

【讨论】:

  • 问题在于调用 typeID,因为它可以是任意数字,并且在不同的 typeID 之间存在间隙。我想我可以在存储过程中创建一些神奇的 sql 来在每次插入失败后重置 auto_int 并保持它们的顺序......
【解决方案2】:

好吧,想通了

$type[$i][$typeID] = $typeID;
$type[$i][$name] = $typeName;
$type[$i][$j][] = expense information 

因为它们是按重要性排序的,所以它应该加快它的速度,并通过快速搜索例程允许 0 个冗余数据。

【讨论】:

    猜你喜欢
    • 2018-03-11
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 2011-10-24
    • 2011-09-14
    • 1970-01-01
    相关资源
    最近更新 更多