最佳存储数据PHP

时间:2013-05-12 20:37:38

标签: php sql data-structures normalize

我有一个包含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查找表行并在其下插入一行?我以前从未做过这样的事情......

2 个答案:

答案 0 :(得分:0)

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分组的所有费用。您可以在查询中添加可选的排序以满足您的需求。

希望这会有所帮助。

答案 1 :(得分:0)

好吧想通了

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

因为它们按重要性进行排序所以它应该加快它并且只需一个快速搜索例程即可允许0个冗余数据。