2011-04-08 8 views
1

현재 수업을받는 학생과 학기를 추적하는 학생 관리 시스템을 연구 중입니다. 사용자가 Excel 파일을 통해 데이터를 가져올 수있는 기능이 있습니다.데이터 유효성 검사 최적화

프로세스를 통해 데이터의 유효성 (유효하지 않은 문자, 전자 메일 등)을 확인하고 데이터베이스에 대해 중복 된 데이터가 있는지 확인하여 학생의 존재 여부 및/또는 이미 수행 한 클래스인지 확인합니다. 유효성 검사를 수행하려면 각 학생에 대해 2 개의 쿼리를 실행해야하는데, 한 번에 250 명의 학생을 관리해야한다면 나쁘지 않습니다 (각 쿼리는 평균 0.004 초). Liste가 500 명의 학생에 가까워지면 문제가 발생하기 시작합니다. 전체 유효성 검사 프로세스에는 약 2.5 초가 소요됩니다.

내 책에는 이것이 한 번만 발생하면 문제가되지 않지만 가져 오기 전에 사용자가 데이터 (페이지 당 30 개를 볼 수 있음)를 검토하고 편집 할 수 있기 때문에 데이터가 순차적 탐색을 통해로드 될 때마다 발생합니다 그들.

이 병 목을 감싸는 가장 좋은 방법은 무엇입니까? 아니면 내버려두고 경고해야합니까?

최대 확장성에 도달하는 가장 좋은 방법은 무엇입니까?

편집 : 나는 학생들과 그들이 참석되는 학기를 분리 한 내 응용 프로그램에서

. 내가 실행하는 첫 번째 쿼리는 학생들의 존재 여부를 확인하는 것입니다. 새로운 학생 인 경우 그렇지 않으면 새로운 학생을 만들 것이므로 학생의 데이터가 업데이트됩니다.

두 번째 쿼리는 학생이 이미 내가 그를 추가하려는 학기에 이미 참석하고 있는지 확인하는 데 사용됩니다. 그가 이미 참석하고 있다면 그는 수입에서 제외 될 것입니다.

Trim white space 
Strip html tags 

check email validity 
check if the semester for which I try to register him is a valid semester (ie : w11 for winter 2011) 
check if the province is a valid canadian province 

// first query 
check for birthday, first and last name in the database 
// second query 
check if the student is already registred for the semester in the database 

처음 세 검사가 첫 번째 쿼리가 true를 돌려주는 경우

는, 학생이 존재, 데이터를 업데이트해야합니다

유효한 입력을 될 충족되어야합니다

검증 프로세스는 다음과 같이 간다 false를 반환하면 새 학생과 새 학생을 만들어야합니다. 두 번째 쿼리가 true를 돌려주는 경우 그는 이미 학기에 참석하기 때문에 그것은 학생이 원하는 학기에 등록해야 false를 반환하는 경우

은, 학생은

+1

어떤 종류의 쿼리를 실행해야하는지 더 자세히 알려주실 수 있습니까? 예제 코드가 도움이 될 것입니다. – AgentConundrum

+0

왜 2 개의 쿼리를 이해할 수 없습니까?쿼리로 데이터의 유효성을 검사하고 있습니까? 그렇지 않다면 왜 두 번째 쿼리? –

+0

왜 정규식이나 PHP에서 무언가를 검증해야 유효성을 검사하는 쿼리를 사용하고 있습니까? – mcgrailm

답변

1

아마도 데이터를 셔플하는 대신 쿼리를 만드는 데 시간이 소비되었을 것입니다. 아마도 당신은 일괄 적으로 모든 학생들을 통과하여 스크립트를 시작하고 하나 개의 쿼리를 만들 수, 학생들의 결과로 이미 예를 들어, 정의 : 간단한 검사를 할 수있는 데이터와

SELECT student_id FROM student WHERE student_id IN (student, ids, from, your, batch, file) 

학생이 필요한 경우 업데이트 또는 생성. 기본적으로 동일한 질문을 사용하여 이미 등록한 사람들을 얻을 수 있습니다.

0

아니에요, 다시 등록 할 필요가 없습니다 전체 프로세스에 대해 명확하게 설명하고 있지만 사용자가 초기 가져 오기 및 유효성 검사 후 데이터를 편집 할 수있는 이유는 편집 된 레코드의 유효성 검사가 아닌 전체 유효성 검사를 다시 실행해야하는 이유입니다.

관련 문제