當前位置:首頁 » 數據倉庫 » 資料庫測試標准
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

資料庫測試標准

發布時間: 2023-04-02 07:50:35

資料庫的主要內容

一、屬性數據內容

屬性數據主要包括野外調查資料、鑽孔資料、水土分析測試數據等。目前,資料庫共錄入基地數據表7720個、水文地質鑽孔1886個(其中本次施工33個、收集以往鑽孔1853個)、地層描述17 944條、水質分析樣品2408個、同位素測試樣品216組、地下水統測點2431個、地下水水位統測野外記錄9691個、機民井調查點2346個、抽水試驗綜合成果表1185個、地表水點綜合調查點129個、土地荒漠化鹽漬化調查點88個、試坑滲水試驗數據表9個、土壤易溶鹽分析樣194個、野外路線調查表119個(見屬性數據工作量表14—2)。

表14—2 資料庫屬性數據工作量一覽表

續表

二、空間數據內容

空間數據包括基礎地理信息、野外調查、施工類和綜合研究成果類。本次所提交的圖形數據主要是設計書中所要求提交的成果圖件,根據資料庫系統對空間數據圖層文件的設置,完成的圖層空間數據見表14—3。

表14—3 空間數據工作量一覽表

三、資料庫綜合質量分析

(一)屬性數據質量

資料庫在建設過程中,始終注意數據質量的檢查和控制,資料庫數據質量總體較好,數據可用性較高。水質分析綜合成果表、土壤分析成果表、同位素測試成果表等錄入質量好。野外調查表、統測數據等均符合要求,對檢查過程中發現的漏項和錯誤均進行了補充和修改。在錄入的1886個鑽孔中,平均深度為193.1 m,其中86.7%的鑽孔孔深在200 m以內,12.4%的鑽孔孔深在200~500 m 之間(表14—4),鑽孔深度分段合理,可以控制以第四系含水層為主,兼顧新近系泰康組、大安組含水層的結構;鑽孔地層描述填表率達到93.3%,鑽孔分布均勻,僅在工作區中北部一小范圍內鑽孔密度略小,這是本區的實際情況。

表14—4 水文地質鑽孔深度分段統計表

(二)圖層數據質量

空間資料庫建立嚴格執行了作業流程及質量保證措施,每個作業環節都進行了自檢、互檢,保證了空間資料庫的質量。各類圖元參數均符合《全國地下水資源及其環境問題調查評價技術要求》;圖元錄入精度較高,面圖元拓撲關系正確,無懸掛弧段;各類專業圖層均按《地下水資源調查資料庫標准》存放,圖層數據完整,投影參數准確。每個圖層所賦屬性均執行上述標准,屬性結構正確,屬性表數據項內容完整,圖元代碼引用恰當,符合資料庫建庫要求。圖元與屬性一一對應,聯接准確無誤。

㈡ mysql資料庫性能測試

我理解的是你希望了解mysql性能測試的方法:
其實常用的一般:
選取最適用的欄位屬性
MySQL可以很好的支持大數據量的存取,但是一般說來,資料庫中的表越小,在它上面執行的查詢也就會越快。因此,在創建表的時候,為了獲得更好的性能,我們可以將表中欄位的寬度設得盡可能小。例如,在定義郵政編碼這個欄位時,如果將其設置為CHAR(255),顯然給資料庫增加了不必要的空間,甚至使用VARCHAR這種類型也是多餘的,因為CHAR(6)就可以很好的完成任務了。同樣的,如果可以的話,我們應該使用MEDIUMINT而不是BIGIN來定義整型欄位。

另外一個提高效率的方法是在可能的情況下,應該盡量把欄位設置為NOT NULL,這樣在將來執行查詢的時候,資料庫不用去比較NULL值。

對於某些文本欄位,例如「省份」或者「性別」,我們可以將它們定義為ENUM類型。因為在MySQL中,ENUM類型被當作數值型數據來處理,而數值型數據被處理起來的速度要比文本類型快得多。這樣,我們又可以提高資料庫的性能。

2、使用連接(JOIN)來代替子查詢(Sub-Queries)

MySQL從4.1開始支持SQL的子查詢。這個技術可以使用SELECT語句來創建一個單列的查詢結果,然後把這個結果作為過濾條件用在另一個查詢中。例如,我們要將客戶基本信息表中沒有任何訂單的客戶刪除掉,就可以利用子查詢先從銷售信息表中將所有發出訂單的客戶ID取出來,然後將結果傳遞給主查詢,如下所示:

DELETE FROM customerinfo WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )

使用子查詢可以一次性的完成很多邏輯上需要多個步驟才能完成的SQL操作,同時也可以避免事務或者表鎖死,並且寫起來也很容易。但是,有些情況下,子查詢可以被更有效率的連接(JOIN).. 替代。例如,假設我們要將所有沒有訂單記錄的用戶取出來,可以用下面這個查詢完成:

SELECT * FROM customerinfo WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )

如果使用連接(JOIN).. 來完成這個查詢工作,速度將會快很多。尤其是當salesinfo表中對CustomerID建有索引的話,性能將會更好,查詢如下:

SELECT * FROM customerinfo LEFT JOIN salesinfoON customerinfo.CustomerID=salesinfo. CustomerID WHERE salesinfo.CustomerID IS NULL

連接(JOIN).. 之所以更有效率一些,是因為 MySQL不需要在內存中創建臨時表來完成這個邏輯上的需要兩個步驟的查詢工作。

3、使用聯合(UNION)來代替手動創建的臨時表

MySQL 從 4.0 的版本開始支持 UNION 查詢,它可以把需要使用臨時表的兩條或更多的 SELECT 查詢合並的一個查詢中。在客戶端的查詢會話結束的時候,臨時表會被自動刪除,從而保證資料庫整齊、高效。使用 UNION 來創建查詢的時候,我們只需要用 UNION作為關鍵字把多個 SELECT 語句連接起來就可以了,要注意的是所有 SELECT 語句中的欄位數目要想同。下面的例子就演示了一個使用 UNION的查詢。

SELECT Name, Phone FROM client UNION SELECT Name, BirthDate FROM author
UNION
SELECT Name, Supplier FROM proct

4、事務

盡管我們可以使用子查詢(Sub-Queries)、連接(JOIN)和聯合(UNION)來創建各種各樣的查詢,但不是所有的資料庫操作都可以只用一條或少數幾條SQL語句就可以完成的。更多的時候是需要用到一系列的語句來完成某種工作。但是在這種情況下,當這個語句塊中的某一條語句運行出錯的時候,整個語句塊的操作就會變得不確定起來。設想一下,要把某個數據同時插入兩個相關聯的表中,可能會出現這樣的情況:第一個表中成功更新後,資料庫突然出現意外狀況,造成第二個表中的操作沒有完成,這樣,就會造成數據的不完整,甚至會破壞資料庫中的數據。要避免這種情況,就應該使用事務,它的作用是:要麼語句塊中每條語句都操作成功,要麼都失敗。換句話說,就是可以保持資料庫中數據的一致性和完整性。事物以BEGIN 關鍵字開始,COMMIT關鍵字結束。在這之間的一條SQL操作失敗,那麼,ROLLBACK命令就可以把資料庫恢復到BEGIN開始之前的狀態。

BEGIN;

INSERT INTO salesinfo SET CustomerID=14;

UPDATE inventory SET Quantity=11

WHERE item='book';

COMMIT;

事務的另一個重要作用是當多個用戶同時使用相同的數據源時,它可以利用鎖定資料庫的方法來為用戶提供一種安全的訪問方式,這樣可以保證用戶的操作不被其它的用戶所干擾。

5、鎖定表

盡管事務是維護資料庫完整性的一個非常好的方法,但卻因為它的獨占性,有時會影響資料庫的性能,尤其是在很大的應用系統中。由於在事務執行的過程中,資料庫將會被鎖定,因此其它的用戶請求只能暫時等待直到該事務結束。如果一個資料庫系統只有少數幾個用戶

來使用,事務造成的影響不會成為一個太大的問題;但假設有成千上萬的用戶同時訪問一個資料庫系統,例如訪問一個電子商務網站,就會產生比較嚴重的響應延遲。

其實,有些情況下我們可以通過鎖定表的方法來獲得更好的性能。下面的例子就用鎖定表的方法來完成前面一個例子中事務的功能。

LOCK TABLE inventory WRITE
SELECT Quantity FROM inventory
WHEREItem='book';
...

UPDATE inventory SET Quantity=11
WHEREItem='book';
UNLOCK TABLES

這里,我們用一個 SELECT 語句取出初始數據,通過一些計算,用 UPDATE 語句將新值更新到表中。包含有 WRITE 關鍵字的 LOCK TABLE 語句可以保證在 UNLOCK TABLES 命令被執行之前,不會有其它的訪問來對 inventory 進行插入、更新或者刪除的操作。

6、使用外鍵

鎖定表的方法可以維護數據的完整性,但是它卻不能保證數據的關聯性。這個時候我們就可以使用外鍵。例如,外鍵可以保證每一條銷售記錄都指向某一個存在的客戶。在這里,外鍵可以把customerinfo 表中的CustomerID映射到salesinfo表中CustomerID,任何一條沒有合法CustomerID的記錄都不會被更新或插入到salesinfo中。

CREATE TABLE customerinfo
(
CustomerID INT NOT NULL ,
PRIMARY KEY ( CustomerID )
) TYPE = INNODB;
CREATE TABLE salesinfo
(
SalesID INT NOT NULL,
CustomerID INT NOT NULL,
PRIMARY KEY(CustomerID, SalesID),
FOREIGN KEY (CustomerID) REFERENCES customerinfo
(CustomerID) ON DELETECASCADE
) TYPE = INNODB;

注意例子中的參數「ON DELETE CASCADE」。該參數保證當 customerinfo 表中的一條客戶記錄被刪除的時候,salesinfo 表中所有與該客戶相關的記錄也會被自動刪除。如果要在 MySQL 中使用外鍵,一定要記住在創建表的時候將表的類型定義為事務安全表 InnoDB類型。該類型不是 MySQL 表的默認類型。定義的方法是在 CREATE TABLE 語句中加上 TYPE=INNODB。如例中所示。

7、使用索引

索引是提高資料庫性能的常用方法,它可以令資料庫伺服器以比沒有索引快得多的速度檢索特定的行,尤其是在查詢語句當中包含有MAX(), MIN()和ORDERBY這些命令的時候,性能提高更為明顯。那該對哪些欄位建立索引呢?一般說來,索引應建立在那些將用於JOIN, WHERE判斷和ORDER BY排序的欄位上。盡量不要對資料庫中某個含有大量重復的值的欄位建立索引。對於一個ENUM類型的欄位來說,出現大量重復值是很有可能的情況,例如customerinfo中的「province」.. 欄位,在這樣的欄位上建立索引將不會有什麼幫助;相反,還有可能降低資料庫的性能。我們在創建表的時候可以同時創建合適的索引,也可以使用ALTER TABLE或CREATE INDEX在以後創建索引。此外,MySQL

從版本3.23.23開始支持全文索引和搜索。全文索引在MySQL 中是一個FULLTEXT類型索引,但僅能用於MyISAM 類型的表。對於一個大的資料庫,將數據裝載到一個沒有FULLTEXT索引的表中,然後再使用ALTER TABLE或CREATE INDEX創建索引,將是非常快的。但如果將數據裝載到一個已經有FULLTEXT索引的表中,執行過程將會非常慢。

8、優化的查詢語句

絕大多數情況下,使用索引可以提高查詢的速度,但如果SQL語句使用不恰當的話,索引將無法發揮它應有的作用。下面是應該注意的幾個方面。首先,最好是在相同類型的欄位間進行比較的操作。在MySQL 3.23版之前,這甚至是一個必須的條件。例如不能將一個建有索引的INT欄位和BIGINT欄位進行比較;但是作為特殊的情況,在CHAR類型的欄位和VARCHAR類型欄位的欄位大小相同的時候,可以將它們進行比較。其次,在建有索引的欄位上盡量不要使用函數進行操作。

例如,在一個DATE類型的欄位上使用YEAE()函數時,將會使索引不能發揮應有的作用。所以,下面的兩個查詢雖然返回的結果一樣,但後者要比前者快得多。

SELECT * FROM order WHERE YEAR(OrderDate)<2001;
SELECT * FROM order WHERE OrderDate<"2001-01-01";

同樣的情形也會發生在對數值型欄位進行計算的時候:

SELECT * FROM inventory WHERE Amount/7<24;
SELECT * FROM inventory WHERE Amount<24*7;

上面的兩個查詢也是返回相同的結果,但後面的查詢將比前面的一個快很多。第三,在搜索字元型欄位時,我們有時會使用 LIKE 關鍵字和通配符,這種做法雖然簡單,但卻也是以犧牲系統性能為代價的。例如下面的查詢將會比較表中的每一條記錄。

SELECT * FROM books
WHERE name like "MySQL%"

但是如果換用下面的查詢,返回的結果一樣,但速度就要快上很多:

SELECT * FROM books
WHERE name>="MySQL"and name<"MySQM"

最後,應該注意避免在查詢中讓MySQL進行自動類型轉換,因為轉換過程也會使索引變得不起作用。

㈢ 資料庫如何設計

資料庫設計的基本步驟

按照規范設計的方法,考慮資料庫及其應用系統開發全過程,將資料庫設計分為以下6個階段

1.需求分析

2.概念結構設計

3.邏輯結構設計

4.物理結構設計

5.資料庫實施

6.資料庫的運行和維護


資料庫設計通常分為6個階段1分析用戶的需求,包括數據、功能和性能需求;2概念結構設計:主要採用E-R模型進行設計,包括畫E-R圖;3邏輯結構設計:通過將轉換成表,實現從E-R模型到關系模型的轉換;4:主要是為所設計的資料庫選擇合適的和存取路徑;5資料庫的實施:包括編程、測試和試運行;6資料庫運行與維護:系統的運行與資料庫的日常維護。),主要討論其中的第3個階段,即邏輯設計。



在資料庫設計過程中,需求分析和概念設計可以獨立於任何資料庫管理系統進行,邏輯設計和物理設計與選用的DAMS密切相關。

1.需求分析階段(常用自頂向下)

進行資料庫設計首先必須准確了解和分析用戶需求(包括數據與處理)。需求分析是整個設計過程的基礎,也是最困難,最耗時的一步。需求分析是否做得充分和准確,決定了在其上構建資料庫大廈的速度與質量。需求分析做的不好,會導致整個資料庫設計返工重做。

需求分析的任務,是通過詳細調查現實世界要處理的對象,充分了解原系統工作概況,明確用戶的各種需求,然後在此基礎上確定新的系統功能,新系統還得充分考慮今後可能的擴充與改變,不僅僅能夠按當前應用需求來設計。

調查的重點是,數據與處理。達到信息要求,處理要求,安全性和完整性要求。

分析方法常用SA(Structured Analysis) 結構化分析方法,SA方法從最上層的系統組織結構入手,採用自頂向下,逐層分解的方式分析系統。

數據流圖表達了數據和處理過程的關系,在SA方法中,處理過程的處理邏輯常常藉助判定表或判定樹來描述。在處理功能逐步分解的同事,系統中的數據也逐級分解,形成若干層次的數據流圖。系統中的數據則藉助數據字典(data dictionary,DD)來描述。數據字典是系統中各類數據描述的集合,數據字典通常包括數據項,數據結構,數據流,數據存儲,和處理過程5個階段。

2.概念結構設計階段(常用自底向上)

概念結構設計是整個資料庫設計的關鍵,它通過對用戶需求進行綜合,歸納與抽象,形成了一個獨立於具體DBMS的概念模型。

設計概念結構通常有四類方法:

  • 自頂向下。即首先定義全局概念結構的框架,再逐步細化。

  • 自底向上。即首先定義各局部應用的概念結構,然後再將他們集成起來,得到全局概念結構。

  • 逐步擴張。首先定義最重要的核心概念結構,然後向外擴張,以滾雪球的方式逐步生成其他的概念結構,直至總體概念結構。

  • 混合策略。即自頂向下和自底向上相結合。

  • 3.邏輯結構設計階段(E-R圖)

    邏輯結構設計是將概念結構轉換為某個DBMS所支持的數據模型,並將進行優化。

    在這階段,E-R圖顯得異常重要。大家要學會各個實體定義的屬性來畫出總體的E-R圖。

    各分E-R圖之間的沖突主要有三類:屬性沖突,命名沖突,和結構沖突。

    E-R圖向關系模型的轉換,要解決的問題是如何將實體性和實體間的聯系轉換為關系模式,如何確定這些關系模式的屬性和碼。

    4.物理設計階段

    物理設計是為邏輯數據結構模型選取一個最適合應用環境的物理結構(包括存儲結構和存取方法)。

    首先要對運行的事務詳細分析,獲得選擇物理資料庫設計所需要的參數,其次,要充分了解所用的RDBMS的內部特徵,特別是系統提供的存取方法和存儲結構。

    常用的存取方法有三類:1.索引方法,目前主要是B+樹索引方法。2.聚簇方法(Clustering)方法。3.是HASH方法。

    5.資料庫實施階段

    資料庫實施階段,設計人員運營DBMS提供的資料庫語言(如sql)及其宿主語言,根據邏輯設計和物理設計的結果建立資料庫,編制和調試應用程序,組織數據入庫,並進行試運行。

    6.資料庫運行和維護階段

    資料庫應用系統經過試運行後,即可投入正式運行,在資料庫系統運行過程中必須不斷地對其進行評價,調整,修改。

    資料庫設計5步驟
    Five Steps to design the Database

    1.確定entities及relationships

    a)明確宏觀行為。資料庫是用來做什麼的?比如,管理雇員的信息。

    b)確定entities。對於一系列的行為,確定所管理信息所涉及到的主題范圍。這將變成table。比如,僱用員工,指定具體部門,確定技能等級。

    c)確定relationships。分析行為,確定tables之間有何種關系。比如,部門與雇員之間存在一種關系。給這種關系命名。

    d)細化行為。從宏觀行為開始,現在仔細檢查這些行為,看有哪些行為能轉為微觀行為。比如,管理雇員的信息可細化為:

    · 增加新員工

    · 修改存在員工信息

    · 刪除調走的員工

    e)確定業務規則。分析業務規則,確定你要採取哪種。比如,可能有這樣一種規則,一個部門有且只能有一個部門領導。這些規則將被設計到資料庫的結構中。

    ====================================================================
    範例:
    ACME是一個小公司,在5個地方都設有辦事處。當前,有75名員工。公司准備快速擴大規模,劃分了9個部門,每個部門都有其領導。
    為有助於尋求新的員工,人事部門規劃了68種技能,為將來人事管理作好准備。員工被招進時,每一種技能的專業等級都被確定。


    定義宏觀行為
    一些ACME公司的宏觀行為包括:
    ● 招聘員工
    ● 解僱員工
    ● 管理員工個人信息
    ● 管理公司所需的技能信息
    ● 管理哪位員工有哪些技能
    ● 管理部門信息
    ● 管理辦事處信息
    確定entities及relationships
    我們可以確定要存放信息的主題領域(表)及其關系,並創建一個基於宏觀行為及描述的圖表。
    我們用方框來代表table,用菱形代表relationship。我們可以確定哪些relationship是一對多,一對一,及多對多。
    這是一個E-R草圖,以後會細化。


    細化宏觀行為
    以下微觀行為基於上面宏觀行為而形成:
    ● 增加或刪除一個員工
    ● 增加或刪除一個辦事處
    ● 列出一個部門中的所有員工
    ● 增加一項技能
    ● 增加一個員工的一項技能
    ● 確定一個員工的技能
    ● 確定一個員工每項技能的等級
    ● 確定所有擁有相同等級的某項技能的員工
    ● 修改員工的技能等級

    這些微觀行為可用來確定需要哪些table或relationship。

    確定業務規則
    業務規則常用於確定一對多,一對一,及多對多關系。
    相關的業務規則可能有:
    ● 現在有5個辦事處;最多允許擴展到10個。
    ● 員工可以改變部門或辦事處
    ● 每個部門有一個部門領導
    ● 每個辦事處至多有3個電話號碼
    ● 每個電話號碼有一個或多個擴展
    ● 員工被招進時,每一種技能的專業等級都被確定。
    ● 每位員工擁有3到20個技能
    ● 某位員工可能被安排在一個辦事處,也可能不安排辦事處。

    2.確定所需數據

    要確定所需數據:

    a)確定支持數據

    b)列出所要跟蹤的所有數據。描述table(主題)的數據回答這些問題:誰,什麼,哪裡,何時,以及為什麼

    c)為每個table建立數據

    d)列出每個table目前看起來合適的可用數據

    e)為每個relationship設置數據

    f)如果有,為每個relationship列出適用的數據

    確定支持數據

    你所確定的支持數據將會成為table中的欄位名。比如,下列數據將適用於表Employee,表Skill,表Expert In。

    Employee

  • Skill

  • Expert In

  • ID

  • ID

  • Level

  • Last Name

  • Name

  • Date acquired

  • First Name

  • Description

  • Department

  • Office

  • Address


  • 如果將這些數據畫成圖表,就像:


  • 需要注意:

  • ● 在確定支持數據時,請一定要參考你之前所確定的宏觀行為,以清楚如何利用這些數據。

  • ● 比如,如果你知道你需要所有員工的按姓氏排序的列表,確保你將支持數據分解為名字與姓氏,這比簡單地提供一個名字會更好。

  • ● 你所選擇的名稱最好保持一致性。這將更易於維護資料庫,也更易於閱讀所輸出的報表。

  • ● 比如,如果你在某些地方用了一個縮寫名稱Emp_status,你就不應該在另外一個地方使用全名(Empolyee_ID)。相反,這些名稱應當是Emp_status及Emp_id。

  • ● 數據是否與正確的table相對應無關緊要,你可以根據自己的喜好來定。在下節中,你會通過測試對此作出判斷。
  • 3.標准化數據

    標准化是你用以消除數據冗餘及確保數據與正確的table或relationship相關聯的一系列測試。共有5個測試。本節中,我們將討論經常使用的3個。
    關於標准化測試的更多信息,請參考有關資料庫設計的書籍。

    標准化格式
    標准化格式是標准化數據的常用測試方式。你的數據通過第一遍測試後,就被認為是達到第一標准化格式;通過第二遍測試,達到第二標准化格式;通過第三遍測試,達到第三標准化格式。

    如何標准格式:
    1. 列出數據
    2. 為每個表確定至少一個鍵。每個表必須有一個主鍵。
    3. 確定relationships的鍵。relationships的鍵是連接兩個表的鍵。
    4. 檢查支持數據列表中的計算數據。計算數據通常不保存在資料庫中。
    5. 將數據放在第一遍的標准化格式中:
    6. 從tables及relationships除去重復的數據。
    7. 以你所除去數據創建一個或更多的tables及relationships。
    8. 將數據放在第二遍的標准化格式中:
    9. 用多於一個以上的鍵確定tables及relationships。
    10. 除去只依賴於鍵一部分的數據。
    11. 以你所除去數據創建一個或更多的tables及relationships。
    12. 將數據放在第三遍的標准化格式中:
    13. 除去那些依賴於tables或relationships中其他數據,並且不是鍵的數據。
    14. 以你所除去數據創建一個或更多的tables及relationships。

    數據與鍵
    在你開始標准化(測試數據)前,簡單地列出數據,並為每張表確定一個唯一的主鍵。這個鍵可以由一個欄位或幾個欄位(連鎖鍵)組成。

    主鍵是一張表中唯一區分各行的一組欄位。Employee表的主鍵是Employee ID欄位。Works In relationship中的主鍵包括Office Code及Employee ID欄位。給資料庫中每一relationship給出一個鍵,從其所連接的每一個table中抽取其鍵產生。

    RelationShip

  • Key

  • Office

  • *Office code

  • Office address

  • Phone number

  • Works in

  • *Office code

  • *Employee ID

  • Department

  • *Department ID

  • Department name

  • Heads

  • *Department ID

  • *Employee ID

  • Assoc with

  • *Department ID

  • *EmployeeID

  • Skill

  • *Skill ID

  • Skill name

  • Skill description

  • Expert In

  • *Skill ID

  • *Employee ID

  • Skill level

  • Date acquired

  • Employee

  • *Employee ID

  • Last Name

  • First Name

  • Social security number

  • Employee street

  • Employee city

  • Employee state

  • Employee phone

  • Date of birth


  • 將數據放在第一遍的標准化格式中
    ● 除去重復的組
    ● 要測試第一遍標准化格式,除去重復的組,並將它們放進他們各自的一張表中。
    ● 在下面的例子中,Phone Number可以重復。(一個工作人員可以有多於一個的電話號碼。)將重復的組除去,創建一個名為Telephone的新表。在Telephone與Office創建一個名為Associated With的relationship。

    將數據放在第二遍的標准化格式中
    ● 除去那些不依賴於整個鍵的數據。
    ● 只看那些有一個以上鍵的tables及relationships。要測試第二遍標准化格式,除去那些不依賴於整個鍵的任何數據(組成鍵的所有欄位)。
    ● 在此例中,原Employee表有一個由兩個欄位組成的鍵。一些數據不依賴於整個鍵;例如,department name只依賴於其中一個鍵(Department ID)。因此,Department ID,其他Employee數據並不依賴於它,應移至一個名為Department的新表中,並為Employee及Department建立一個名為Assigned To的relationship。


    將數據放在第三遍的標准化格式中
    ● 除去那些不直接依賴於鍵的數據。
    ● 要測試第三遍標准化格式,除去那些不是直接依賴於鍵,而是依賴於其他數據的數據。
    ● 在此例中,原Employee表有依賴於其鍵(Employee ID)的數據。然而,office location及office phone依賴於其他欄位,即Office Code。它們不直接依賴於Employee ID鍵。將這組數據,包括Office Code,移至一個名為Office的新表中,並為Employee及Office建立一個名為Works In的relationship。

    4.考量關系

    當你完成標准化進程後,你的設計已經差不多完成了。你所需要做的,就是考量關系。

    考量帶有數據的關系
    你的一些relationship可能集含有數據。這經常發生在多對多的關系中。

    遇到這種情況,將relationship轉化為一個table。relationship的鍵依舊成為table中的鍵。

    考量沒有數據的關系
    要實現沒有數據的關系,你需要定義外部鍵。外部鍵是含有另外一個表中主鍵的一個或多個欄位。外部鍵使你能同時連接多表數據。

    有一些基本原則能幫助你決定將這些鍵放在哪裡:

    一對多在一對多關系中,「一」中的主鍵放在「多」中。此例中,外部鍵放在Employee表中。

    一對一在一對一關系中,外部鍵可以放進任一表中。如果必須要放在某一邊,而不能放在另一邊,應該放在必須的一邊。此例中,外部鍵(Head ID)在Department表中,因為這是必需的。

    多對多在多對多關系中,用兩個外部鍵來創建一個新表。已存的舊表通過這個新表來發生聯系。

    5.檢驗設計

    在你完成設計之前,你需要確保它滿足你的需要。檢查你在一開始時所定義的行為,確認你可以獲取行為所需要的所有數據:
    ● 你能找到一個路徑來等到你所需要的所有信息嗎?
    ● 設計是否滿足了你的需要?
    ● 所有需要的數據都可用嗎?
    如果你對以上的問題都回答是,你已經差不多完成設計了。

    最終設計
    最終設計看起來就像這樣:

    設計資料庫的表屬性
    資料庫設計需要確定有什麼表,每張表有什麼欄位。此節討論如何指定各欄位的屬性。

    對於每一欄位,你必須決定欄位名,數據類型及大小,是否允許NULL值,以及你是否希望資料庫限制欄位中所允許的值。

    選擇欄位名
    欄位名可以是字母、數字或符號的任意組合。然而,如果欄位名包括了字母、數字或下劃線、或並不以字母打頭,或者它是個關鍵字(詳見關鍵字表),那麼當使用欄位名稱時,必須用雙引號括起來。

    為欄位選擇數據類型
    SQL Anywhere支持的數據類型包括:
    整數(int, integer, smallint)
    小數(decimal, numeric)
    浮點數(float, double)
    字元型(char, varchar, long varchar)
    二進制數據類型(binary, long binary)
    日期/時間類型(date, time, timestamp)
    用戶自定義類型

    關於數據類型的內容,請參見「SQL Anywhere數據類型」一節。欄位的數據類型影響欄位的最大尺寸。例如,如果你指定SMALLINT,此欄位可以容納32,767的整數。INTEGER可以容納2,147,483,647的整數。對CHAR來講,欄位的最大值必須指定。

    長二進制的數據類型可用來在資料庫中保存例如圖像(如點陣圖)或者文字編輯文檔。這些類型的信息通常被稱為二進制大型對象,或者BLOBS。

    關於每一數據類型的完整描述,見「SQL Anywhere數據類型」。

㈣ 用sql資料庫怎麼做軟體測試

不太明白你的意思!不知道你是說應用資料庫做測試還是做資料庫的測試?
前者通常來說,就是驗證前台操作與資料庫的一致性,比如你在前台刪除、增加、修改一條數據,資料庫相應的表內是否有相應的記錄變化,這是最基本的
如果你說是做資料庫測試,牽涉到很多,不過,對於我們測試人員做的哦比較多的資料庫的並發,打個比方說吧,我們對一個有5個欄位的表test進行基本測試,驗證兩種情況:一,某欄位order_no有索引;二,欄位order_no無所有,有無索引時做相同的測試驗證
測試驗證分同時並發和分鍾並發兩種情況驗證
,並發數從10、20、100、1000不等表中有50000條數據,通過比較響應時間得出測試結論。
做資料庫測試不多,也覺得三兩句說不清除!

㈤ 資料庫邏輯模型

資料庫關系模型(資料庫邏輯模型)是將數據概念模型轉換為所使用的資料庫管理系統(DBMS)支持的資料庫邏輯結構,即將E-R圖表示成關系資料庫模式。資料庫邏輯設計的結果不是唯一的,需利用規范化理論對資料庫結構進行優化。

在關系模型中,資料庫的邏輯結構是一張二維表。在資料庫中,滿足下列條件的二維表稱為關系模型:

1)每列中的分量是類型相同的數據;

2)列的順序可以是任意的;

3)行的順序可以是任意的;

4)表中的分量是不可再分割的最小數據項,即表中不允許有子表;

5)表中的任意兩行不能完全相同。

由此可見,有序的航空物探測量剖面數據不滿足資料庫關系模型條件第3條「行的順序可以是任意的」,因此,不能簡單地直接利用關系資料庫(如Oracle,SQL Server,Sybase等)來管理剖面數據,需將數據在資料庫中的存儲方式改為大欄位存儲,確保不因資料庫數據的增加和刪除等操作改變剖面數據有序特性。

一、大欄位存儲

(一)大欄位存儲技術

大欄位LOB(Large Object)技術是Oracle專門用於存放處理大對象類型數據(如多媒體材料、影像資料、文檔資料等)的數據管理技術。LOB包括內部的和外部的兩種類型。內部LOB又分CLOB(字元型)、BLOB(二進制型)等3種數據類型,其數據存儲在資料庫中,並且支持事務操作;外部LOB只有BFILE類型,其數據存儲在操作系統中,並且不支持事務操作。LOB存放數據的長度最大可以達到4G位元組,並且空值列(沒有存放數據)不佔空間(圖2-6)。

圖2-6 大欄位存儲示意圖

由於外部LOB存放在操作系統文件中,其安全性比內部LOB差一些。此外,大欄位的存儲支持事務操作(批量提交和回滾等),而外部LOB不支持事務操作。所以,航空物探測量剖面數據採用BLOB來存儲。對於BLOB類型,如果數據量小於4000位元組,資料庫通常採用行內存儲,而數據量大於4000位元組採用行外存儲。分析航空物探測量剖面數據,每個場值數據佔4個位元組(單精度),目前航磁數據采樣率為10次/s,4000位元組只能存儲100s數據;一般情況下航空物探測量每條測線飛行時間至少在10min以上,每條測線數據量遠遠大於4000位元組。所以,航空物探測量剖面數據採用行外存儲方式,即大欄位列指定「Disable Storage In Row」的存儲參數。

由於大欄位類型長度可變,最大可到4G。假設測線飛行時間為T,場值采樣率為n次/s,測線場值數據量為4Tn,所以有4Tn≤4G。單條測線飛行時間T不會超過10h(36000s,航空物探測量1架次至少飛行1個往返2條測線),則場值的采樣率n≤4G/4T=4×1024×1024×1024/4×36000次/s=29826次/s。採用大欄位來存儲測量數據,不僅能夠減少數據表的記錄數,提高查詢效率,而且使得采樣率的擴展不受限制。

(二)大欄位存儲技術應用

由於航空物探數據的數據量較大,現有的航磁測量數據按基準點方式(點存儲)存儲可達幾億個數據記錄。若按磁場數據采樣點存儲方式(簡稱「場值存儲方式」),則記錄條數=(磁場數據采樣率/坐標采樣率)點存儲方式的記錄數,達幾十億條數據記錄,且隨著數據采樣率的擴展、測點的加密,航空物探測量數據量隨著時間的推移呈現快速增長之勢。顯然,如果採用常規的表結構來存儲,勢必造成數據的存儲、管理、檢索、瀏覽和提取都非常困難。另一方面,從航空物探專業應用需求來說,很少對單個測點的場值數據進行運算、分析等操作,一般至少是對一條測線或以上測線,多數時候是需要對整個測區的場值數據進行化極、上延、正反演擬合等。

因此,在航空物探資料庫表結構設計時,改變過去將基準點或場值點數據記錄作為資料庫最小管理對象的理念,採用了大欄位存儲技術,將測線作為資料庫最小管理對象,將測線上的測量數據,如坐標數據和磁場、重力場數據分別存儲在相應大欄位中。在航空物探資料庫建設中,大量採用資料庫的大欄位存儲技術(詳見《航空物探信息系統資料庫結構設計》)。

(三)大欄位存儲效率

以航磁測量數據為例分析大欄位存儲技術優勢。如果以場值存儲方式存儲測線數據,則每條記錄包含架次號、測線號、基準號、地理坐標、投影坐標、磁場數據等,由於坐標數據采樣率2次/s,磁場數據采樣率10次/s,每5個磁場數據中,只有第1個磁場數據有坐標數據,其他4個坐標數據是內插出來,因此在測線記錄中會產生大量冗餘的數據坐標數據。採用點存儲方式存儲的測線數據記錄數等於線上基準點數,若採用大欄位存儲方式,一條測線數據只存儲為1條數據記錄(圖2-7),一般一條測線的測點數近萬個,甚至更多,可見採用大欄位存儲大大減少測線數據存儲記錄數,提高數據的存取效率。

以某測區的兩條航跡線為例,分別採用3種方式測試資料庫的數據存儲效率。磁場數據的采樣率10次/s,坐標數據采樣率2次/s,兩條測線上共有基準點8801個。以場值方式存儲先內插坐標信息,使得每個場值數據都擁有自己的坐標,然後存入資料庫,共有數據記錄44005條,寫入資料庫時間為57.22s,讀取時間為1.03s。第二種方式是以采樣點的方式進行存儲,共有8801條記錄,寫入資料庫時間為9.47s,讀取需要0.91s。第三種方式是以大欄位的形式存儲,只有2條記錄,寫入資料庫1.03s,讀取時間為0.44s(表2-2)。大欄位數據存儲記錄數最少,存取效率最高。用整個測區數據測試效果更加明顯。

表2-2 三種數據存儲方法的存取效率比較

圖2-7 大欄位存儲方式示意圖

二、聯合主鍵

主外鍵是關系型資料庫建立表間關系的核心。在航空物探空間資料庫建設過程中,要素類與要素類之間、要素類與對象類之間,以及對象類與對象類之間的關系的描述有3種形式,即拓撲關系——描述要素類與要素類之間結點、鄰接和聯通關系;疊加關系——描述要素類與要素類之間的相交、包含與分類關系;隸屬關系——描述對象類與對象類之間的派生關系。前兩種關系是採用空間數據模型建立的關系,而隸屬關系是通過主鍵建立的對象類與對象類之間的關系。在建立一對一、一對多的表間關系時,需要在整個資料庫表中確定具有唯一性的一個欄位作為主鍵(主關鍵字)。

按照傳統的航空物探數據的檔案管理模式,每個項目分配一個自然數作為檔案號,項目的所有資料均與此檔案號相聯系。勘查項目和科研項目的檔案號是獨立編號的,且均從001開始。加之人工管理的原因,存在1個項目2個檔案號和2個項目1個檔案號的情況,因此現行的檔案號與項目之間的對應關系不具備唯一性,不能作為項目的唯一標識,即不能作為資料庫表的主鍵。項目編號也不能作為資料庫表的主鍵,項目編號也只是近十年的事,以前的項目沒有項目編號。

綜合考慮上述因素和項目具有分級、分類的特點,提出了構造項目唯一標識碼(簡稱「項目標識」)的方法,並以此碼作為資料庫表的主鍵。

項目標識(主鍵):AGS+項目類別(2位)+項目起始年份(4位)+檔案號(6位)

標識含義:AGS——航空物探的縮位代碼;

項目類別——2位代碼,01代表勘查項目、02代表科研項目;

起始年份—4位代碼,項目開始年號;

檔案號—6位代碼,為了與傳統的項目管理方式相銜接,後面3~4位是

項目檔案管理模式下的檔案號,不足部分補零。

以上15位編碼是一級項目的項目標識,二級及其以下級別的項目標識是在上一級項目標識基礎上擴展2位數字代碼,中間用「.」號隔開,數字為該級項目的序號。項目標識定義為30位編碼,適用於六級以內的項目。例如:AGS022004000576.08.04.02,表示該項目為2004年開展的檔案號為576的航空物探科研項目(一級項目)的第8課題(二級項目)第4子課題(三級項目)的第2專題。由此可見,該項目標識不僅僅是一個建立表間關系的關鍵字,同時還表達了不同級別項目間的隸屬關系。在系統軟體開發時,利用此關系生成了項目的分級樹形目錄,用戶對項目的層次關系一目瞭然,便於項目查詢。

資料庫的主鍵一經確定,相應地需要確定聯合主鍵的組成及其表達方式。所謂聯合主鍵就是數據資料的唯一標識,在一個資料庫表中選擇2個或者2個以上的欄位作為主鍵。由於航空物探數據絕大部分與項目標識有關,加之數據的種類較多,分類復雜,單憑主鍵確定資料庫表中記錄的唯一性,勢必需要構建極其復雜的主鍵,這種方法既不利於主鍵的數據操作,又會造成大量的數據冗餘,合理地使用聯合主鍵技術可以很好地解決資料唯一問題。以項目提交資料為例,提交的資料分為文字類資料、圖件類資料和媒體類資料,我們對資料進行分類和編號,例如100代表文字資料(110——World文檔,120——PDF文檔),200代表圖件資料(210——基礎地理資料、220——基礎地質資料,230——航跡線圖,240——剖面圖,250——等值線圖等),300代表媒體資料(310——PPT文檔,320——照片等),第1位(百位)表示該資料的類型,第2~3位表示該類資料的序號。

在資料庫管理和項目資料查詢時,採用項目標識與資料分類編號作為聯合主鍵(圖2-8),可以高效地實現復雜數據的查詢。在整個資料庫系統中多處(項目查詢、數據提取等模塊)使用聯合主鍵技術。

圖2-8 聯合主鍵實例

三、信息標准化

為了實現數據共享,在航空物探資料庫建模過程中,參考和引用了近百個國家信息化標准,編制了4個中心信息化標准和1個圖件信息化工作指南。

(一)引用的國家信息化標准

1)地質礦產術語分類代碼:地球物理勘查,地球化學勘查,大地構造學,工程地質學,結晶學及礦物學,礦床學,水文地質學,岩石學,地質學等。

2)國家基礎信息數據分類與代碼,國土基礎信息數據分類與代碼,地球物理勘查技術符號,地面重力測量規范,地面磁勘查技術規程,地面高精度磁測技術規程,大比例尺重力勘查規范,地理信息技術基本術語,地理點位置的緯度、經度和高程的標准表示法,地名分類與類別代碼編制規則。

3)地球空間數據交換格式;數學數字地理底圖數據交換格式;數字化地質圖圖層及屬性文件格式。

(二)本系統建立的信息化標准

編寫了「航空物探空間數據要素類和對象類劃分標准」,「航空物探項目管理和資料管理分類代碼標准」,「航空物探勘查分類代碼標准」,「航空物探信息系統元數據標准」,「航空物探圖件信息化工作指南」,以便與其他應用系統進行信息交換,實現資料庫資料共享。

航空物探空間數據要素類和對象類劃分標准:根據物探方法、數據處理過程以及推斷解釋方法和過程,把與GIS有關的數據劃分為不同類型的要素類-對象類數據,按專業、比例尺、數據內容對要素類和對象類進行統一命名,使空間資料庫中的每個要素類和對象類的命名具有唯一性,防止重名出現。規定要素類-對象類資料庫表結構及數據項數值類型。

航空物探項目管理和資料管理分類代碼標准:規定了航空物探項目管理和資料管理的相關內容,包括航空物探勘查項目和科研項目的項目立項、設計、實施、成果、評審、資料匯交等項目管理的全過程中的內容,以及項目成果資料和收集資料的歸檔、發送、銷毀、借閱等資料管理與服務過程中的內容和數據項代碼。

航空物探勘查分類代碼標准:在「地質礦產術語分類代碼地球物理勘查」(國家標准GB/T9649.28—1998)增加了航磁、航重專業方面所涉及的數據採集、物性參數、方法手段、儀器設備、資料數據解釋及成圖圖件等內容和數據項代碼。

航空物探信息系統元數據標准:規定了航空物探空間數據管理與服務的元數據(數據的標識、內容、質量、狀況及其他有關特徵)的內容。

四、航跡線數據模型

(一)航跡線模型的結構

航空物探測量是依據測量比例尺在測區內布置測網(測線和切割線)。當飛機沿著設計的測線飛行測量時,航空物探數據收錄系統按照一定的采樣率採集采樣點的地理位置、高度和各種地球物理場信息。採用屬性數據分置的方法,將測線地理位置信息從航空物探測量數據中分離出來,形成航跡線要素類表,在此表中只存儲與航跡線要素類有關的數據,如項目標識、測區編號、測線號、測線類型(用於區分測線、切割線、不同高度線、重復線等)、坐標、高度值等;將航跡線的對象類數據(磁場、重力場基礎數據)分別以大欄位形式存儲在各自的二維表中,它們共享航跡線,解決了多源有序不同采樣率的航空物探測量數據的數據存儲問題,在滿足要素類空間查詢的同時,統一數據的存儲方式(圖2-9)。航跡線要素類隸屬於測區要素類,它們之間為空間拓撲(包含)關系。測區從屬於勘查項目,每個勘查項目至少有一個測區,它們之間為1對多關系。有關項目信息存放在項目概況信息對象類表中,各種表之間通過項目標識進行聯接。

圖2-9 航跡線數據模型結構

(二)航跡線的UML模型

統一建模語言UML(Unified Modeling Language)是一種定義良好、易於表達、功能強大且普遍適用的建模語言。它溶入了軟體工程領域的新思想、新方法和新技術。UML是面向對象技術領域內佔主導地位的標准建模語言,成為可視化建模語言的工業標准。在UML基礎上,ESRI定義了空間資料庫建模的ArcGIS包、類庫和擴展原則。

圖2-10 與航跡線有關的資料庫表邏輯模型結構圖

在確定航跡線數據模型後,以它為基礎,使用UML完成與航跡的有關的項目概況信息、測區信息、原始數據等資料庫表邏輯模型設計(圖2-10)。

由UML模型生成Geodatabase模式時,模型中的每個類都對應生成一個要素類或對象類。類的屬性映射為要素類或對象類的欄位。基類屬性中包含的欄位,在繼承類中不需重復創建。例如,每個類都包括項目標識等欄位,可以創建一個包含公共屬性的基類,其他類從該類繼承公共的屬性,而無需重復建基類中包含的屬性。因為基類沒有對應的要素類或對象類,所以將基類設置為抽象類型。要素類之間的關系採用依賴關系表示。

五、資料庫邏輯模型

關系資料庫的邏輯結構由一組關系模式組成,因而從概念結構到關系資料庫邏輯結構的轉換就是將概念設計中所得到的概念結構(ER圖)轉換成等價的UML關系模式(圖2-11)。在UML模型圖中,要素數據集用Geodatabase工作空間下的靜態包表示。要素集包不能互相嵌套,為了容易組織,在生成物理模型後,在要素數據集包中自定義嵌套。要素數據集與空間參考有關,但是空間參考不能在UML中表達。要素類和二維表都是以類的形式創建的,區別是要素類繼承Feature Class的屬性,而二維表繼承Object屬性。為了表達每種元素的額外屬性,比如設置字元型屬性欄位的字元串長度,設置要素類的幾何類型(點、線或面)需要使用Geodatabase預定義的元素標記值。

圖2-11 邏輯設計關系轉換

基於航空物探數據的內在邏輯關系進行分析,使用統一建模語言(UML)構建數據實體對象間的關系類,定義了航空物探資料庫的邏輯模型(圖2-12)。

㈥ 資料庫中視圖怎麼進行軟體測試

從測試過程的角度來說我們也可以把資料庫測試分為:

系統測試

傳統軟體系統測試的測試重點是需求覆蓋,而對於我們的資料庫測試同樣也需要對需求覆蓋進行保證。那麼資料庫在初期設計中也需要對這個進行分析,測試。例如存儲過程,視圖,觸發器,約束,規則等我們都需要進行需求的驗證確保這些功能設計是符合需求的.另一方面我們需要確認資料庫設計文檔和最終的資料庫相同,當設計文檔變化時我們同樣要驗證改修改是否落實到資料庫上。

這個階段我們的測試主要通過資料庫設計評審來實現。

集成測試

集成測試是主要針對介面進行的測試工作,從資料庫的角度來說和普通測試稍微有些區別對於資料庫測試來說,需要考慮的是數據項的修改操作、數據項的增加操作、數據項的刪除操作、數據表增加滿、數據表刪除空、刪除空表中的記錄、數據表的並發操作、針對存儲過程的介面測試、結合業務邏輯做關聯表的介面測試。

同樣我們需要對這些介面考慮採用等價類、邊界值、錯誤猜測等方法進行測試。

單元測試

單元測試側重於邏輯覆蓋,相對對於復雜的代碼來說,資料庫開發的單元測試相對簡單些,可以通過語句覆蓋和走讀的方式完成。

系統測試相對來說比較困難,這要求有很高的資料庫設計能力和豐富的資料庫測試經驗。而集成測試和單元測試就相對簡單了。

而我們也可以從測試關注點的角度對資料庫進行分類:

功能測試

對資料庫功能的測試我們可以依賴與工具進行:

DBunit:一款開源的資料庫功能測試框架,可以使用類似與Junit的方式對資料庫的基本操作進行白盒的單元測試,對輸入輸出進行校驗。

QTP:大名鼎鼎的自動測試工具,通過對對象的捕捉識別,我們可以通過QTP來模擬用戶的操作流程,通過其中的校驗方法或者結合資料庫後台的監控對整個資料庫中的數據進行測試。個人覺得比較偏向灰盒。

DataFactory:一款優秀的資料庫數據自動生成工具,通過它你可以輕松的生成任意結構資料庫,對資料庫進行填充,幫助你生成所需要的大量數據從而驗證我們資料庫中的功能是否正確。這是屬於黑盒測試。

資料庫性能雖然我們的硬體最近幾年進步很快,但是我們需要處理的數據以更快的速度在增加。幾億條記錄的表格在現在是司空見慣的,如此龐大的數據量在大量並發連接操作時,我們不能像以前一樣隨意的使用查詢,連接查詢,嵌套查詢,視圖,這些操作如果不當會給系統帶來非常巨大的壓力,嚴重影響系統性能。

性能優化分4部分:

1、物理存儲方面

2、邏輯設計方面

3、資料庫的參數調整

4、SQL語句優化

性能測試:

我們如何對性能方面進行測試呢,業界也提供了很多工具通過資料庫系統的SQL語句分析工具,我們可以分析得到資料庫語句執行的瓶頸,從而優化SQL語句。

Loadrunner:這個不用多說,我們可以通過對協議的編程來對資料庫做壓力測試。

Swingbench:(這是一個重量級別的feature,類似LR,而且非常強大,只不過專門針對oracle而已)資料庫廠商也意識到這點,例如oracle11g已經提供了real applicationtest,提供資料庫性能測試,分析系統的應用瓶頸。

還有很多第三方公司開發了SQL語句優化工具來幫助你自動的進行語句優化工作從而提高執行效率。

安全測試:

軟體日益復雜,而數據又成為了系統中重中之重的核心,從以往對系統的破壞現在更傾向於對數據的獲取和破壞。而資料庫的安全被提到了最前端自從SQL 注入攻擊被發現,冒失萬無一失的資料庫一下從後台變為了前台,而一旦資料庫被攻破,整個系統也會暴露在黑客的手下,通過資料庫強大的存儲過程,黑客可以輕松的獲得整個系統的許可權。而SQL的注入看似簡單缺很難防範,對於安全測試來說,如何防範系統被注入是測試的難點。

業界也有相關的資料庫注入檢測工具,來幫助用戶對自身系統進行安全檢測。

對於這點來說業界也有標准,例如ISO IEC 21827,也叫做SSE CMM 3.0,是CMM和ISO的集成的產物,專門針對系統安全領域的另外一方面,資料庫的健壯性,容錯性和恢復能力也是我們測試的要點

我們也可以發現功能測試,性能測試,安全測試,是一個由簡到繁的過程,也是資料庫測試人員需要逐步掌握的技能,這也是以後公司對資料庫測試人員的要求。

㈦ 資料庫測試的具體測試方法

1. 分別測試記錄的新增、修改、刪除等操作,以驗證前台與後台數據的一致性為主。
2. 測試記錄的查找功能,檢查返回的數據是否正確,並測試相關功能。
3. 測試數據的不同顯示方式。
4. 測試有效和無效數據對資料庫的影響。完成標准:???? ??所有的資料庫訪問方法和進程都按照設計的方式運行,數據沒有遭到損壞。

㈧ 軟體開發資料庫如何進行測試

比如:數據冗餘,功能和性能方面存在的問題已經嚴重影響應用軟體的使用。軟體測試人員往往重視對軟體功能和編碼的測試,而忽略對軟體性能,特別是資料庫訪問並發測試。因為,他們固有的思想中認為資料庫設計存在問題對系統性能影響不大,或從根本上忽略了資料庫在軟體開發中的地位,直到出現了問題,才想到對資料庫的測試,但往往也是僅僅通過對編碼的測試工作中捎帶對資料庫進行一定的測試,這遠遠是不夠的。目前,中鐵網上訂票系統在大用戶同時在線訂票中系統頻頻癱瘓,就是最好的佐證。 所以,在應用軟體的測試工作中,應該將資料庫作為一個獨立的部分進行充分的測試,這樣才可以得到應用軟體所需要的性能優化的資料庫。那麼,應該對哪些內容進行測試,如何進行測試呢? 2、資料庫設計的測試 資料庫是應用的基礎,其性能直接影響應用軟體的性能。為了使資料庫具有較好的性能,需要對資料庫中的表進行規范化設計。規范化的範式可分為第一範式、第二範式、第三範式、BCNF範式、第四範式和第五範式。一般來說,邏輯資料庫設計應滿足第三範式的要求,這是因為滿足第三範式的表結構容易維護,且基本滿足實際應用的要求。因此,實際應用中一般都按照第三範式的標准進行規范化。但是,規范化也有缺點:由於將一個表拆分成為多個表,在查詢時需要多表連接,降低了查詢速度。故資料庫設計的測試包括前期需求分析產生資料庫邏輯模型和後期業務系統開發中的測試兩部分(這里指的是後者),我在這里稱為實體測試。 資料庫是由若乾的實體組成的,包括(表,視圖,存儲過程等),資料庫最基本的測試就是實體測試,通過對這些實體的測試,可以發現資料庫實體設計得是否充分,是否有遺漏,每個實體的內容是否全面,擴展性如何。 實體測試,可以用來發現應用軟體在功能上存在的不足,也可以發現數據冗餘的問題。經過測試,測試人員對有異議的問題要及時和資料庫的設計人員進行溝通解決。 3、數據一致性測試 在進行實體測試後,應進一步檢查下面的內容以保障數據的一致性: 3.1 表的主鍵測試根據應用系統的實際需求,對每個表的主鍵進行測試,驗證是否存在記錄不唯一的情況,如果有,則要重新設置主鍵,使表中記錄唯一。 3.2 表之間主外鍵關系的測試資料庫中主外鍵欄位在名稱,數據類型,欄位長度上的一致性測試。 3.3 級聯表,刪除主表數據後,相應從報表數據應同時刪除的問題例如學生表和學生成績表,學生數據已經刪除,成績表中相應學生的成績記錄應同時刪除。 3.4 存儲過程和觸發器的測試存儲過程可以人工執行,但觸發器不能人工處理,所以在對存儲過程和觸發器執行的過程中針對SQL SERVER2005及以上版本可以使用Microsoft SQL Server Profiler性能測試工具進行測試。 Microsoft SQL Server Profiler 是 SQL 跟蹤的圖形用戶界面,用於監視資料庫引擎或 Analysis Services 的實例。測試人員可以捕獲有關每個事件的數據並將其保存到文件或表中供以後分析。例如:可以對生產環境進行監視,了解哪些存儲過程由於執行速度太慢影響了性能。 4、資料庫的容量測試 隨著資料庫系統的使用,數據量在飛速增長,如何在使用前對數據容量的增長情況進行初步估算,為最終用戶提供參考,這在資料庫使用和維護過程中,是非常重要的。可以通過對資料庫設計中基本表的數據大小,和每天數據表的數據產生量進行初步估算。 記錄數據量=各個欄位所佔位元組數的總和表的數據量=記錄數據量*記錄數資料庫大小=各表數據量的總和 當然,資料庫的大小不僅僅只是基本表的大小,還有系統表,視圖,存儲過程等其它實體所佔的容量,但最基本的數據是表的數據。另外,資料庫的容量還包括資料庫日誌文件的容量,一般應預留資料庫文件的2倍左右。 5、資料庫的性能測試 應用軟體除了功能外,很重要的一部分就是軟體的性能,而對於資料庫系統,資料庫性能的好壞會直接影響應用軟體的性能,這部分的測試,一般手工測試就顯得無能為力了,這時就要藉助自動化的測試軟體,例如:DataFactory,DataFactory是一種強大的數據產生器,它允許開發人員和測試人員很容易產生百萬行有意義的正確的測試資料庫,該工具支持DB2、Oracle、Sybase、SQL Server資料庫。這樣,就可以模擬出應用軟體長期使用後,海量數據存儲的資料庫的性能狀況。從而盡早發現問題,進行資料庫性能的優化。 這里要注意,進行性能測試的時候,一定要注意測試環境的一致性,包括:操作系統、應用軟體的版本以及硬體的配置等,而且在進行資料庫方面的測試的時候一定要注意資料庫的記錄數、配置等要一致,只有在相同條件下進行測試,才可以對結果進行比較。否則無法和用戶對軟體的性能的觀點達成一致。 6、資料庫的壓力測試 說起測試,我們首先想到的就是軟體正確性的測試,即常說的功能測試。軟體功能正確僅是軟體質量合格指標之一。在實際開發中,還有其它的非功能因素也起著決定性的因素,例如軟體的響應速度。影響軟體響應速度的因素有很多,有些是因為演算法不夠高效;還有些可能受用戶並發數的影響。 在眾多類型的軟體測試中,壓力測試正是以軟體響應速度為測試目標,尤其是針對在較短時間內大量並發用戶的訪問時,軟體的抗壓能力。但壓力測試往往是手工難以測試的,必須藉助自動化測試工具。常用的壓力測試有:Web測試、資料庫測試等。 資料庫在大多數軟體項目中是不可缺少的,對於它進行壓力測試是為了找出資料庫對象是否可以有效地承受來自多個用戶的並發訪問。這些對象主要是:索引、觸發器、存儲過程和鎖。通過對SQL語句和存儲過程的測試,自動化的壓力測試工具可以間接的反應資料庫對象是否需要優化。 這些自動化的測試工具很多,各有特點,基於Java的項目可以使用JMeter,.Net項目可以採用.Net集成開發環境中提供的測試方案。 7、結束語 總之,在應用系統的測試中,把資料庫應當作為獨立的系統來測試,這無疑會為應用軟體的質量增加可靠的保障,同時還必須結合應用軟體進行集成測試,只有二者有機結合起來,才能最大限度的發揮資料庫和應用軟體的功能。

㈨ 如何還資料庫測試ERP

大型ERP軟體是一個在企業范圍內部應用的、高度集成的軟體,且操作頻繁,數據在各業務系統之間高度共享。那麼針對大型ERP軟體的特點,我們應該怎麼測試呢?要使用怎樣的測試方法?需要什麼樣的測試人員?....這些都是我們在測試時需要考慮的問題。
大型ERP軟體測試方法:
一、升級項目
規范測試流程、提高測試效率
測試人員盡早參與:由於業務流程復雜,測試人員越盡早熟悉業務需求,越有助於更好的了解業務,了解功能流程,方便全面的設計測試用例;
嚴格規范測試流程:由於測試工作本身處於被動狀態,存在很多隨意性和不確定性因素,所以有效提高測試效率,首先必須制定嚴格的測試規范、並嚴格按流程執行,以便更好的把握測試質量;每個公司都有不同的測試流程,制定最適合自己的,並不斷改進、完善的測試規范;
1、新增功能測試:對新增的模塊和功能統一劃分,理出與其相關的所有流程,在保證新增功能正確後,驗證所有相關流程;
2、兼容性測試:與原有系統數據的兼容,建議使用空資料庫測試基本功能,在基本功能正常下,再導入現有數據測試,驗證數據兼容;
3、整體回歸測試:使用最接近用戶使用的實際數據,對所有功能回歸;
4、對於長期升級的項目一定建立測試用例復用庫,每次升級更新一次,注意復用庫結構,可以按業務和模塊,如某某業務,某模塊,某公用。
二、測試注意事項
1、測試時不要一個用戶從頭走到底,模擬實際業務情況,定義不同用戶為不同的角色操作對應業務。
2、所有業務流程屬性測試時都要覆蓋到,並對有些有關系屬性要組合測試。