軟件測試數據庫的跨平臺設計

發表于:2009-09-28來源:作者:點擊數: 標簽:軟件測試數據庫設計跨平臺
軟件測試數據庫的跨平臺設計 數據庫設計 關鍵字:數據庫的 跨平臺設計 開發 者們應該知道,使用那些非標準的SQL命令(比如Oracle、微軟和 MySQL 等數據庫系統)存在程度相當高的危險。也就是說,從跨平臺和遵守標準的角度出發,你應該盡量采用ANSISQL,它是

軟件測試數據庫的跨平臺設計  數據庫設計

關鍵字:數據庫的 跨平臺設計開發者們應該知道,使用那些非標準的SQL命令(比如Oracle、微軟和MySQL等數據庫系統)存在程度相當高的危險。也就是說,從跨平臺和遵守標準的角度出發,你應該盡量采用ANSI SQL,它是一種和平臺無關的數據庫語言。不管你在使用哪種數據庫系統,如果它完全支持SQL那么它就應該支持ANSI SQL-92標準??墒?,“應該支持”和“確實支持”完全是兩碼事。在進行DBMS跨平臺編程的時候,并不是所有的系統都完全支持ANSI SQL標準。這篇文章主旨就是提出使用非標準SQL時所存在的風險及其相關的建議。


別使用存儲過程

在某些編程環境下,出于效率和安全等方面的原因,存儲過程成為程序員開發數據庫應用程序的唯一方法。Visual Basic、C和Java程序員都并不需要了解SQL。然而,在其他某些編程環境下,存儲過程又是完全禁用的。MySQL通常和Apache Web服務器組合使用,這是因為這兩種軟件不僅免費、可靠而且功能強大,但是,恰恰是MySQL不支持存儲過程。


--------------------------------------------------------------------------------

存儲過程的定義 
所謂存儲過程就是組成一個邏輯單元而且執行特別任務的一組SQL語句。存儲過程用來封裝針對數據庫服務器的一整套操作或查詢。

--------------------------------------------------------------------------------

Oracle和SQL服務器兩者都包括了“內建”的存儲過程,其使用也是很方便的??墒?,如果明智的話千萬別指望它們,你無法保證數據庫管理員是否鎖定、刪除或修改了這些存儲過程。如果你發現可用的某些存儲過程正是你需要的,你這才可以在自己的代碼中使用它們的功能。

通常,你能在Oracle或SQL Server上使用存儲過程但在MySQL上則無法利用。如果你確實用到了它們,那么你得保證自己沒有用到同特定平臺相關的命令(以后討論)。

別使用連接
連接是Oracle和SQL Server 這兩種DBMS上令人頭痛的一個問題,因為這兩種系統在連接的概念上有根本的不同?;旧?,各個DBMS的連接工作原理不總是一樣的,而且你最終可能會得到意外的結果集合。在我們談論各個系統有關連接的概念差別以及如何解決這些問題之前,你應該理解基本的連接子句:

連接
Join(連接)是從多個數據源獲取數據的SQL數據表創建命令。 
等連接
Equi-Join從兩個獨立的數據源獲取數據并把它們組合成一個大表。 
內/外連接
內連接(Inner Join)把兩個表的內部列連接起來。外連接把兩個表的外部列連接起來。 
左/右連接
左連接(Left Join)連接兩個表左邊的列。右連接則連接兩個表右邊的列。 
復合/復雜連接
其他各種連接—左/內、左/外、右/內和右/外等。 
反正你得記清楚了,如果你想要自己的應用程序能在各種數據庫服務器上都能工作那么就別使用連接。

ANSI SQL:CREATE, DROP, ADD, UPDATE, DELETE, INSERT, SELECT
總之,你應當用到的唯一命令如下: 

數據定義語言(DDL)下的CREATE 和DROP。 
數據操作語言(DML)下的ADD、UPDATE、DELETE和INSERT 。 
獲取數據的SELECT。 
如果你在這些命令中使用了區分大小寫的表格或字段名,或者這些名字包含了空格或其它特殊字符,那么你最好用方括號把名字圍起來。這樣做有助于防止非標準字符引發DBMS的不正常反應。



引用的完整性:鍵和數據類型

使用關系數據庫的決定性原因就是明確數據之間的關系而且維持那些關系的完整性。這樣才能讓開發者以最小的冗余性、最高效的方式存儲數據。鍵定義了關系。數據類型定義了存儲和操作數據的規則。這些就是一個數據庫的基本方面,但是具體的語法卻可能因為數據庫的不同而不同。

數據類型
只有很少部分的數據類型得到所有數據庫服務器的支持。每一種DBMS都有它自己的數據類型以及為什么要這樣使用它們的原因。某些專有數據類型(比如Microsoft Aclearcase/" target="_blank" >ccess的AUTONUMBER)用起來確實相當方便。

以下是ANSI數據類型:
BIT, CHARACTER, DATE, DECIMAL, DOUBLE PRECISION, FLOAT, INTEGER, INTERVAL, NUMERIC, REAL, SMALLINT, TIMESTAMP, TIME, VARBIT, VARCHAR, CHAR

以下是Oracle/Access/SQL不支持的“標準”數據類型:
INTERVAL, TIME, VARBIT

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97