2010-01-26 10 views
1

이 작업을 수행하는 가장 좋은 방법은 무엇입니까에 대한 질문이 있습니다 : 나는 데이터베이스에 4 개의 테이블이 있다고 가정합니다 (테이블 수가 훨씬 더 올라갈 수 있습니다). table1, table2 및 table3에 대한 CRUD (Insert, update, delete) 연산을 수행하고 싶습니다. table4와 동일한 연산을해야합니다. 이제는 모든 연산이 정확하고 빠르다는 것을 확인해야합니다.이 작업을 수행하는 가장 좋은 방법은 무엇입니까

이 - 첫번째 방법은 데이터베이스에서 발생

그래서 내가 저장 프로 시저를 만들거나 를 실행할 때 : 나는 다음과 같은 두 가지 방법 중 어느 것이 더 좋을 것 이제 빨리 할 필요하므로 표는 시스템 보고서를 가져 오는 데 사용됩니다 모든 작업은 테이블 1 (table1, table2, table3)에 대해 동일한 작업을 수행하는 트리거를 활성화합니다. 테이블 4에서

두 번째 방법은 프로그램 코드 (asp.net 및 C#)에서 발생합니다. , table2, table3)이 작업을 수행 할 클래스 또는 모든 코드를 사용하여 table4 동일한 작업을 수행합니다.

그리고 당신이 의미하는 경우 어떤 일이 그 표 4는 아니라

감사

답변

1

이 ... ... 우리는 우리가 보안, 데이터베이스의 크기, 응용 프로그램 아키텍처로 어느 쪽이든 선택할 때 명심해야 할 일을하고 있으며, 보고서 생성에 사용되는 읽기 전용의 경우 테이블이 아닌보기 여야합니다. 그러나 테이블이어야한다면 트리거를 사용하여 데이터베이스 레벨에서 수행하는 것이 좋습니다. 빠르고, 안전하고 미래에 다른 애플리케이션이 다른 테이블을 업데이트하면 데이터가 테이블 4에서 자동으로 업데이트되고 애플리케이션 로직을 다시 구현할 필요가 없습니다.

0

나는 그것이 작동하면 (즉, 테이블에 table1, table2 또는 table3에없는 데이터가 포함되어 있지 않은 경우) table4에 대한보기를 사용하는 Teja의 아이디어를 좋아합니다.

저장 프로 시저 사용을 고려할 때 테이블의 스키마에 대해 변경된 사항이있을 경우 어떻게 될지 생각하십시오. 모든 단일 저장 프로 시저를 다시 방문하여 변경해야한다면 어떻게 될까요? 많은 경우 많은 노력이 필요하며 버그를 만들 기회가 있습니다.

트리거는 저장 프로 시저보다 변경하기가 쉽습니다. 그러나 그들은 성능 비용을 부담합니다. 많은 테이블에 모든 쓰기 작업에 대한 트리거가있는 경우 응용 프로그램이 실제로 느려질 수 있습니다. tableC에서 (삽입/업데이트/삭제) 난에 함수를 creat에 모든 프롬프트 응답

+0

덕분에 ,,, 내가 트리거를 사용하여 어느 시점에 좋은 방법입니다하지만 난 어떤 경우에, 생각을 이해 이 함수는 tableA와 tableB (삽입/갱신/삭제)가 저장 프로 시저에서 호출 될 수 있습니다. 이렇게하면 모든 저장 프로 시저에서 코드를 수정하는 대신 변경이 필요한 경우 하나의 함수를 관리 할 수 ​​있습니다. 또한 모든 저장 프로 시저에서 트랜잭션을 사용하여 모든 테이블의 데이터를 일관되게 유지할 수 있습니다. – students

+0

나는 당신의 아이디어를 정말 좋아합니다. 트리거를 사용하는 오버 헤드를 피하고 (다른 저장 프로 시저에서 호출하는 함수 나 저장 프로 시저에서) 단일 코드를 유지하므로 유지 관리가 쉽습니다. 그리고 테스트해라. 또한 원하는 경우 트리거에서 사용할 수없는 데이터를 포함 할 수 있습니다. 잘 됐네요! – DOK

관련 문제