데이터베이스를 저장소로 사용하는 단일 사용자 데스크톱 응용 프로그램에서 데이터베이스에 대한 데이터 유효성 검사를 수행해야합니까, 아니면 코드에서 수행 할 수 있습니까? 모범 사례는 무엇이며, 없으면 두 가지 가능성 각각의 장단점은 무엇입니까?데스크톱 응용 프로그램에 대한 데이터 유효성 검사를 수행 할 위치는 어디입니까? 데이터베이스 또는 코드?
답변
둘 다합니다.
데이터 유효성 검사의 가장 좋은 방법은 프로그램 입력을 데이터베이스에 삭제하는 것입니다. 그러나 이것은 자체 유효성 확인을 가지고있는 데이터베이스를 핑계로 삼지 않습니다. 코드에서 유효성 검사를 프로그래밍하면 관리되는 환경에서 생성 된 델타 만 고려됩니다.손상된 데이터베이스, 관리 오류 및 둘 이상의 응용 프로그램에서 데이터베이스를 사용할 원격/미래의 가능성을 고려하지 않습니다.이 경우 응용 프로그램 수준 데이터 유효성 검사 논리가이 새 응용 프로그램에 복제되어야합니다.
데이터베이스에는 자체 검증 루틴이 있어야합니다. 들어오는 데이터를 청결성 검사/제한/어설 션을 실행하는만큼 정리하는 것으로 생각할 필요가 없습니다. 데이터베이스에 유효하지 않은 데이터가있을 수 있습니다. 이것이 전체 무결성 제약 조건입니다. 요약하면
, 당신은 둘 다 수행
- 살균을하고 데이터 저장소에 도달하기 전에 사용자 입력을 확인합니다.
- 데이터 저장소에 유효성 검사를 강화하는 제약 조건을 부여하십시오.
데이터가 데이터베이스에 도달하기 전에 항상 코드에서 유효성을 검사해야합니다.
모범 사례는 둘 다입니다. 데이터베이스는 자체 상태가 유효한지 확인해야하며 프로그램은 데이터베이스에 쓰레기를 전달하지 않아야합니다.
단점은 더 많은 코드를 작성해야하며, 약간의 추가 런타임 오버 헤드가 발생한다는 것입니다.
장점은 데이터베이스가 낮은 수준의 유효성을 보장하지만 프로그램이 사용자가 데이터베이스의 오류를 다시 전달하는 것보다 훨씬 효율적으로 올바른 데이터를 입력 할 수 있다는 것입니다. 이전에 개입 할 수 있고 UI 힌트를 제공 할 수 있습니다 그들은) 등이 제대로 완료 될 때까지 유효하지 않은 텍스트는 빨간색 필드
- 의견 승진 편집 (추가 정보) -
많은 경우 스마트 접근 방식은 각각 검증을 구동되는 데이터를 작성하는 것입니다공유 데이터 파일 (예 : XML)을 사용하여 유효성 검사를 수행하십시오. 유효성 검사에 대한 사양이 변경되면 설명 파일을 편집하기 만하면 유효성 검사의 양쪽 끝이 동기화되어 업데이트됩니다. (코드 변경 없음).
저장하기 전에 데이터를 확인하는 것이 현명하지 않습니까? 데이터베이스 연결 및 리소스가 비쌉니다. 데이터를 데이터베이스로 보내기 전에 데이터의 유효성을 검사하는 일종의 논리가 있는지 확인하십시오. 나는 어떤 사람들이 프론트 엔드에서, 다른 사람들은 백 엔드에서, 다른 사람들은 양쪽에서 그것을하는 것을 보았다.
어셈블리 또는 유효성 검사 단계를 만드는 것이 좋습니다. 데이터의 유효성을 검사 한 다음 db로 보내십시오.
데이터가 응용 프로그램보다 오래 지속됩니다. 그것은 수년 동안 주위에 달려있다. 응용 프로그램이 규제 당국이나 법 집행 기관에 관심있는 데이터를 처리하지 않더라도 해당 사용자의 데이터 범위가 계속 증가합니다.
하나의 응용 프로그램이 여러 데이터베이스를 공유하는 것보다 조직간에 데이터를 공유 (보고, 데이터웨어 하우스, 데이터 허브, 웹 서비스)하거나 조직간에 교환하는 것이 더 일반적입니다. 그러한 교환은 스키마를 개념적으로 소유하고있는 프론트 엔드 애플리케이션 외에 데이터를 추출하고 데이터를로드하는 다른 메커니즘을 포함 할 수 있습니다.
데이터 유효성 검사 규칙을 일단 데이터베이스에 저장하면됩니다. 당신이 belt'n'braces를 좋아한다면 GUI에도 넣으십시오.
신청하십시오!
sqlerror -12345를 최종 사용자에게 의미있는 메시지로 변환하는 것은 매우 어렵습니다. 많은 경우 데이터베이스가 데이터를 확보 할 때까지 사용자가 오래 동안 머물러있을 수 있습니다 (예 : 제출 한 후 오늘 stackoverflow에서받은 투표 수가 얼마나되는지 볼 수 있습니다).
첫 번째 장점은 응용 프로그램의 데이터를 데이터베이스로 보내기 전에 유효성을 검사하는 것입니다.
두 번째 우선 순위는 사용자가 유효하지 않은 데이터를 입력하거나 데이터가 부적절하다는 것을 즉시 경고하지 않도록 프런트 엔드에서 데이터의 유효성을 검사하고 확인하는 것입니다. (응용 프로그램이 충분히 중요하고 예산이 충분히 큰 경우) 데이터베이스 자체 등 constriants 및 트리거
- 1. JavaScript에서 인수 유효성 검사를 수행 할 위치는 어디입니까?
- 2. 페이지 매김/필터링을 수행 할 위치는 어디입니까? 데이터베이스 또는 코드에서?
- 3. NoSQL은 데스크톱 응용 프로그램에 적합한 데이터 솔루션입니까?
- 4. 데이터 특정 검사를 수행 할 MVC 모델
- 5. mysql에서 UNION을 수행 할 때 어떻게해야합니까? 결과에 대한 위치는 어디입니까?
- 6. 입력 유효성 검사를 수행 할 위치
- 7. MVP를 사용하여 winforms 데스크탑 응용 프로그램에 로그인하는 위치는 어디입니까?
- 8. 웹 응용 프로그램에 Ninject IKernel을 저장할 위치는 어디입니까?
- 9. tools.jar에 대한 javadoc을 다운로드 할 위치는 어디입니까?
- 10. 내 .txt 파일을 Flex 응용 프로그램에 보관할 수있는 위치는 어디입니까?
- 11. 데이터 스토어 커서를 Memcache 또는 데이터 스토어에 저장할 위치는 어디입니까?
- 12. MVC : 뷰를로드 할 위치는 어디입니까?
- 13. iPhone의 글꼴 위치는 어디입니까?
- 14. Eclipse RCP 응용 프로그램에 "전역"데이터를 저장할 위치는 어디입니까?
- 15. Java 응용 프로그램의 환경 설정을 저장할 위치는 어디입니까?
- 16. 이 코드를 Rails 웹 응용 프로그램에 넣을 위치는 어디입니까?
- 17. 일반적으로 응용 프로그램에 SQL 쿼리를 넣을 위치는 어디입니까?
- 18. django 응용 프로그램에 대한 런타임 검사를 수행 할 수있는 방법이 있습니까? (이 작업을 수행하는 IDE는 무엇입니까?)
- 19. 데이터 유효성 검사를 담당하는 계층은
- 20. Windows 데스크톱 응용 프로그램에 대한 아이디어
- 21. md5 검사를 수행 할 스크립트 또는 응용 프로그램
- 22. Google 코드 : 문서를 넣을 위치는 어디입니까?
- 23. 데이터를 저장할 위치는 어디입니까?
- 24. 코드 (C#, Java)와 데이터베이스 (SQL) 사이에서 정렬 또는 필터링을 수행해야하는 위치는 어디입니까?
- 25. jQuery에 대한 html 코드를 저장할 위치는 어디입니까?
- 26. 인터페이스를 선언 할 위치는 어디입니까?
- 27. 응용 프로그램을 실행하는 데 필요한 중요한 정보를 저장할 위치는 어디입니까?
- 28. 파이썬에서 ast 수정을 트리거 할 위치는 어디입니까?
- 29. 런타임에 암호를 저장할 위치는 어디입니까?
- 30. Java 응용 프로그램 개체 ... 저장 위치는 어디입니까?
"단일 사용자 데스크톱을 통해 모든 삽입 및 업데이트의 정확성을 확인하기 위해
세 번째 우선 순위는 것 응용 프로그램 "은 데이터베이스 백엔드에 대한 실제 이유가 없음을 나타냅니다. 물론, 데이터가 "자연스럽게 관계형"이고 데이터베이스에 대한 요구가있을 수 있다면 그것은 매우 정당합니다. 그러나 그렇지 않으면 이것은 "내 망치가 있습니다.이 나사는 못처럼 보입니다. "-bell – Kimvais
소매 응용 프로그램이므로이 경우 SQL과 데이터베이스를 매우 유용하게 사용할 수 있습니다. – luvieere
충분히 공정하게, 단지 당신이 적어도 그것에 대해 생각하고 있는지 확인하고 싶었습니다. :) – Kimvais