專利名稱:數據結構的建立方法與處理方法
技術領域:
本發明關于一種數據結構的建立方法與處理方法,特別關于一種利用樹狀結構數據的建立方法與處理方法。
背景技術:
隨著信息產業的進步,各類型的數據數字化之后存儲于數據庫中,而使用者可經由下達適當的判斷條件,在數據庫中找尋到數據或是讓數據庫依據判斷條件自動地送出數據。另一方面,由于因特網的發達與普及,使用者亦能在終端機通過網絡存取或操作數據庫服務器中的數據。
如圖1所示,一終端機11與一服務端12通過網絡14而連線,并以超文字傳輸協定(Hyper Text Transfer Protocol,HTTP)進行數據交換。另外,一數據庫13設置于服務器12上或與服務器12連線。于此結構下,使用者可利用終端機11操作視窗瀏覽器,來篩選與修改數據庫13中的數據。
如圖2所示,使用者可于終端機的視窗瀏覽器上選取要查詢的條件項目如日期、作者、產品名稱等等(步驟S01)。然后輸入各條件項目的條件陳述(例如date>20050221、authority=Eric、product=car、product=bike或priority=high等等),藉以自數據庫中找出符合這些條件陳述的數據(步驟S02)。接著,終端機將這些條件陳述組合成判斷條件,且將判斷條件轉換為HTTP中的資源定位器(Uniform Resource Locator,URL)(步驟S03)。然后終端機將這些條件陳述夾雜在URL中傳送至服務器(步驟S04)。服務器從URL中將判斷條件提取出來(步驟S05),并且判斷數據庫是否有符合判斷條件的數據(步驟S06)。若有,則判斷結果為真。接著,服務器將判斷結果傳回至終端機,終端機表示搜尋結果以供使用者查閱(步驟S07)。另外,服務器可將本次的判斷條件以URL中的格式存儲于數據庫中(步驟S08)。當使用者再次使用數據庫時,數據庫所記錄的前次操作產生的判斷條件與URL可通過服務器表示于終端機。使用者可選取其中的一判斷條件,以命令服務器自數據庫讀取出上一次查詢所下達的判斷條件(步驟S09)。接著服務器如同前述步驟處理已載入的URL。如此一來,使用者可以方便地于不同時間使用同一判斷條件來查詢或操作數據庫。
然而,若使用者更改前述判斷條件中的一個條件項目時,在步驟S03至步驟S08中,終端機必須要重新產生判斷條件于URL中,且服務器亦必須再一次依據更新后的判斷條件查詢數據庫。更新后的判斷條件亦可存儲于數據庫中,以供使用者再次查詢。然而,這兩個判斷條件之間具有邏輯關系,若僅以URL方式記錄判斷條件,則無法記錄此邏輯關系。由于此方式較不具備結構性,亦使得處理判斷條件的程序較不容易撰寫。另一方面,在步驟S09中雖然可經由程序讀取出前次判斷條件,但是以URL方式記錄的判斷條件則無法提供使用者來修改條件項目與內容。
發明內容
有鑒于上述課題,本發明提供一種能夠表現出各條件陳述間的邏輯關系的樹狀結構數據的建立方法與處理方法。
本發明提供一種具有邏輯關系的樹狀結構數據的建立方法。首先,增加一節點于一樹狀結構數據中以記錄一條件陳述。而后,判斷次一條件陳述與已記錄于該樹狀結構數據中的條件陳述間的一邏輯關系。當上述所判斷的邏輯關為“與”(AND)關系時,在樹狀結構數據中附加另一節點于該節點之下以記錄該次一條件陳述。反之,當邏輯關為“或”(OR)關系時,在樹狀結構數據中附加另一節點于該節點的父節點之下以記錄次一條件陳述。
本發明提供一種使用具有條件陳述的樹狀結構數據的處理方法。首先,讀取一樹狀結構數據的一節點所記錄的一條件陳述與該節點的至少一子節點所記錄的另一條件陳述。依據該節點的條件陳述與子節點的條件陳述的“與”(AND)關系而產生一判斷條件,其中當該節點具有多個子節點時,判斷條件還依據這些子節點的條件陳述的“或”(OR)關系而產生。
本發明提供一種判斷條件的處理方法。首先,記錄一條件陳述于一樹狀結構數據的一節點中。而后,判斷一次一條件陳述與已記錄于樹狀結構數據中的該節點的條件陳述間的一邏輯關系。當上述所判斷的邏輯關系為“與”(AND)關系時,在樹狀結構數據中新增另一節點于該節點之下以記錄次一條件陳述。反之,當上述所判斷的邏輯關系為“或”(OR)關系時,在樹狀結構數據中新增另一節點于該節點的父節點之下以記錄次一條件陳述。傳送樹狀結構數據至一服務器,并于服務器讀取樹狀結構數據的該節點所記錄的條件陳述與該節點的至少一子節點所記錄的另一條件陳述。于服務器依據該節點的條件陳述與子節點的條件陳述的“與”(AND)關系而產生一判斷條件,其中當該節點具有多個子節點時,判斷條件還依據該多個子節點的條件陳述的“或”(OR)關系而產生。
承上所述,因依本發明的具有邏輯關系的樹狀結構數據的建立方法與處理方法中,多個條件陳述依據彼此間的邏輯關系而分別放置于樹狀結構數據中的父子節點或是兄弟節點,因此條件陳述可結構化地記錄于樹狀結構數據中,并可將各條件陳述之間的邏輯關系以節點間的連接方式記錄,并使得判斷條件的程序較容易撰寫與維護。
圖1為表示公知判斷條件的處理方法所應用的系統的區塊圖;圖2為表示公知判斷條件的處理方法的示意圖;圖3為表示依本發明一實施例的判斷條件的處理方法的流程圖;圖4為表示依本發明一實施例的判斷條件的處理方法中,建立具有邏輯關系的樹狀結構數據的流程圖;圖5為表示依本發明一實施例的判斷條件的處理方法中,樹狀結構數據被建立過程的一示意圖;圖6為表示依本發明一實施例的判斷條件的處理方法中,樹狀結構數據被建立過程的一示意圖;圖7為表示依本發明一實施例的判斷條件的處理方法中,處理具有邏輯關系的樹狀結構數據的流程圖;以及圖8為表示依本發明一實施例的判斷條件的處理方法中,具有邏輯關系的樹狀結構數據被建立與處理的示意圖。
元件符號說明11終端機12服務端13數據庫14網絡2樹狀結構數據
20根節點21-2n節點CS1-CSn條件陳述具體實施方式
以下將參照相關附圖,說明依本發明一實施例的具有邏輯關系的樹狀結構數據的建立方法與處理方法。
于本實施例中,一使用者于一終端機前操作一視窗瀏覽器,并于該視窗瀏覽器中下達判斷條件。一服務器與終端機連線并接收使用者下達的判斷條件來搜尋一數據庫,或是服務器依據判斷條件來執行傳送數據或發出電子郵件的操作。
圖3為處理終端使用者所下達的判斷條件的處理方法。使用者先于終端機的視窗瀏覽器上選取要查詢的條件項目(步驟S11)。然后再輸入各條件項目的條件陳述(步驟S12),藉以自數據庫中找出符合條件陳述的數據。接著,終端機先將條件陳述數據建立成具有邏輯關系的樹狀結構數據(步驟S13)。若上述的兩條件陳述的關系為“與”(AND)關系,則將兩條件陳述存儲于樹狀結構數據中并分別為父子節點中的條件陳述。反之,若二條件陳述的關系為“或”(OR)關系,則將兩條件陳述存儲于樹狀結構數據中分別為兄弟節點中的條件陳述。然后,終端機將該樹狀結構數據所存儲的條件陳述傳送至遠端的服務器(步驟S14)。接著,服務器接收并讀取該樹狀結構數據所存儲的條件陳述。依據各個父子節點與兄弟節點所對應的條件陳述,將條件陳述組合為判斷條件(步驟S15),并且判斷數據庫是否有符合判斷條件的數據(步驟S16)。若數據庫有符合判斷條件的數據,則判斷結果為真(true)。若數據庫沒有符合判斷條件的數據,則判斷結果為否(false)。接著,服務器將上述的判斷結果傳回至終端機,終端機表示判斷結果,以供使用者查閱(步驟S17)。此外,服務器可將樹狀結構數據存儲于數據庫中(步驟S18)。若使用者下次再操作數據庫時仍有相同的判斷條件時,數據庫所記錄的前一次操作產生的判斷條件與樹狀結構數據可通過服務器表示于終端機,使用者可選取其中的一判斷條件,以命令服務器直接載入存儲于數據庫的樹狀結構數據(步驟S19),接著服務器如同前述步驟處理已載入的樹狀結構數據。
請參考圖3與圖4,步驟S13還包含圖4的步驟S21-S26,各步驟所建立不同的樹狀結構數據如圖5與圖6所示。首先,終端機設定一樹狀結構數據的一根節點(步驟S21)。記錄有條件陳述的節點附加于根節點或根節點的接續節點之下。接著終端機增加一節點于樹狀結構數據中的根節點之下,其中節點記錄一條件陳述CS1(步驟S22)。終端機判斷節點的次一條件陳述CS2與已記錄于樹狀結構數據中的各節點所記錄的條件陳述間的一邏輯關系(步驟S23),以確認條件陳述間的邏輯關系為“與”(AND)關系或“或”(OR)關系。由于次一條件陳述CS2僅和條件陳述CS1有相對關系,故于步驟S23中僅判斷次一條件陳述CS2和條件陳述CS1的邏輯關系。“”當兩條件陳述的邏輯關系為“與”(AND)關系時(如圖5所示),終端機在樹狀結構數據2中附加節點22于節點21之下,以在節點22記錄次一條件陳述CS2(步驟S24)。在此實施例中,節點21與節點22為父子節點,亦即節點22附加于節點21之下。
反之,當兩條件陳述的邏輯關系為“或”(OR)關系時(如圖6所示),終端機在樹狀結構數據2中的節點22與節點21皆位于根節點20之下,以記錄次一條件陳述CS1與次一條件陳述CS2(步驟S25)。在此實施例中,節點21與節點22互為兄弟節點,亦即節點22與節點21皆同等位于根節點20之下。接著,終端機判斷是否尚有待處理的條件陳述CS3-CSn(步驟S26)。若終端機有待處理的條件陳述,則再次回到步驟S23。步驟S23-S26會再依序逐一處理條件陳述CS3-CSn。
請參考圖7,其步驟S31-S34為圖3的步驟S15的細部分解步驟。請配合參考圖5,服務器自根節點20開始尋訪樹狀結構數據2的第一個記錄有條件陳述的節點(步驟S31)。接著,服務器讀取節點21所連接的節點22(節點21的子節點)的一條件陳述CS2(步驟S32)。服務器依據節點21的一條件陳述CS1與節點22的條件陳述CS2的“與”(AND)關系而產生一判斷條件(步驟S33)。由于根節點20為一特殊的節點,其并沒有記錄條件陳述,所以僅在處理根節點20時,判斷條件僅依據子節點的條件陳述而產生。另外,當根節點20具有多個子節點時(如圖6所示),判斷條件還依據這些子節點21、22的條件陳述CS1、CS2的“或”(OR)關系而產生。接著,服務器判斷是否仍有尚未尋訪的節點于樹狀結構數據中(步驟S34),若有則返回至步驟S32并尋訪下一節點直到每一個節點都尋訪過。尋訪節點的優先順序是同一層的節點先尋訪,然后再尋訪下一層的節點,亦即是先廣后深的尋訪方式。
上述的步驟S32至步驟S34中,可經由循環或是遞回函式實現。若以遞回函式實現的話,遞回函式于尋訪現行節點時讀取現行節點的子節點的條件陳述(步驟S32),并依據此節點與子節點之間的邏輯關系而產生判斷條件(步驟S33)。接著再呼叫此遞回函式,以尋訪下一節點(步驟S34)。
為使本實施例的特征更加明顯,以下以圖8舉例進行說明。當使用者已經選取好要查詢的條件項目,并針對各條件項目下達條件陳述CS1-CS6與條件陳述之間的邏輯關系時,此時終端機建立樹狀結構數據2以記錄條件陳述CS1-CS6。在樹狀結構數據的建立過程中,終端器先建立根節點20,然后再建立節點21以記錄條件陳述CS1。接著,終端機判斷出條件陳述CS1和條件陳述CS2是“與”(AND)關系,因而在節點21之下建立節點22以記錄條件陳述CS2。然后終端機判斷出仍有條件陳述尚未記錄于樹狀結構數據2中,于是繼續處理下一條件陳述CS3。
在處理條件陳述CS3時,終端器判斷出條件陳述CS3和已記錄于樹狀結構數據2中的條件陳述CS2是“與”(AND)關系。因此終端器在記錄有條件陳述CS2的節點22之下建立節點23,以記錄條件陳述CS3。然后終端機繼續處理下一條件陳述CS4。在處理條件陳述CS4時,終端器判斷出條件陳述CS4和已記錄于樹狀結構數據2中的條件陳述CS3是“或”(OR)關系,所以終端器在記錄有條件陳述CS3的節點23的父節點22之下建立節點24以記錄條件陳述CS4。換句話說,節點23與節點24為節點22的子節點,而節點23與節點24互為兄弟節點,然后終端機如同前述處理方式再建立節點2n,以記錄條件陳述CSn。
當樹狀結構數據2建立完畢之后就被傳送至服務器端,于此特別說明的是,樹狀結構數據已廣泛應用于現今的程序之中,而且傳送樹狀結構數據的程序執行碼可由JAVA、ASP、PHP或CGI等技術實現。
所有的條件陳述之間的邏輯關系可以經由如圖8所示的樹狀結構數據表示。服務器從根節點20開始尋訪,并讀取根節點20的子節點21的條件陳述CS1。接著,服務器依據子節點21的條件陳述CS1產生一判斷條件。服務器判斷出仍有尚未尋訪的節點21-26于樹狀結構數據中,而返回至步驟S32并尋訪下一節點21。
當服務器尋訪到節點21時,其讀取節點21的子節點22所記錄的條件陳述CS2。然后,服務器依據條件陳述CS1、CS2的“與”(AND)關系產生判斷條件,接著,服務器判斷出樹狀結構數據仍有未尋訪的節點22-26,因而又返回尋訪下一節點22。服務器尋訪節點22并讀取其子節點23、24的條件陳述CS3、CS4。由于節點22具有二個子節點23、24,所以服務器除了依據條件陳述CS2和CS3的“與”(AND)關系與條件陳述CS2和CS4的“與”(AND)關系之外,還依據條件陳述CS3和CS4的“或”(OR)關系產生判斷條件,并將此次的判斷條件附加于前次的判斷條件之后。此外,服務器尋訪各節點而產生的判斷條件的內容為圖8的(data>20050221)&(authority=Eric)&(((product=car)&(priority=high)&(customer=Q))|(product=bike))),其中「&」為前述所提的“與”(AND)關系,而「|」為前述所提的“或”(OR)關系。
接著,服務器依照前述的方式依序尋訪樹狀結構中其他節點。于此特別注意的是,由于是先廣后深的尋訪方式,所以尋訪完節點23之后,會先尋訪條件陳述的節點24而不會先尋訪節點25。經由前述處理之后,使用者下達的搜尋條件可完全恢復。經由步驟S31至步驟S34處理之后,各個條件陳述CS1-CS6重組于判斷條件之中,接著服務器依據判斷條件自一數據庫搜尋數據。
在本實施例中,樹狀結構數據的各個節點對應使用者所設定的一個條件陳述,各個節點可具有一選取值SEL以記錄使用者是否選取此條件陳述。若使用者有選取此條件項目,選取值SEL為「啟用(enable)」。反之,若使用者未選取此條件項目,選取值SEL為「禁用(disable)」。當使用者命令服務器載入前次的樹狀結構數據之后,使用者可于終端機修改選取的條件陳述。因此于步驟S32中服務器必須要判斷現行節點的子節點的選取值SEL是否為「enable」,以讀取子節點的條件陳述。
另外,再以圖8的樹狀結構數據為例。若使用者將條件陳述CS3改為不選取,亦即是使用者設定的判斷條件為(條件陳述CS1AND條件陳述CS2AND條件陳述CS4),則節點23的選取值SEL被修正為「disable」,其他節點的選取值SEL仍為「enable」。此時,服務器于尋訪節點21時判斷出節點22的選取值SEL為「enable」,以讀取條件陳述CS2。當尋訪到節點22時,服務器判斷出節點23的選取值SEL為「disable」,因此服務器不讀取條件陳述CS3。由于在步驟S32-S34中,服務器亦不再尋訪節點23以后的節點,因此節點25、26亦不會被讀取與處理,只有節點24的條件陳述CS4會被處理,最后服務器可自樹狀結構數據2將條件陳述組合為使用者修改后的判斷條件。
綜上所述,因依本發明的具有邏輯關系的樹狀結構數據的建立與處理方法中,多個條件陳述依據彼此間的邏輯關系分別放置于樹狀結構數據的父子0節點、或兄弟節點,因此條件陳述可結構化地記錄于樹狀結構數據之中,并可將各條件陳述之間的邏輯關系依據節點之間的連接方式記錄,使得判斷條件的程序較容易撰寫與維護。
以上所述僅為本發明的優選實施例,凡依本發明權利要求所進行的等效變化與修改,皆應屬本發明的涵蓋范圍。
權利要求
1.一種具有邏輯關系的樹狀結構數據的建立方法,包含記錄一條件陳述于一樹狀結構數據的一節點中;判斷一次一條件陳述與已記錄于該樹狀結構數據中的該節點的該條件陳述之間的一邏輯關系;當該邏輯關系為“與”(AND)關系時,在該樹狀結構數據中新增另一節點,并于該節點之下記錄該次一條件陳述;以及當該邏輯關系為“或”(OR)關系時,在該樹狀結構數據中新增另一節點,并于該節點的父節點之下以記錄該次一條件陳述。
2.如權利要求1所述的樹狀結構數據的建立方法,還包含設定該樹狀結構數據中的一根節點;以及附加記錄該條件陳述的該節點于該根節點之下。
3.如權利要求1所述的樹狀結構數據的建立方法,其中該條件陳述的“與”(AND)與“或”(OR)關系用于搜尋一數據庫中的數據。
4.一種使用具有條件陳述的樹狀結構數據的處理方法,包含讀取一樹狀結構數據中的一節點所記錄的一條件陳述與該節點的至少一子節點所記錄的另一條件陳述;以及依據該節點的該條件陳述與該子節點的該條件陳述的“與”(AND)關系而產生一判斷條件,其中當該節點具有多個子節點時,該判斷條件還依據該多個子節點的該多個條件陳述的“或”(OR)關系而產生。
5.如權利要求4所述的使用具有條件陳述的樹狀結構數據的處理方法,其中該節點具有一選取值,以記錄該條件陳述是否被選取。
6.如權利要求5所述的使用具有條件陳述的樹狀結構數據的處理方法,其中該讀取步驟當該節點的該選取值為啟用時,讀取該節點的該條件陳述。
7.如權利要求5所述的使用具有條件陳述的樹狀結構數據的處理方法,其中該讀取步驟當該節點的該選取值為非啟用時,不讀取該節點以及該節點的子節點以下的條件陳述。
8.一種判斷條件的處理方法,包含記錄一條件陳述于一樹狀結構數據中的一節點中;判斷一次一條件陳述與已記錄于該樹狀結構數據中的該節點的該條件陳述間的一邏輯關系,其中當該邏輯關系為“與”(AND)關系時,在該樹狀結構數據中新增另一節點于該節點之下以記錄該次一條件陳述,及當該邏輯關系為“或”(OR)關系時,在該樹狀結構數據中新增另一節點于該節點的父節點之下以記錄該次一條件陳述;傳送該樹狀結構數據至一服務器;于該服務器讀取該樹狀結構數據中的該節點所記錄的該條件陳述與該節點的至少一子節點所記錄的另一條件陳述;以及于該服務器依據該節點的該條件陳述與該子節點的該條件陳述的“與”(AND)關系而產生一判斷條件,其中當該節點具有多個子節點時,該判斷條件還依據該多個子節點的該多個條件陳述的“或”(OR)關系而產生。
9.如權利要求8所述的判斷條件的處理方法,還包含設定該樹狀結構數據中的一根節點;以及附加記錄有該條件陳述的該節點于該根節點之下。
10.如權利要求8所述的判斷條件的處理方法,其中該多個條件陳述的“與”(AND)關系及“或”(OR)關系用于搜尋一數據庫中的數據。
全文摘要
一種具有邏輯關系的樹狀結構數據的建立方法。首先,增加一節點于一樹狀結構數據中以記錄一條件陳述。而后,判斷次一條件陳述與已記錄于該樹狀結構數據中的條件陳述間的一邏輯關系。當上述所判斷的邏輯關系為“與”(AND)關系時,在樹狀結構數據中附加另一節點于該節點之下,以記錄該次一條件陳述。反之,當上述所判斷的邏輯關系為“或”(OR)關系時,在樹狀結構數據中附加另一節點于該節點的父節點之下,以記錄次一條件陳述。
文檔編號G06F17/30GK1920833SQ200610153620
公開日2007年2月28日 申請日期2006年9月12日 優先權日2006年9月12日
發明者張廣義 申請人:威盛電子股份有限公司