2012-06-13 6 views
1

학생이 찍은 모든 과목을 나열하는 tbl_Subjects_Taken이라는 테이블이 있습니다. 이 열은 Stud_IDSubj_ID의 두 열로 구성됩니다.데이터베이스 - 편집 과정

프런트 엔드로 나가서, 나는 사용자가 학생 자신과 그 학생이 찍은 과목에 관한 정보를 편집 할 수있는 양식을 가지고있다. tbl_Students (학생의 정보)을 업데이트하는 것은 하나의 UPDATE 문이 작업을 수행 할 수 있으므로 문제가되지 않습니다. 하지만 다른 테이블은 어떨까요? 사용자 일단

양식을 편집하고 저장 버튼을 누르면, 여기에 내가 무엇을 :

  1. tbl_Subjects_Taken에 그 학생이 촬영 한 모든 과목을 삭제합니다.
  2. 내 프로그램의 양식에있는 모든 주제를 추가하십시오.

"다방면"의 테이블을 업데이트하는 올바른 방법입니까?

나는 SQL 서버을 사용합니다.

답변

1

삭제 및 다시 추가하는 방법 중 하나입니다.

하지만 서버에서 모든 작업을 수행하려고합니다 (예 : 저장 프로 시저 사용). 나는 주체 아이디 목록을 SP에 전달할 것이다. 은 SP 내부, 나는 다음을 수행하게

  1. 내가 tbl_Subjects_Taken 테이블에없는 어떤 과목을 추가
  2. 에 전달 된 목록에을 되지 않은 해당 사용자에 대해 tbl_Subjects_Taken에서 모든 과목을 삭제 것을 내가 전달 된 목록입니다.

당신은 당신의 DB를 언급하지 않았다에을했지만, 이것은 당신이 사용하고있는 DB에 따라 대략가는 다른 방법이 있습니다. 예를 들어, Oracle 및 ODP.Net에서 PL/SQL Associative array을 사용하여 ID를 PL/SQL 함수/SP에 전달할 수 있습니다.

그러나 이상적으로는 서버 한 대를 왕복으로 만들고 가능한 한 삭제하고 삽입하는 것이 가장 이상적입니다. 이 두 단계를 통해 효율성이 높아집니다.

+0

좋은 접근 방식이지만, 내가 알 수 있다면 내 것이 상당히 수용 가능하다고 생각합니까? – Arman

+0

@Arman - 여러 요소에 따라 다릅니다. 몇 가지 주제 만 다루는 경우 어쩌면 접근 방법이 괜찮을 수도 있습니다. 당신 만이 그 해답을 알고 있습니다. 그러나 DB 응용 프로그램을 사용하면 항상 서버 왕복을 최소화하고자합니다. 그것들은 당신의 연기를 죽이는 경향이 있습니다. 내가 할 수 있으면 항상 한 번의 SP 호출로 모든 것을하려고 노력합니다. 이 방법의 장점 (예 : 대량 작업에 SP 사용)은 SP를 통해 주요 비즈니스 로직을 DB에 넣고 다른 비즈니스 응용 프로그램에서 비즈니스 로직을 재사용 할 수 있다는 것입니다. – dcp

+0

고마워,하지만 잠시 동안은 과목이 거의 없기 때문에 나는 내 것을 사용할 것이다. 그러나 나중에 말한 것을 시도 할 것이다. – Arman