爬蟲結果數據完整性校驗


數據完整性分為三個方面:

1、域完整性(列)

  限制輸入數據的類型,及范圍,或者格式,如性別字段必須是“男”或者“女”,不允許其他數據插入,成績字段只能是0-100的整型數據,email字段的內容必須符合郵箱的正則表達式

2、實體完整性(行)

  要求表中的所有行都有一個唯一標識符。這個唯一標識符可能是一列,也可能是幾列的組合,稱為主鍵。也就是說,表中的主鍵在所有行上必須取唯一值。

3、參照完整性(表)

  參照完整性是基於外鍵與主鍵之間的關系,從表中的外鍵必須在主表中存在數據,不能引用主表中不存在的主鍵值,在輸入更改或者刪除主表數據時,從表需要聯動變化,保證了數據的一致性。

 

根據以上概念,對於數據的完整性校驗是從 “列”、“行”、“表” 的維度進行的。

 

有些約束是在建表的時候就已經根據數據庫定義語言DDL語句進行了約束。

1、域完整性約束

  強制域完整性的方法有:限制類型(通過設定列的數據類型)、格式(通過CHECK約束和規則)或可能值的范圍(通過FOREIGN KEY約束、CHECK約束、DEFAULT定義、NOT NULL定義和規則)

2、實體完整性約束

  強制實體完整性的方法有:索引、UNIQUE約束、PRIMARY KEY約束或IDENTITY屬性。

3、參照完整性約束

  強制參照完整性的方法有:主外鍵關系

 

校驗點分析:

  可以看到其實實體完整性是肯定符合的,因為沒有主鍵是不能建表的,參照完整性約束在建表時一般也會進行約束,校驗的重點在於域完整性校驗,即校驗列數據的內容,有時候建表時不會增加CHECK約束(下面會舉例),

所以不能保證入庫的數據就是你想要的,假如沒有約束性別字段只能為”男”或者“女”,而你又需要統計男女比例分布,萬一爬蟲數據寫入了其他值,則統計結果肯定就不准確了。

例子:

CHECK約束(mysql)

在 "Persons" 表創建時在 "P_Id" 列上創建 CHECK 約束。CHECK 約束規定 "P_Id" 列必須只包含大於 0 的整數。

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (P_Id>0)
)

 

域完整性校驗實例:

使用robot framework編寫的自動化測試腳本

*** Settings ***
Library           DatabaseLibrary
Library           re

*** Test Cases ***
域完整性校驗
    [Documentation]    腳本解釋:
    ...
    ...      1、連接數據庫,讀取主鍵id和email字段的值
    ...
    ...      2、遍歷email的所有值,校驗是否符合郵箱格式的正則表達式,如果不符合用例失敗,打印錯誤信息
    Connect To Database Using Custom Params    pymysql    database='test_platform',user='root',password='guchen',host='192.168.202.80',port=3306
    ${table}    Set Variable    account_user
    ${primary_key}    Set Variable    id
    ${column}    Set Variable    email
    @{result}    Query    select ${primary_key},${column} from ${table}
    Log Many    @{result}
    : FOR    ${li}    IN    @{result}
    \    log    ${li[1]}    #${li[1]}為獲取到的郵箱
    \    Run Keyword If    '${li[1]}' == ''    log    數據為空
    \    ...    ELSE    Should Match Regexp    ${li[1]}    ^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$    msg=${table}表中,${primary_key}為${li[0]}的行數據${column}字段的值:${li[1]}數據格式不正確,非郵箱格式。
    \    ...    #校驗郵箱字段的值是否都符合郵箱格式

 

 

腳本解釋:

  1、連接數據庫,讀取主鍵id和email字段的值

  2、遍歷email的所有值,校驗是否符合郵箱格式的正則表達式,如果不符合用例失敗,打印錯誤信息


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM