4-1. 구현된 시스템에 대한 자체 평가 내용 정리

시스템에서 필요한 용도 별로 다양한 DML을 작성해 볼 수 있었다. 특히 정보를 조회할 때, 여러 개의 테이블을 묶어서 사용자에게 보여주어야 했다. 이 때 조인 연산을 사용하여 뷰를 만들었더니 사용이 좀 더 간편했고, 데이터의 무결성을 지킬 수 있었다. 다만, SQL에 더하여 .NET까지 새로운 것들을 도전하다 보니, 각 Form 간 연결이 불완전 하다는 문제가 있다.

4-2. 기능 보완이 필요한 부분 정리 및 개선 방안 제시

해당 프로그램은 관리자와 학생 양측에게 제공되는 기능으로, 사용자의 편의성을 위해 원래 웹으로 제작하려 했다. 그러나, 경험의 부족으로 이번 프로젝트는 간단하게 .NET의 form을 이용하여 구현을 해보았다. 만약 이를 보완할 기회가 있다면 가장 먼저 node.js를 활용하여 프로그램을 웹으로 옮겨야 할 것이다. 만약 .NET을 이어서 사용한다고 하면, .NET에 좀 더 친화적인 DBMS를 사용해 보고자 한다.

4-3. 설계 과정에서 얻은 교훈

정규화와 반정규화 과정은 필수적이다. 맨 처음, 이를 고려하지 않고 DB를 설계했을 때, 테이블 간 관계가 명확하지 않거나 한 테이블에 너무 많은 속성이 몰려있는 문제가 있었다. 정규화를 적용하자, 이와 관련된 문제들은 모두 해결되었다. 다만, 반대로 고려해야 하는 테이블 개수가 많이 늘어났는데 반정규화 과정을 통해 최종적으로 간결한 설계구조를 얻을 수 있었다. 수업에서 정규화를 들었을 때에는, 꼭 필요한 작업인가 하는 의문점이 있었는 데 직접 경험해보니 필수적인 과정임을 깨달았다.

4-4. 다음 설계 과정에서 고려할 새로운 목표들

이번 프로젝트는 크게 보면 관리자-학생-과목 3개의 관계를 고려하는 작업이었다. 그러나, 다음 프로젝트에서는 더 다양한 테이블과 관계를 다루는 경험을 하고 싶다. 관계가 늘어날수록, 각 테이블에 필요한 속성을 명확히 구분하는 것이 어려운데 이번에 배운 정규화-반정규화를 큰 프로젝트에서도 적용하여, 가장 사용하기 편리한 구조를 만들고 싶다.

4-5. 설계 프로젝트를 위하여 소요된 시간 비용 분석 및 평가

수업에서는 Oracle만 사용해 보았으나, MySQL에서도 쉽게 적응하고 사용할 수 있었다. 덕분에, 테이블 생성은 예상 시간 내에 끝낼 수 있었다. 그러나, node.js를 사용한 경험이 없어, 여러 시행착오를 거치고 결국 .NET을 사용하기까지 예상보다 많은 시간이 소요되었다. 때문에 다음 DB 프로젝트에서는 적응에 소요되는 시간이 줄어, 보다 빠르게 프로젝트를 진행할 수 있을 것으로 예상한다.