1. 程式人生 > >web測試和資料庫設計相關積累,不…

web測試和資料庫設計相關積累,不…

1. 資料庫設計一般都要遵循三個正規化

第一正規化:

內容相似的資料列必須消除(消除的辦法是再建立一個數據表來存放他們)
必須為每一組相關資料分別建立一個數據表
每條資料記錄必須用一個主鍵標識

第二正規化:

只要資料列裡的內容出現重複,就意味著應該把資料表拆分成多個子表
拆分形成的資料表必須用外來鍵關聯起來

第三正規化:
與主鍵沒有直接關係的資料列必須消除(消除的辦法是再建立一個數據表來存放他們)

通俗地理解三個正規化

 通俗地理解三個正規化,對於資料庫設計大有好處。在資料庫設計中,為了更好地應用三個正規化,就必須通俗地理解三個正規化(通俗地理解是夠用的理解,並不是最科學最準確的理解):
  第一正規化:1NF是對屬性的原子性約束,要求屬性具有原子性,不可再分解;

  第二正規化:2NF是對記錄的惟一性約束,要求記錄有惟一標識,即實體的惟一性;

  第三正規化:3NF是對欄位冗餘性的約束,即任何欄位不能由其他欄位派生出來,它要求欄位沒有冗餘。

  沒有冗餘的資料庫設計可以做到。但是,沒有冗餘的資料庫未必是最好的資料庫,有時為了提高執行效率,就必須降低正規化標準,適當保留冗餘資料。具體做法是:在概念資料模型設計時遵守

第三正規化,降低正規化標準的工作放到物理資料模型設計時考慮。降低正規化就是增加欄位,允許冗餘。

        基本表及其欄位之間的關係, 應儘量滿足第三正規化。但是,滿足第三正規化的資料庫設計,往往不是最好的設計。為了提高資料庫的執行效率,常常需要降低正規化標準:適當增加冗餘

,達到以空間換時間的目的。

  〖例2〗:有一張存放商品的基本表,如表1所示。“金額”這個欄位的存在,表明該表的設計不滿足第三正規化,因為“金額”可以由“單價”乘以“數量”得到,說明“金額”是冗餘欄位。但是,

增加“金額”這個冗餘欄位,可以提高查詢統計的速度,這就是以空間換時間的作法。

  在Rose 2002中,規定列有兩種型別:資料列和計算列。“金額”這樣的列被稱為“計算列”,而“單價”和“數量”這樣的列被稱為“資料列”。

  表1 商品表的表結構

  商品名稱 商品型號 單價 數量 金額

  電視機 29吋 2,500 40 100,000

2.  Form表單中method="post/get'的區別

Form中的get和post方法,在資料傳輸過程中分別對應了HTTP協議中的GET和POST方法。二者主要區別如下:
1、Get是用來從伺服器上獲得資料,而Post是用來向伺服器上傳遞資料。
2、Get將表單中資料的按照variable=value的形式,新增到action所指向的URL後面,並且兩者使用“?”連線,而各個變數之間使用“&”連線;Post是將表單中的資料放在form

的資料體中,按照變數和值相對應的方式,傳遞到action所指向URL。
3、Get是不安全的,因為在傳輸過程,資料被放在請求的URL中,而如今現有的很多伺服器、代理伺服器或者使用者代理都會將請求URL記錄到日誌檔案中,然後放在某個地方,這樣就可能會有

一些隱私的資訊被第三方看到。另外,使用者也可以在瀏覽器上直接看到提交的資料,一些系統內部訊息將會一同顯示在使用者面前。Post的所有操作對使用者來說都是不可見的。
4、Get傳輸的資料量小,這主要是因為受URL長度限制;而Post可以傳輸大量的資料,所以在上傳檔案只能使用Post(當然還有一個原因,將在後面的提到)。
5、Get限制Form表單的資料集的值必須為ASCII字元;而Post支援整個ISO10646字符集。
6、Get是Form的預設方法。