안녕하세요.
완전 초보 개발자입니다.
작은 회사 전산실같은데서 사내 필요한 프로그램을 개발하고 있습니다.
이번에 프로그램을 개발해야 되는데 제가 해보지 않은 부분이 있어서 조언을 구하고자 합니다.
환경은 ms-sql 2008을(호스팅을 사용중) 이용하고 있습니다.
아래와 같은 필드가 있습니다.
NO 이름 전화번호 점수1 점수2 점수3 점수4 ............ 점수 20
1 홍길동 223243 90 86 76 89 67
2 김영희 112233 78 45 35 56 45
.
위에서 보면 홍길동이라는 사람의 약 20개의 점수를 매겨야 됩니다.
근데 이 점수를 매기는 사람은 20명입니다.
먼저 기본 정보(이름과 전화번호 등...)는 먼저 저정되고 점수는 입력되지 않습니다.
그후 A라는 사람은 점수1을 입력하고 B는 점수2, C사람은 점수3을 입력...이렇게 각각 다른 사람이 입력합니다.
즉 20여명의 사람의 각각 다른 시간(전혀 다른 시간은 아니고 어느정도 정해진 범위 안의 시간)에
접속하여 각각 자기가 맡은 점수를 입력합니다.
이렇게 되면 동시에 20명의 사람이 홍길동의 행을 열어서 update할수도 있는데...
이 처리를 어떻게 해야 되는건가요?
기초가 부족하니 단계단계 나가기가....
삽질의 연속이지만 하다보면 잘 되 있으리라 생각합니다.
조언좀 부탁드립니다.
Comment 6
-
군고구마
2013.10.01 23:29
-
dolphine
2013.10.02 09:04
정성스런 답변 정말 감사드립니다.
조언 주신 내용이 일단 제가 이해하기에 조금 어렵지만 공부해서 적용시켜 봐야 겠습니다.
감사합니다!
-
향지
2013.10.02 10:36
방법이야 많으니 참고로만 봐주세요.
요구사항을 정확하게 알고 분석해봐야 좀 더 정확하겠지만요
저라면 점수 테이블을 만들어서
이름 항목 점수
홍길동 점수1 100
홍길동 점수2 90
홍길동 점수3 80
..........
이런식으로 점수를 넣으면 테이블에 입력되게....
그리고 저 같으면 누가 언제 점수를 입력했는지도 알고 싶은데.....
이름 항목 점수 등록자 등록일시
홍길동 점수1 100 홍판서 2013-01-01 12:00:00
이런식으로도 한번 고려해볼것 같습니다.
-
dolphine
2013.10.02 17:12
정규화가 문제였던거 같습니다.
조언 감사드립니다.
-
버뮤다삼각김밥
2013.10.02 16:45
원안은 테이블 비정규화이고요. 댓글에 보면 정규화가 있네요. 정규화 하시는게 좋을 것 같습니다.
댓글처럼 입력 시간까지 체크해야하는데... 비정규화로 쭉 밀고 가다보면 추가 요구사항 나오면 배보다 배꼽이 커지겠죠.
-
dolphine
2013.10.02 17:13
조언 감사합니다.
저도 초보지만 저의 생각으로는 2가지 방법이 생각이 납니다.
1. SP를 컬럼마다 하나씩 다르게 만든다.
2. 고유번호를 줘서 (관리자마다) 분기를 타게 만든다.
1. 방법은 예를 들어서 이런거죠.
SP_점수1
SP_점수2
이런식으로 만들어서 해당 SP를
update 점수테이블
set 점수1 = @점수
where 번호 = 1
이렇게 각각 하나씩 만들어서 다른 SP를 타게 만드는 겁니다.
2. 방법은 관리자 고유번호를 만드는 겁니다.
점수를 주는 사람마다 번호를 만들어서 IF로 분기를 타게 만드는 것입니다.
파라미터를 2개를 받아서요.
@감독관번호
@점수
if @감독관번호 = 1
update 점수테이블
set 점수1 = @점수
where 번호 = 1
if @감독관번호 = 2
update 점수테이블
set 점수2 = @점수
where 번호 = 1
이런식으로 하면 분기마다 태울수 있죠.
그렇다면 엉뚱한 사람이 다른 곳에 입력하는 것을 방지할수 있습니다.
그리고 헷갈리지도 않겠죠? SP를 따로 만드는 경우는 프로그래머와 상의해서 버튼을 20개를 만들고
따로 태우게 할수도 있습니다.
하지만 2번 방법이 더욱 작업하기는 수월하겠죠?
이상 허접한 답변이였습니다.