ความสมบูรณ์ของข้อมูล — การตรวจสอบความถูกต้องและการตรวจสอบความน่าเชื่อถือ
แนะนำใหม่| English | ความหมาย |
|---|---|
| integrity/ɪnˈteɡrɪti/ | ความสมบูรณ์ของข้อมูล |
| validation/ˌvælɪˈdeɪʃn/ | validation |
| verification/ˌverɪfɪˈkeɪʃn/ | verification |
| range check/reɪndʒ tʃek/ | range check |
| check digit/tʃek ˈdɪdʒɪt/ | check digit |
| double entry/ˈdʌbl ˈentri/ | double entry |
| parity check/ˈpærɪti tʃek/ | parity check |
| checksum/ˈtʃeksəm/ | checksum |
| cyclic redundancy check/ˈsaɪklɪk rɪˈdʌndənsi tʃek/ | cyclic redundancy check |
| parity block check/ˈpærɪti blɒk tʃek/ | parity block check |
ทุกตัวเลขผ่านการตรวจสอบทั้งหมด
- ในเดือนกันยายนปี 1999 เครื่องบินสำรวจดาวอังคาร Mars Climate Orbiter ของ NASA เร่งเครื่องยนต์เพื่อเข้าวงโคจรและไม่เคยได้ยินเสียงอีกต่อไป มันบินต่ำกว่าแผน 170 กิโลเมตรและไหม้ดับลง
- ซอฟต์แวร์ทีมหนึ่งสร้างตัวเลขแรงขับเป็นปอนด์-ฟุตวินาที; ซอฟต์แวร์ฝั่งผู้รับคาดหวังหน่วยนิวตัน-วินาที ทุกค่าเป็นตัวเลขที่มีรูปแบบถูกต้องอยู่ในช่วงที่เหมาะสม ทุกค่าผิดไป 4.45 เท่า
- ไม่มีรูปแบบตรวจสอบใดจะจับมันได้ เพราะข้อมูลไม่ได้มีรูปแบบผิดพลาด มันแค่ไม่ใช่สิ่งที่อ้างว่าเป็น $327 ล้าน
- บทเรียนนี้คือครอบครัวการตรวจสอบสองกลุ่มที่ปกป้อง ความสมบูรณ์ (integrity): Validation ซึ่งถามว่าข้อมูลมีความสมเหตุสมผลหรือไม่, และ Verification ซึ่งถามว่าข้อมูลถูกคัดลอกมาถูกต้องหรือไม่ และช่องว่างระหว่างสองสิ่งนี้ที่ทำให้ดาวอังคารตก
สองคำถาม
- ข้อมูลมี ความสมบูรณ์ (integrity) เมื่อมีความแม่นยำ สอดคล้องกัน และครบถ้วน
- Validation เป็นการตรวจสอบอัตโนมัติว่าข้อมูลที่ป้อนเข้ามาสมเหตุสมผลและเป็นไปตามกฎที่กำหนด ถามว่า: สิ่งนี้สมเหตุสมผลไหม?
- Verification ตรวจสอบว่าข้อมูลถูกป้อนหรือถ่ายโอนมาถูกต้องโดยการเปรียบเทียบกับแหล่งกำเนิดหรือค่าที่คำนวณใหม่ ถามว่า: สิ่งนี้ถูกคัดลอกมาถูกต้องไหม?
- ทั้งสองอย่างไม่พิสูจน์ว่าข้อมูลเป็นความจริง ต้องใช้ทั้งสองอย่างร่วมกัน
ห้องปฏิบัติการแนวคิดการคำนวณ
จัดกลุ่มตัวอย่างที่เป็นรูปธรรมตาม idea การคำนวณที่แสดงออก
วิธีการ Validation
| การตรวจสอบ | กฎ | ตัวอย่าง |
|---|---|---|
| range check | ระหว่างขอบเขตสองค่า | เดือนคือ 1 ถึง 12 |
| limit check | บนด้านหนึ่งของค่าจำกัดเดียว | อายุ ≥ 18 |
| การตรวจสอบการมีอยู่ (lookup) check | ค่าอยู่ในรายการหรือตาราง | รหัสสินค้ามีการมีอยู่จริง |
| การตรวจสอบความยาว | จำนวนตัวอักษรถูกต้อง | รหัสไปรษณีย์จำนวน 6 ตัวอักษร |
| การตรวจสอบประเภท / ตัวอักษร | ประเภทข้อมูลถูกต้อง | ช่องโทรศัพท์อนุญาตให้ใช้เฉพาะตัวเลขเท่านั้น |
| การตรวจสอบรูปแบบ | ตรงกับรูปแบบที่กำหนด | อีเมลมี @ |
| การตรวจสอบความพร้อม | ช่องที่จำเป็นไม่ว่างเปล่า | มีการกรอกชื่อ |
| เลขตรวจสอบ | เลขเพิ่มที่คำนวณจากเลขอื่น | ISBN, หมายเลขบัตร |
การตรวจสอบว่าเดือนที่ป้อนอยู่ระหว่าง 1 ถึง 12 เป็น:
ความยาก 1/5 · 100 เหรียญ + โบนัสเล็กน้อยในการทำครั้งแรกวันนี้
การตรวจสอบช่วงยืนยันว่าค่าอยู่ในขอบเขตที่เหมาะสม
จับคู่การตรวจสอบความถูกต้องแต่ละรายการเข้ากับวัตถุประสงค์ของมัน
ความยาก 2/5 · 140 เหรียญ + โบนัสเล็กน้อยในการทำครั้งแรกวันนี้
การมีอยู่ = ไม่ว่าง; รูปแบบ = ตรงกับรูปแบบ; ตัวเลขตรวจสอบ = คำนวณมาเพื่อจับตัวเลขที่พิมพ์ผิด
ตัวเลขที่คำนวณเพิ่มจากตัวเลขอื่นๆ เพื่อจับตัวเลขที่พิมพ์ผิด (เช่น ใน ISBN และหมายเลขบัตร) คือ ______ digit.
ความยาก 1/5 · 100 เหรียญ + โบนัสเล็กน้อยในการทำครั้งแรกวันนี้
ตัวเลขตรวจสอบถูกคำนวณใหม่จากตัวเลขที่เหลือและเปรียบเทียบกับมัน ตรวจจับข้อผิดพลาดส่วนใหญ่ที่เป็นตัวเลขเดียวหรือการสลับตำแหน่ง
ตัวอย่างวิธีทำ: ชื่อการตรวจสอบที่伪代码ดำเนินการ
| Pseudocode | Check |
|---|---|
IF x < 0 OR x > 10 THEN OUTPUT "Invalid" |
range check: ระหว่างสองค่าจำกัด |
IF x = "" THEN OUTPUT "Invalid" |
presence check: ไม่ว่างเปล่า |
IF NOT(x = "Red" OR x = "Yellow" OR x = "Blue") THEN OUTPUT "Invalid" |
existence (lookup) check: เป็นหนึ่งในรายการ |
IF LENGTH(x) <> 6 THEN OUTPUT "Invalid" |
length check: หกตัวอักษร |
IF MID(x, 1, 1) < "A" OR MID(x, 1, 1) > "Z" THEN OUTPUT "Invalid" |
format check: ตัวอักษรแรกเป็นตัวอักษร |
- การจดทะเบียนรถที่มีหนึ่งตัวอักษร สามตัวเลข และสองตัวอักษร ต้องใช้ format check ในแต่ละตำแหน่งและ length check สำหรับหกตัวอักษร วันเดือนปีเกิดต้องใช้ format check (
DD/MM/YYYY), range check (เดือนคือ 1 ถึง 12, ปีไม่อยู่ในอนาคต) และ presence check.
จับคู่บรรทัด伪代码 (pseudocode) แต่ละบรรทัดกับการตรวจสอบความถูกต้องที่ทำการ
ความยาก 2/5 · 140 เหรียญ + โบนัสเล็กน้อยในการทำครั้งแรกวันนี้
ทดสอบความว่าง = การมีอยู่; จำนวนอักขระ = ความยาว; ขอบเขตสองจุด = ช่วง; รายการค่าที่อนุญาต = การมีอยู่หรือการค้นหาข้อมูล
ตัวอย่างวิธีทำ: เลขตรวจสอบ และสิ่งที่มันตรวจไม่พบ
- แผนงานอย่างง่าย: เลขตรวจสอบคือเศษเมื่อผลรวมของเลขหารด้วย 10, แปะท้ายตัวเลข
4162มีผลรวมของเลข 13, ดังนั้นจึงเก็บเป็น41623. - ผู้ใช้พิมพ์
41523: ผลรวม现在是 12, เลขตรวจสอบควรจะเป็น 2, ดังนั้นข้อผิดพลาด ถูกตรวจจับได้. - ผู้ใช้พิมพ์
14623: สองตัวอักษรแรกสลับกัน, แต่ผลรวมยังคงเป็น 13, ดังนั้นเลขตรวจสอบตรงกันและข้อผิดพลาด ไม่ถูกตรวจจับ แผนงานจริง (ISBN, หมายเลขบัตร) ให้น้ำหนักแก่แต่ละตำแหน่งเพื่อให้การสลับเปลี่ยนผลลัพธ์
สิ่งที่ไม่สามารถตรวจสอบได้
- การตรวจสอบจับข้อมูลที่ รูปแบบผิด หรือเกินขอบเขต
- มันไม่สามารถจับข้อมูลที่รูปแบบถูกต้องแต่เป็นเท็จได้
Bobที่ถูกป้อนเข้าไปในBibผ่านการตรวจสอบทั้งหมด; ตัวอย่างเช่น figura ทุกชิ้นที่ถูกส่งไปยังดาวอังคารก็ตาม - สำหรับสิ่งนั้นคุณต้องการการยืนยันเทียบกับแหล่งที่มา, และบุคคลที่อ่านสิ่งที่พวกเขาพิมพ์
ทำไมการตรวจสอบความถูกต้องจึงยังปล่อยให้ข้อมูลที่ไม่ดีผ่านได้?
ความยาก 1/5 · 100 เหรียญ + โบนัสเล็กน้อยในการทำครั้งแรกวันนี้
การตรวจสอบความถูกต้องตรวจสอบรูปแบบ ไม่ใช่ความจริง — ค่าที่มีรูปแบบถูกต้องแต่ผิดจะผ่านไปได้
การยืนยันระหว่างกรอกข้อมูล
- การกรอกซ้ำ: ข้อมูลถูกกรอกสองครั้ง, โดยบุคคลเดียวกันหรือโดยสองคน, และคอมพิวเตอร์เปรียบเทียบทั้งสองเวอร์ชันและรายงานความแตกต่างใดๆ กรณีพาสเวิร์ดใหม่คือกรณีทั่วไป
- การตรวจสอบด้วยสายตา: บุคคลเปรียบเทียบสิ่งที่อยู่บนหน้าจอกับเอกสารต้นฉบับเดิมและแก้ไขความแตกต่างใดๆ ก่อนบันทึก
- ทั้งสองปกป้องความสมบูรณ์โดยการมั่นใจว่าข้อมูลที่จัดเก็บตรงกับแหล่งที่มา
การขอให้ผู้ใช้พิมพ์รหัสผ่านใหม่สองครั้งเป็นตัวอย่างของ:
ความยาก 1/5 · 100 เหรียญ + โบนัสเล็กน้อยในการทำครั้งแรกวันนี้
การกรอกซ้ำสองครั้งเปรียบเทียบสำเนาที่พิมพ์เข้าด้วยกันสองชุดเพื่อยืนยันว่าข้อมูลถูกป้อนอย่างถูกต้อง
การยืนยันระหว่างการถ่ายโอนข้อมูล
- บิตสามารถพลิกในการเดินทาง parity check เพิ่มบิตเพิ่มเติมหนึ่งบิตต่อไบต์เพื่อให้อριθ্মะของ 1 เป็นคู่ (even parity) หรือคี่; ผู้รับนับอีกครั้ง, และบิตที่พลิกเพียงตัวเดียวล้มเหลวในการนับ
- checksum คือค่าที่คำนวณจากบล็อกข้อมูลโดยอัลกอริทึมและส่งพร้อมกับมัน; ผู้รับคำนวณใหม่อีกครั้งและเปรียบเทียบ การถ่ายโอนไฟล์วิดีโอจากกล้องไปยังเซิร์ฟเวอร์ทำงานแบบนี้: ความไม่ตรงกันหมายถึงการส่งซ้ำ
- cyclic redundancy check (CRC) checksum ที่แข็งแกร่งกว่าโดยใช้การหารพหุนาม, จับรูปแบบข้อผิดพลาดได้มากกว่ามาก

*บิตเพิ่มเติมหนึ่งตัวทำให้จำนวน 1 เป็นเลขคู่; บิตที่กลับด้านจะทำให้มันเสียสมดุล

Compute, send, recompute, compare
การตรวจสอบพาริตี้ทำงานโดย:
ความยาก 1/5 · 100 เหรียญ + โบนัสเล็กน้อยในการทำครั้งแรกวันนี้
บิตพาริตี้ทำให้จำนวน 1 เป็นคู่หรือคี่; ผู้รับนับใหม่อีกครั้งเพื่อตรวจจับข้อผิดพลาดที่บิตเดียว
สิ่งใดบ้างเป็นวิธีการตรวจสอบความน่าเชื่อถือที่ใช้ระหว่างการ ส่ง ข้อมูล? เลือก ทั้งหมด ที่ถูกต้อง
ความยาก 2/5 · 140 เหรียญ + โบนัสเล็กน้อยในการทำครั้งแรกวันนี้
Parity และ checksum คำนวณค่าอีกครั้งที่ฝั่งผู้รับ Double entry และการตรวจสอบด้วยสายตาเกิดขึ้นระหว่างการป้อนข้อมูล
การตรวจสอบพาริตี้ byte ตรวจจับข้อผิดพลาดในการส่งทุกประเภทใน byte นั้น
ความยาก 1/5 · 100 เหรียญ + โบนัสเล็กน้อยในการทำครั้งแรกวันนี้
บิตสองตัวที่ถูกพลิกทำให้จำนวน 1 ไม่เปลี่ยน ดังนั้นจึงผ่านไปได้ Parity ตรวจจับข้อผิดพลาดที่บิตเดียวได้อย่างเชื่อถือได้เท่านั้น
ตัวอย่างวิธีทำ: บล็อก parity ตั้งตำแหน่งบิต
- parity block check เรียบเรียงไบต์ในตาราง: แต่ละไบต์มีบิต parity ของแถว, และไบต์ parity เพิ่มเติมหนึ่งไบต์ถือ parity คอลัมน์ของไบต์ด้านบน
- ไบต์สี่ตัวถูกส่งด้วย even parity, ตามด้วยไบต์ parity นับ 1 ในทุกแถวและคอลัมน์: ไบต์ 3 มีห้าและคอลัมน์ 4 มีสาม, ทั้งคู่เป็นคี่
- บิตที่แถวและคอลัมน์นั้นตัดกันคือบิตที่เปลี่ยน, ดังนั้นจึงรีเซ็ตจาก 1 เป็น 0 Bounce parity bit เดียวตรวจจับข้อผิดพลาด; บล็อกระบุตำแหน่งและแก้ไข

*แถวผิดหนึ่งแถว คอลัมน์ผิดหนึ่งคอลัมน์: บิตอยู่ที่จุดตัด
เรียงลำดับขั้นตอนของการตรวจสอบพาริตี้บล็อก
ความยาก 3/5 · 200 เหรียญ + โบนัสเล็กน้อยในการทำครั้งแรกวันนี้
แถวตรวจจับ คอลัมน์ตรวจจับ จุดตัดระบุตำแหน่ง และการพลิกแก้ไข นั่นคือสิ่งที่บล็อกเพิ่มเข้าไปเหนือบิตพาริตี้เดี่ยว
ตัวอย่างวิธีทำ: การตรวจสอบใดจับข้อผิดพลาดใด
- ผู้ใช้พิมพ์วันเดือนปีเกิดของ他们是
31/02/2009, จากนั้นพิมพ์อีเมลของพวกเขาสองครั้ง. การตรวจสอบใดจับข้อผิดพลาดใด, และอะไรคือความแตกต่าง? - Validation: การตรวจสอบรูปแบบหรือขอบเขตปฏิเสธ
31/02/2009, เพราะกุมภาพันธ์ไม่มีวันละ 31 วัน คอมพิวเตอร์ทดสอบค่าตามกฎ - Verification: การกรอกซ้ำเปรียบเทียบอีเมลทั้งสองและรายงานความไม่ตรงหากต่างกัน คอมพิวเตอร์เปรียบเทียบสองสำเนา, และจะยอมรับที่อยู่ผิดที่พิมพ์เหมือนกันสองครั้ง
- Validation ถามว่าข้อมูลสมเหตุสมผลหรือไม่; verification ถามว่ามันถูกกรอกถูกต้องหรือไม่

Sensible, or copied correctly: two different questions
ข้อใดถูกต้อง?
ความยาก 1/5 · 100 เหรียญ + โบนัสเล็กน้อยในการทำครั้งแรกวันนี้
การตรวจสอบความถูกต้องทดสอบความสมเหตุสมผลตามกฎ; การตรวจสอบความน่าเชื่อถือทดสอบว่าข้อมูลถูกป้อน/ส่งโดยไม่มีการเปลี่ยนแปลง
การตรวจสอบความน่าเชื่อถือพิสูจน์ว่าข้อมูลถูกคัดลอกหรือป้อนโดยไม่มีการเปลี่ยนแปลง — แต่ไม่证据证明ว่าค่านั้นเป็นความจริงในทางปฏิบัติ
ความยาก 1/5 · 100 เหรียญ + โบนัสเล็กน้อยในการทำครั้งแรกวันนี้
Double entry / checksums proves the data arrived unchanged; only a human or a cross-check can confirm it is actually true.
คะแนนที่หลุดหายไป
- A check digit is validation on entry; parity และ checksum verify การถ่ายโอน อย่าจัดหมวดหมู่它们在wrong heading
- Neither check proves that data is true. Validation says "reasonable"; verification says "matches the source"
- A byte parity check misses two flipped bits in the same byte, เพราะthey cancel. บอกว่า "single-bit errors"
- Encryption เป็นมาตรการความปลอดภัย มันทำอะไรไม่ได้กับความสมบูรณ์
คุณเข้าใจแล้ว
- validation = กฎอัตโนมัติระหว่างกรอก: range, limit, existence, length, type, format, presence, check digit; มันไม่สามารถจับค่าที่มีรูปแบบถูกต้องแต่ผิด
- การตรวจสอบ เมื่อเข้าสู่ระบบ = การบันทึกสองชั้น และ การตรวจสอบด้วยสายตา; เมื่อถ่ายโอนข้อมูล = parity (byte หรือบล็อก), checksum, CRC
- บล็อก parity จะ ระบุตำแหน่ง bit ที่เปลี่ยนไปที่จุดตัดของแถวและคอลัมน์ที่ล้มเหลว
- การตรวจสอบถามว่า "สมเหตุสมผลไหม?"; การตรวจสอบถามว่า "คัดลอกถูกต้องหรือไม่?"; ไม่มีข้อใดถามว่า "เป็นความจริงหรือไม่?"