수강신청 프로그램에 대한 시스템 분석 및 설계에 관한 질문.
라와
컴공과 졸업자 입니다.
취업준비로 인해 학원에서 공부를 하고 있는데.
저장방식과 설계단계에서 분열상태가 되었습니다.
수강신청 프로그램을 만드는데 신청 등록 방법과 저장방식과 조회문제의 요점입니다.[문제] 저장방식 - 선점형(실시간처리) : 비선점형(일괄처리)
이 데이터 설계를 기본으로....
View 부분에서 수강신청을 선택 할수 있는 table1 과 수강신청 선택한 후 불러들이는 내수강신청내역 table2가 있습니다.
버튼으로는 수강할 과목 추가, 수강과목취소, 수강신청완료 가 있습니다.
대학교 수강신청시 기본쿼리큐럼이 제시되고. 각 과목당 인원제한이 있으며, 인원이 꽉찬 과목은 조회되지 않는다라는 전제조건입니다.[선점형]
수많은 과목들이 출력이 되고 각각 하나하나에 수강신청 버튼이 있어서
그 버튼을 누를시최대과목개수, 최대학점점수, 같은과목 선택에 대한 유효성검사를 한후에
내 수강신청란에 수강신청이 되는데
해당 과목 데이터가 학생과 과목 사이에 있는 수강신청이라는 DB에 축적이 되는 실시간 선점형 저장방식
그리고 저장된 데이터를 내 수강신청란에 조회하여 출력하는 방식
출력된 내수강신청 과목에 대해 수강신청 취소가 가능함.
마지막에 수강완료 버튼을 누를시
최소 조건에 관련한 유효성체크를 한후에 완료할수 있는 방식
즉.사용자가 하나 신청할때마다 내 수강신청DB에 있는 데이터를 화면에 출력도 가능하게 해주는 식으로 설계함.
장점 : 각 과목당 인원제한이 있다는 전제조건에서먼저 신청한 사람에게 우선권을 부여하여 일찍 신청한 사람과 늦게 신청한 사람과의 형평성 제공
단점 : 중도 포기 할시 데이터의 누락이 있다. (신청 버튼을 눌렀지만 완료버튼을 누르지 않고 종료될 때. 최소 조건이 안맞는 경우.. 즉. 강제종료에 따른 최종 수강신청 유효성오류)
[비선점형]
기본쿼리큐럼에 등록되어있지 않은과목들을 출력되고 각각 하나하나에 수강신청 버튼이 있어서
그 버튼을 누를시 기본쿼리큐럼을 포함한 내 수강내역에서
최소과목조건과 최대과목조건의 유효성검사를 한후 내 수강신청란에 수강신청되고.
해당 과목들을 화면에 출력함(아직까진 내 수강신청DB에 포함되지 않는 상태)
해당 과목들을 내 수강신청란에서 지우면 해당과목들을 과목들 출력 table에 반환하는 방식
완료버튼 누를시 DB에 저장하는 비선점형, 일괄처리 방식의 저장방식
즉. 사용자가 모든 과목을 신청한 이후 완료버튼을 누를시 내 수강신청DB에 저장하고, 그 전까지는 내수강신청 화면에 출력만 해주는 식으로 설계함
장점: 인원이 꽉찾 곳의 과목은 출력하지 않는다. 라는 전제조건에서 사용자는 여유가 있는 강의를 선택하여 신청할 수 있는 검색의 편의성을 제공
단점: 완료버튼을 누르기 전까지 개인이 선택한 과목의 유효성의 모호함이 있다. (수강하겠다고 선택했지만 완료버튼이 늦어져서 인원수가 꽉차는 경우)
이정도로 갈렸습니다.
고수님들 부탁드립니다.... 어떤 방식이 수강신청에 알맞는 방식인지...
비교부탁드립니다.
-
화가마
선점형에서 View페이지에서 수강신청을하면은 일정시간 내에 키보드나 마우스 입력이 없으면 자동으로 취소되게 하면 될 것 같은데요
-
횃눈썹
일단 회의는 계속 하고 있는데. 선점형의 문제점으로 교착상태가 일어난다고 하는데. 그렇게 따지면. 선점형의 1:1 교착상태보다 m:n교착상태가 발생할수 있는 비선점형 방식에도 문제가 있다고 제기하고 있는 상태입니다.... 확실히 선점형의 등록방식은 최종신청에 대한 유효성 문제가 대두되고 있는 상태입니다... 느끼셨다 시피 제가 선점형을 주장하고 있고, 수다님이 비선점형을 주장하고 계십니다.
-
세찬
선점형으로 만드는게좋을거같은데 매일 취소된데이터 확인해서 정리해주는 작업을 수행햐야지않나요?
님말씀대로 이벤트 발생시키지 않고 웹종료시켜버리면 ㄷㄷ