Data validation ? ? ? ?
Verify data compliance at input (interactive / automated) logical, arithmetical conditions etc. Aspects conditions actions (correct / incorrect): read again / abandon etc. signal errors (short, clear messages) error correction methods Error sources key-pressing errors => read again immediately errors in source documents => temporary abandon, analysis, repeat later wrong data format in automated sources => abandon, analysis, trylater
Data validation. Levels, types Validation levels field – compliance to preset conditions record – correlation with other fields etc. group of records – correlations, completeness, totals etc. file – correlations, completeness, totals etc. Validation types at field level existence nature length sign etc.
Data Validation. Actions Field level (input from keyboard) if wrong: input again ▪ until correct or ▪ predefined max. no. of retries then abandon – default value? if correct: go to next field Record level if wrong: abandon the record – other actions? if correct: save the record and start reading next one
Data validation. Principle schema Message, if input from keyboard Dacă e citire de la tastatură screen / log file er = 2 er = n er > 0 nr. = 0 nr. ++ er > 0 && nr < max
Data validation. Methods Universal method Read as string, followed by verification / conversion Language and validation type specific methods Verification during reading (depends on implementation) ▪ using error code / return value of read functions ▪ using specific error variables How to choose a method 1. validation type 2. language facilities 3. ease of implementation
Data validation. Nature validation Nature numerical 0-9. – (may allow spaces at begin / end) alphabetical a-z A-Z space others (subsets) alphanumerical usually no validation Numerical nature validation direct (while reading) – depends on language facilities string, [verify each character], conversion
Data validation. Numerical nature validation //dată întreagă, cu semn – citire ca șir de caractere er = 1; while( er ) { //preluarea valoare ca sir gets_s( s ); //validare er = 0; n = strlen( s ); if( (s[0]!='+') && (s[0]!='-') && ((s[0] '9')) ) er = 1; for( i=1; i<n; i++) if( (s[i] '9') ) er = 1; //conversie if(!er) x = atoi( s ); } //I: mesaj intrare, mesaj eroare //E: valoare numerica intreaga validata int citeste_numar_intreg(char* mesaj, char* eroare) { int er,n,i,x; char s[20]; printf_s("\n"); printf_s(mesaj); else { printf_s(eroare); printf_s("\n"); } return x; } int a; a=citeste_numar_intreg("Temperatura: ", "Valoare incorecta. Mai incearca o data!"); Temperatura: qwr Valoare incorecta. Mai incearca o data. Temperatura: Valoare incorecta. Mai incearca o data. Temperatura: 132qwr Valoare incorecta. Mai incearca o data. Temperatura: asf123 Valoare incorecta. Mai incearca o data. Temperatura: 1asd321 Valoare incorecta. Mai incearca o data. Temperatura: -asd Valoare incorecta. Mai incearca o data. Temperatura: -13+ Valoare incorecta. Mai incearca o data. Temperatura: 23
Data validation. Numerical nature validation //integer data – validation by reading er = 1; while( er ) { fflush( stdin ); if( scanf_s("%d", &x) == 1 ) er = 0; } Valoare = qqawdfa valoare incorecta. Mai incearca o data. Valoare = as1243 valoare incorecta. Mai incearca o data. Valoare = 324sag
Data validation. Length, domain validation Length existence (non-zero length) Specified length (exact, max, min) Domain / set of values Domain / predefined set of values, depends on type ▪ string: predefined list of strings ▪ numerical: predefined list of values, intervals ▪ characters: predefined list of values, intervals
Spor la înv ă ţat!