專利名稱::數據庫存取方法以及系統的制作方法
技術領域:
:本發明是有關于一種數據庫存取方法以及系統。
背景技術:
:數據庫為一種計算機化的數據保存系統,可用以儲存數字檔案。使用者可以于數據庫上新增檔案或刪除檔案。甚至,也可以對數據庫上檔案中的數據執行新增、擷取、更新、刪除等操作。一般而言,透過應用程序存取數據庫上的數據時,會依據執行應用程序的使用者身分,限制其于數據庫中可存取的數據范圍。然而,在數據庫提供的模式改變時,例如數據庫的租賃模式由單租戶升格成多租戶或者數據庫的營運規模從單一法人架構升格為集團架構,相關程序的大幅修改常是無可避免的。目前典型的作法是在共享數據表(Table)及程序代碼的前提下,一方面在數據表中增加額外的身份字段(例如租戶ID或集團ID),另一方面相對地在應用程序里面的數據查詢語句(StructuredQueryLanguage,SQL)中增加額外的身份過濾條件(IDFilterCondition)(例如租戶ID=“登入使用者所屬租戶”或集團ID=“登入使用者所屬集團”),藉此以準確過濾出合法的數據范圍。然而,以人工方式調整應用程序中數據庫存取相關的程序語法,除了耗費大量人力與時間,同時也難以輕易應付往后實時的商業模式改變與調整。
發明內容因此,本發明的一方面是在提供一種數據庫存取方法,用以在客戶端欲存取數據庫中的數據時,根據其數據庫聯機識別碼取得對應的識別條件值,并根據識別條件值修改存取條件,以作為過濾有效數據的依據。數據庫存取方法包含以下步驟:提供一目標數據庫。其中,數據庫儲存一識別條件表及一目標數據表,識別條件表用以記錄至少一筆預存使用者登入信息、每一預存使用者登入信息的一預存數據庫聯機識別碼以及每一預存使用者登入信息的一預存識別條件值,且目標數據表存放一實體數據。建置一登入數據庫。其中,登入數據庫儲存與目標數據表對應的一視圖。自一客戶端接收一存取要求,用以存取該目標數據表。其中,存取要求包含一目前登入信息、一目前數據庫聯機識別碼以及一目前存取條件。根據目前登入信息以及目前數據庫聯機識別碼,于目標數據庫的識別條件表中,查找預存數據庫聯機識別碼以及預存識別條件值,以取得對應的一目前識別條件值。藉由登入數據庫中的視圖并根據目前識別條件值,將目前存取條件修正為一數據過濾條件。根據數據過濾條件,自目標數據表的實體數據過濾出一有效數據。本發明的另一方面是在提供一種數據庫存取方法,用以在客戶端欲存取數據庫中的數據時,根據其數據庫聯機識別碼取得對應的識別條件值,并根據識別條件值修改存取條件,以作為過濾有效數據的依據。數據庫存取方法包含以下步驟:建置一登入數據庫。其中,登入數據庫具有與一目標數據表對應的一視圖。目標數據表存于一目標數據庫。目標數據庫更存有一識別條件表。識別條件表用以記錄至少一筆預存使用者登入信息、每一預存使用者登入信息的一預存數據庫聯機識別碼以及每一預存使用者登入信息的一預存識別條件值。目標數據表存放一實體數據。自一客戶端接收用以存取目標數據表的一存取要求。其中,存取要求包含一目前登入信息、一目前數據庫聯機識別碼以及一目前存取條件。根據目前登入信息以及目前數據庫聯機識別碼,于目標數據庫中,查找預存數據庫聯機識別碼以及預存識別條件值,以取得對應的一目前識別條件值。藉由登入數據庫中的視圖并根據目前識別條件值,將目前存取條件修正為一數據過濾條件。根據數據過濾條件,自目標數據表的實體數據過濾出一有效數據。本發明的又一方面是在提供一種數據庫存取系統,用以在客戶端欲存取數據庫中的數據時,根據其數據庫聯機識別碼取得對應的識別條件值,并根據識別條件值修改存取條件,以作為過濾有效數據的依據。數據庫存取系統包含一目標數據庫、一登入數據庫以及一處理組件。處理組件與目標數據庫以及登入數據庫建立連接。目標數據庫用以儲存一識別條件表及一目標數據表。其中,識別條件表用以記錄至少一筆預存使用者登入信息、每一預存使用者登入信息的一預存數據庫聯機識別碼以及每一預存使用者登入信息的一預存識別條件值。目標數據表存放一實體數據。登入數據庫具有與目標數據表對應的一視圖。處理組件包含一要求接收模塊、一取得模塊、一修正模塊以及一過濾模塊。要求接收模塊自一客戶端接收用以存取目標數據表的一存取要求。其中,存取要求包含一目前登入信息、一目前數據庫聯機識別碼以及一目前存取條件。取得模塊根據目前登入信息以及目前數據庫聯機識別碼,于目標數據庫的識別條件表中,查找預存數據庫聯機識別碼以及預存識別條件值,以取得對應的一目前識別條件值。修正模塊藉由登入數據庫中的視圖并根據目前識別條件值,將目前存取條件修正為一數據過濾條件。過濾模塊根據數據過濾條件,自目標數據表的實體數據過濾出一有效數據。應用本發明具有下列優點。不需修改原先客戶端的應用程序中存取數據庫相關的程序語法,即可使數據庫從提供單一群組存取,升格為提供多個不同群組存取。此外,即使在本發明的一實施例中,將多個不同群組(如不同租戶、不同集團)的數據存于同一數據庫上,數據仍不會被同一數據庫上的其它群組所存取到。換言之,數據庫租貸業者可很方便的由目前單一租戶的租貸模式,升格為單一數據庫多租戶的租貸模式,以因應云端應用。為讓本發明的上述和其它目的、特征、優點與實施例能更明顯易懂,所附圖式的說明如下:圖1是依照本發明一實施方式的一種數據庫存取方法的流程圖。圖2是依照本發明另一實施方式的一種數據庫存取方法的流程圖。圖3是依照本發明一實施方式的一種數據庫存取系統的功能方塊圖。主要組件符號說明100:數據庫存取方法110170:步驟200:數據庫存取方法210260:步驟300:數據庫存取系統310:目標數據庫320:登入數據庫330:處理組件331:要求接收模塊332:取得模塊333:修正模塊334:過濾模塊335:傳送模塊336:產生模塊337:儲存模塊具體實施例方式以下將以圖式及詳細說明清楚說明本發明的精神,任何所屬
技術領域:
中具有通常知識者在了解本發明的較佳實施例后,當可由本發明所教示的技術,加以改變及修飾,其并不脫離本發明的精神與范圍。請參照圖1,其是依照本發明一實施方式的一種數據庫存取方法的流程圖。在數據庫存取方法中,在客戶端欲存取數據庫中的數據時,根據其數據庫聯機識別碼取得對應的識別條件值,并根據識別條件值修改存取條件,以作為過濾有效數據的依據。數據庫存取方法可實作為一計算機程序并儲存于一計算機可讀取記錄媒體中,而使計算機讀取此記錄媒體后執行此數據庫存取方法。計算機可讀取記錄媒體可為只讀存儲器、閃存、軟盤、硬盤、光盤、隨身碟、磁帶、可由網絡存取的數據庫或熟悉此技藝者可輕易思及具有相同功能的計算機可讀取記錄媒體。數據庫存取方法100包含以下步驟:在步驟110中,提供一目標數據庫。其中,數據庫儲存一識別條件表及一目標數據表。識別條件表用以記錄至少一筆預存使用者登入信息、每一預存使用者登入信息的一預存數據庫聯機識別碼以及每一預存使用者登入信息的一預存識別條件值。目標數據表存放一實體數據。在本發明的一實施例中,在客戶端的使用者以其使用者信息進行登入時,可實時產生一數據庫聯機識別碼,如對話識別碼(sessionID)或其它登入數據庫時所產生的識別碼。于是,可將所產生的數據庫聯機識別碼,儲存至目標數據庫的識別條件表中對應于其使用者信息的字段。在本發明的另一實施例中,在客戶端的使用者以其使用者信息進行登入時,可識別其所屬的識別條件值,如各預存使用者登入信息所屬租戶的識別碼(tenantID)、所屬集團的識別碼或其它用以判別其所屬群組用的識別碼。于是,可將所識別出的識別條件值,儲存至目標數據庫的識別條件表中對應于其使用者信息的字段。另外,在本發明的一些實施例中,可由一服務器端提供目標數據庫。在本發明的另一些實施例中,可分布式的于多個服務器端提供目標數據庫。在步驟120中,建置一登入數據庫。其中,登入數據庫儲存與目標數據表對應的一視圖(view)。在本發明的一實施例中,登入數據庫具有與目標數據庫中的識別條件表同義的一同義字(Synonym)。于是,客戶端可藉由同義字,而透過登入數據庫存取目標數據庫中的識別條件表。然而,在其它實施例中,登入數據庫可不具有與目標數據庫中的識別條件表同義的同義字,并不限于本揭露書。此外,視圖可為一邏輯表,只包含過濾條件的定義而不包含數據。于是,可透過視圖上得定義修正存取目標數據庫時的條件值。另外。在本發明的一些實施例中,可由與提供目標數據庫相同的服務器端建置登入數據庫。在本發明的另一些實施例中,可由不同服務器端建置登入數據庫以及提供目標數據庫。在本發明的又一些實施例中,可分布式的于多個服務器端建置登入數據庫以及提供目標數據庫。在步驟130中,自一客戶端接收一存取要求,用以存取該目標數據表。其中,存取要求包含客戶端所使用的一目前登入信息、一目前數據庫聯機識別碼以及用以存取的一目前存取條件。其中,目前存取條件可使用結構化查詢語言(StructuredQueryLanguage,SQL)或其它類型的數據庫語法。在步驟140中,根據目前登入信息以及目前數據庫聯機識別碼,于目標數據庫的識別條件表中,查找預存數據庫聯機識別碼以及預存識別條件值,以取得對應的一目前識別條件值。在步驟150中,藉由登入數據庫中的視圖并根據目前識別條件值,將目前存取條件修正為一數據過濾條件。舉例來說,在目前存取條件為“Select*fromtableX”,且目前登入信息所對應的登入信息為“TenantID=‘680’”時,所修正出的數據過濾條件可為“Select*fromtableXwhereTenantID=‘680,,,。然而,在其它實施例中,可藉由其它數據庫語法將目前存取條件修正為數據過濾條件,并不限于本揭露書中。在步驟160中,根據數據過濾條件,自目標數據表的實體數據過濾出一有效數據。于是,接下來可傳送過濾出的有效數據至客戶端(步驟170)。如此一來,不需修改客戶端上存取數據庫相關的程序,即可使目標數據庫從提供單一群組存取,升格為提供多個不同群組存取。此外,即使在本發明的一實施例中,將多個不同群組(如不同租戶、不同集團)的數據存于同一目標數據庫上,數據仍不會被同一目標數據庫上的其它群組所存取到。換言之,數據庫租貸業者可很方便的由目前單一租戶的租貸模式,升格為單一數據庫多租戶的租貸模式,以因應云端應用。請參照圖2,其是依照本發明另一實施方式的一種數據庫存取方法的流程圖。在數據庫存取方法中,在客戶端欲存取數據庫中的數據時,根據其數據庫聯機識別碼取得對應的識別條件值,并根據識別條件值修改存取條件,以作為過濾有效數據的依據。數據庫存取方法可實作為一計算機程序并儲存于一計算機可讀取記錄媒體中,而使計算機讀取此記錄媒體后執行此數據庫存取方法。計算機可讀取記錄媒體可為只讀存儲器、閃存、軟盤、硬盤、光盤、隨身碟、磁帶、可由網絡存取的數據庫或熟悉此技藝者可輕易思及具有相同功能的計算機可讀取記錄媒體。數據庫存取方法200包含以下步驟:在步驟210中,建置一登入數據庫。其中,登入數據庫具有與一目標數據表對應的一視圖。目標數據表存于一目標數據庫。此外,目標數據庫更存有一識別條件表。識別條件表用以記錄至少一筆預存使用者登入信息、每一預存使用者登入信息的一預存數據庫聯機識別碼以及每一預存使用者登入信息的一預存識別條件值。目標數據表存放一實體數據。在本發明的一實施例中,在客戶端的使用者以其使用者信息進行登入時,可實時產生一數據庫聯機識別碼,如對話識別碼或其它登入數據庫時所產生的識別碼。于是,可將所產生的數據庫聯機識別碼,儲存至目標數據庫的識別條件表中對應于其使用者信息的字段。在本發明的另一實施例中,在客戶端的使用者以其使用者信息進行登入時,可識別其所屬的識別條件值,如各預存使用者登入信息所屬租戶的識別碼、所屬集團的識別碼或其它用以判別其所屬群組用的識別碼。于是,可將所識別出的識別條件值,儲存至目標數據庫的識別條件表中對應于其使用者信息的字段。另外,在本發明的一些實施例中,可由一客戶端建置登入數據庫,目標數據庫則提供于服務器端。其中,目標數據庫可由單一服務器端所提供或分布式的由多個服務器端所提供。在本發明的一實施例中,登入數據庫具有與目標數據庫中的識別條件表同義的一同義字。于是,客戶端可藉由同義字,而透過登入數據庫存取目標數據庫中的識別條件表。然而,在其它實施例中,登入數據庫可不具有與目標數據庫中的識別條件表同義的同義字,并不限于本揭露書。此外,視圖可為一邏輯表,只包含過濾條件的定義而不包含數據。于是,可透過視圖上得定義修正存取目標數據庫時的條件值。在步驟220中,自一客戶端接收用以存取目標數據表的一存取要求。其中,存取要求包含一目前登入信息、一目前數據庫聯機識別碼以及一目前存取條件。在步驟230中,根據目前登入信息以及目前數據庫聯機識別碼,于目標數據庫中,查找預存數據庫聯機識別碼以及預存識別條件值,以取得對應的一目前識別條件值。在步驟240中,藉由登入數據庫中的視圖并根據目前識別條件值,將目前存取條件修正為一數據過濾條件。在步驟250中,根據數據過濾條件,自目標數據表的實體數據過濾出一有效數據。于是,接下來可傳送該有效數據至客戶端(步驟260)。如此一來,不需修改客戶端上存取數據庫相關的程序,即可使目標數據庫從提供單一群組存取,升格為提供多個不同群組存取。此外,即使在本發明的一實施例中,將多個不同群組(如不同租戶、不同集團)的數據存于同一目標數據庫上,數據仍不會被同一目標數據庫上的其它群組所存取到。換言之,數據庫租貸業者可很方便的由目前單一租戶的租貸模式,升格為單一數據庫多租戶的租貸模式,以因應云端應用。另外,登入數據庫建置于客戶端,可降低服務器端的運算負擔。請參照圖3,其是依照本發明一實施方式的一種數據庫存取系統的功能方塊圖。數據庫存取系統在客戶端欲存取其數據庫中的數據時,根據客戶端的數據庫聯機識別碼取得對應的識別條件值,并根據識別條件值修改存取條件,以作為過濾有效數據的依據。數據庫存取系統300包含一目標數據庫310、一登入數據庫320以及一處理組件330。處理組件330與目標數據庫310以及登入數據庫320建立連接。在本發明的一些實施例中,登入數據庫320以及目標數據庫310可配置于單一服務器端。在本發明的另一些實施例中,登入數據庫320以及目標數據庫310可配置于不同服務器端。在本發明的又一些實施例中,登入數據庫320以及目標數據庫310可分布式的配置于多個服務器端。此外,處理組件330可由一客戶端所提供,或由一服務器端所提供。目標數據庫310用以儲存一識別條件表及一目標數據表。其中,識別條件表用以記錄至少一筆預存使用者登入信息、每一預存使用者登入信息的一預存數據庫聯機識別碼以及每一預存使用者登入信息的一預存識別條件值。目標數據表存放一實體數據。在本發明的一實施例中,在客戶端的使用者以其使用者信息進行登入時,處理組件330的一產生模塊336可實時產生一數據庫聯機識別碼,如對話識別碼或其它登入數據庫時所產生的識別碼。于是,處理組件330的一儲存模塊337可將所產生的數據庫聯機識別碼,儲存至目標數據庫310的識別條件表中對應于其使用者信息的字段。在本發明的另一實施例中,在客戶端的使用者以其使用者信息進行登入時,處理組件330可識別其所屬的識別條件值,如各預存使用者登入信息所屬租戶的識別碼(tenantID)、所屬集團的識別碼或其它用以判別其所屬群組用的識別碼。于是,可將所識別出的識別條件值,儲存至目標數據庫310的識別條件表中對應于其使用者信息的字段。登入數據庫320具有與目標數據庫310中的目標數據表對應的一視圖。在本發明的一實施例中,登入數據庫320具有與目標數據庫310中的識別條件表同義的一同義字。于是,客戶端可藉由同義字,而透過登入數據庫320存取目標數據庫310中的識別條件表。然而,在其它實施例中,登入數據庫320可不具有與目標數據庫310中的識別條件表同義的同義字,并不限于本揭露書。處理組件330包含一要求接收模塊331、一取得模塊332、一修正模塊333以及一過濾模塊334。要求接收模塊331自一客戶端接收用以存取目標數據表的一存取要求。其中,存取要求包含一目前登入信息、一目前數據庫聯機識別碼以及一目前存取條件。在本發明的一實施例中,數據庫存取系統300更可包含與處理組件330電性連接的一網絡卡(未繪示),用以連接網絡。于是,要求接收模塊331可透過網絡自客戶端接收存取要求。在本發明的另一實施例中,處理組件330由客戶端所提供時,使用者可藉由操作客戶端,而產生對應的存取要求,供要求接收模塊331接收。取得模塊332根據目前登入信息以及目前數據庫聯機識別碼,于目標數據庫310的識別條件表中,查找預存數據庫聯機識別碼以及預存識別條件值,以取得對應的一目前識別條件值。修正模塊333藉由登入數據庫320中的視圖并根據目前識別條件值,將目前存取條件修正為一數據過濾條件。過濾模塊334根據數據過濾條件,自目標數據表的實體數據過濾出一有效數據。于是,接下來處理組件330的一傳送模塊335可傳送過濾出的有效數據至客戶端。如此一來,不需修改客戶端上存取數據庫相關的程序,即可使目標數據庫310從提供單一群組存取,升格為提供多個不同群組存取。此外,即使在本發明的一實施例中,將多個不同群組(如不同租戶、不同集團)的數據存于同一目標數據庫310上,數據仍不會被同一目標數據庫310上的其它群組所存取到。換言之,數據庫存取系統300可使數據庫租貸業者很方便的由目前單一租戶的租貸模式,升格為單一數據庫多租戶的租貸模式,以因應云端應用。上文中,參照附圖描述了本發明的具體實施方式。但是,本領域中的普通技術人員能夠理解,在不偏離本發明的精神和范圍的情況下,還可以對本發明的具體實施方式作各種變更和替換。這些變更和替換都落在本發明的保護范圍的內。權利要求1.一種數據庫存取方法,其特征在于,包含:提供一目標數據庫,其中所述數據庫儲存一識別條件表及一目標數據表,所述識別條件表用以記錄至少一筆預存使用者登入信息、每一所述至少一預存使用者登入信息的一預存數據庫聯機識別碼以及每一所述至少一預存使用者登入信息的一預存識別條件值,且所述目標數據表存放一實體數據;建置一登入數據庫,其中所述登入數據庫儲存與所述目標數據表對應的一視圖;自一客戶端接收用以存取所述目標數據表的一存取要求,其中所述存取要求包含一目前登入信息、一目前數據庫聯機識別碼以及一目前存取條件;根據所述目前登入信息以及所述目前數據庫聯機識別碼,于所述目標數據庫的所述識別條件表中,查找所述至少一預存數據庫聯機識別碼以及所述至少一預存識別條件值,以取得對應的一目前識別條件值;藉由所述登入數據庫中的所述視圖并根據所述目前識別條件值,將所述目前存取條件修正為一數據過濾條件;以及根據所述數據過濾條件,自所述目標數據表的所述實體數據過濾出一有效數據。2.根據權利要求1所述的數據庫存取方法,其特征在于,所述登入數據庫具有與所述目標數據庫中的所述識別條件表同義的一同義字,且藉由所述視圖并根據所述目前識別條件值,將所述目前存取條件修正為一數據過濾條件的步驟是透過所述登入數據庫的所述同義字執行。3.根據權利要求1所述的數據庫存取方法,其特征在于,更包含:傳送所述有效數據至所述客戶端。4.根據權利要求1所述的數據庫存取方法,其特征在于,更包含:在所述客戶端登入時,產生所述目前數據庫聯機識別碼,并取得所述客戶端的所述目前登入信息;以及將所述目前數據庫聯機識別碼儲存至所述目標數據庫的所述識別條件表中,對應于所述目前登入信息的字段。5.根據權利要求1所述的數據庫存取方法,其特征在于,所述登入數據庫是建置于一服務器端。6.根據權利要求1所述的數據庫存取方法,其特征在于,所述登入數據庫是建置于所述客戶端。7.根據權利要求1所述的數據庫存取方法,其特征在于,目標數據庫是提供于一服務器端。8.一種數據庫存取系統,其特征在于,包含:一目標數據庫,用以儲存一識別條件表及一目標數據表,其中所述識別條件表用以記錄至少一筆預存使用者登入信息、每一所述至少一預存使用者登入信息的一預存數據庫聯機識別碼以及每一所述至少一預存使用者登入信息的一預存識別條件值,且所述目標數據表存放一實體數據;一登入數據庫,其中所述登入數據庫具有與所述目標數據表對應的一視圖;以及一處理組件,與所述目標數據庫以及所述登入數據庫建立連接,所述處理組件包含:一要求接收模塊,自一客戶端接收用以存取所述目標數據表的一存取要求,其中所述存取要求包含一目前登入信息、一目前數據庫聯機識別碼以及一目前存取條件;一取得模塊,根據所述目前登入信息以及所述目前數據庫聯機識別碼,于所述目標數據庫的所述識別條件表中,查找所述至少一預存數據庫聯機識別碼以及所述至少一預存識別條件值,以取得對應的一目前識別條件值;一修正模塊,藉由所述登入數據庫中的所述視圖并根據所述目前識別條件值,將所述目前存取條件修正為一數據過濾條件;以及一過濾模塊,根據所述數據過濾條件,自所述目標數據表的所述實體數據過濾出一有效數據。9.根據權利要求8所述的數據庫存取系統,其特征在于,所述處理組件更包含:一傳送模塊,傳送所述有效數據至所述客戶端。10.根據權利要求8所述的數據庫存取系統,其特征在于,所述處理組件更包含:一產生模塊,在所述客戶端登入時,產生所述目前數據庫聯機識別碼;以及一儲存模塊,將所述目前數據庫聯機識別碼儲存至所述目標數據庫的所述識別條件表中,對應于所述目前登入信息的字段。11.根據權利要求8所述的數據庫存取系統,其特征在于,更包含:一網絡卡,電性連接所述處理組件,且連接一網絡,其中所述要求接收模塊透過所述網絡,自所述客戶端接收所述存取要求。12.根據權利要求8所述的數據庫存取系統,其特征在于,所述處理組件由所述客戶端所提供。全文摘要一種數據庫存取方法包含以下步驟自一客戶端接收一存取要求,用以存取目標數據庫中的目標數據表。其中,存取要求包含一目前登入信息、一目前數據庫聯機識別碼以及一目前存取條件。根據目前登入信息以及目前數據庫聯機識別碼,于目標數據庫的識別條件表中,查找至少一預存數據庫聯機識別碼以及至少一預存識別條件值,以取得對應的一目前識別條件值。藉由登入數據庫中的視圖并根據目前識別條件值,將目前存取條件修正為一數據過濾條件。根據數據過濾條件,自目標數據庫中的目標數據表的實體數據過濾出一有效數據。文檔編號G06Q30/06GK103186623SQ20111045771公開日2013年7月3日申請日期2011年12月31日優先權日2011年12月31日發明者黃清輝,劉信彥申請人:鼎捷軟件股份有限公司