無限分類
一. 父子id法
(1) 資料結構(族譜)
二三. | id | parent | name |
四五. | 1| 0 | 祖父 |
六七. | 2| 1 | 父親 |
**. | 3| 1 | 叔伯 |
一十一十一. | 4| 2 | 自己 |
一十二一十三. | 5| 4 | 兒子 |
一十四一十五. | 6| 5 | 孫子 |
一十六一十七. | 7| 2 | 姐妹 |
一十八一十九. | 8| 3 | 表親 |
二十二十一. | 9| 7 | 甥兒 |
二十二二十三. | 10 | 4 | 女兒 |
二十四二十五. | 11 | 10 | 外孫 |
二十六二十七. | 12 | 5 | 孫女 |
二十八二十九
三十求值:
1)、已知任一id,可以求得祖先id表
2)、已知任一id,可以求祖先id表(含自己)
3)、已知任一id,後代id表
3)、已知任一id,後代id表(含自己)
(2)php**
<?php
/***族譜
**以乙個例項演示簡單無限分類的演算法
**@copyrihgthentstudio,2008
*@author七月十五<[email=>
*@version$
*//**
*獲取祖先樹二維陣列,長幼逆序,不含己身
*@paramint$id己身所在id
*@returnarray
*/function_getforefathers($id)else
}/**
*獲取祖先樹二維陣列,長幼順序,含己身
*@paramint$id己身所在id
*@returnarray
*/functiongetforefathers($id)
/***獲取指定id的所有後代,不含指定id
*@parammixed$id指定id,有可能是array
*@returnarray所有後代id的一維陣列
*/function_getoffspring($id)
$id=implode(',',$id);
$sql="
select*
fromfamily
whereparentin(".$id.");";
$re=mysql_query($sql);
if(mysql_num_rows($re))
$ids=array_merge($ids,_getoffspring($ids));
return$ids;
}else
}/**
*獲得指定id的所有後代,含指定id
*@parammixed$id指定id,有可能是array
*@returnarray所有後代的和指定id的一維陣列
*/functiongetoffspring($id)
returnarray_merge($id,_getoffspring($id));
}/*主程式*/
ini_set('default_charset','utf-8');/*設定html輸出編碼為utf-8*/
mysql_connect('localhost','root','');/*連線mysql*/
mysql_select_db('family');/*開啟family資料庫*/
mysql_query("setnames'utf8'");/*設定資料庫輸出編碼*/
echo'';
var_dump(getforefathers(11));/*輸出id=11的祖先樹*/
var_dump(getoffspring(array(3,4)));/*輸出id=3及id=4的後代id表*/
echo'';
二.左右值法
適合資料量小且不經常改動的無限分類。
看一下上面的表就知道了,左值大於1右值小於18的為商品,左值小於2右值大於11的為食品。如果商品分類還要多的話,左右值就要動態更新。
優點:在消除遞迴的前提下實現了無限分級,而且查詢條件是基於整形數字比較的,效率很高。可以進行先序列表,新增,修改,刪除,同層平移等常規操作,基本滿足需求。
缺點:由於這種左右值編碼的方式和常見的阿拉伯數字直觀排序不同,再加上節點在樹中的層次,順序不是直觀顯示出來,而必須通過簡單的公式計算後得到,需要花費一定的時間對其數學模型進行深入理解。而且,採用該方案編寫相關儲存過程,新增,刪除,同層平移節點需要對整個樹進行查詢修改,由此導致的**複雜度,耦合度較高,修改維護的風險較高。
三.理解概念
四.演算法
溝通無限快樂無限發展無限
給學困生同一片藍天 隨著經濟的發展,社會的進步,學生對外界資訊的感知增大,學生不像以前那麼 純 了。經濟差異 智力差異 語言差異 思維方式的差異等等越來越明顯。表現在學習上是班內的學困生顯著增多。有的單是學習方面不盡人意,有的在紀律方面也常常違規,有的則各方面表現比較落後。成績不理想 自制力較差 言...
PHP新手總結的PHP基礎知識
php新手總結的php基礎知識.txt兩個男人追乙個女人用情淺的會先放棄。兩個女人追乙個男人用情深的會先放棄。你的話,我連標點符號都不信男女授受不親,中國哪來13億人口。2009 07 23 最近有好多初學php的站長們尋問一些基礎知識,站長家族在這裡整理一下php入門教程的基礎知識,希望能對廣大站...
自己總結PHP
1.我查詢乙個資料庫,然後我想讓裡面type是1的到html裡面顯示是普通使用者type是10的到html裡面顯示是管理員 2.button跟鏈結 3.還有數字型別欄位的值就不需要加 了4.兩個資料表連線 ps 以questions作為基礎去users表裡面查詢!5.php檔案頭部 記錄登入資訊。配...