응용 프로그램의 데이터베이스를 디자인 할 때 일반적인 모범 사례를 알고 있지만 다시 디자인하는 것은 어떻습니까?
내부 비즈니스 응용 프로그램을 다시 디자인하는 팀을 맡고 있지만 "내부"라고 말하더라도 불행히도 많은 계층의 사람들이 시스템의 실제 사용자와 연락을하지 않습니다.
현재 프로그램은 Oracle Forms에 있으며 정규화되지 않은 여러 테이블에 흩어져 있으며 때로는 서로의 데이터에 약간의 변형이있는 여러 개의 중복 테이블이 있습니다. 제약 조건은 종종 강제 적용 저장 프로 시저 형식으로되어 있습니다. 유형조차 제대로 저장되지 않은 것 같습니다. 오라클이 무시하는 것처럼 보이지만 SQL Server의 가져 오기 / 내보내기 마법사에 적합한 모든 종류의 나쁜 데이터가 발생했습니다. (예를 들어, 두 자리 정수는 완전한 날짜 시간을 구성하지 않습니다!)
원래 프로그램은 아마도 20 년 전으로 거슬러 올라갈 수 있으며, 모든 원래 개발자는 오래 전에 은퇴했으며 여기에있는 노인조차도 자신이 누구인지 전혀 몰랐습니다. 결과적으로 실제 요구 사항도 충족되지 않습니다. 기존 응용 프로그램의 기능을 복제하고 기존 데이터를 유지해야합니다.
다시 쓰기의 최종 결과는 백엔드 용 MS SQL Server와 함께 ASP.NET에서 실행되는 웹 기반 버전이 될 것입니다.
저의 다른 두 개발자 팀원은 비즈니스 / MIS 배경을 가진 반면, CS는 나보다 훨씬 나이가 많습니다. 선임 멤버의 경험은 거의 독점적으로 Oracle 형식이며 다른 멤버는 대부분 Visual Basic에서 비즈니스 응용 프로그램 작업을 수행했습니다. 내 데이터베이스 배경은 MySQL 또는 SQLite의 프로젝트를위한 새 데이터베이스 디자인으로 제한되었지만 주로 저학년 수업을 위해 실제로 데이터베이스를 설계 한 경험이있는 유일한 사람 인 것 같습니다.
이미 모든 기존 데이터를 중립 형식으로 읽어서 다시 캐스팅하여 새 데이터베이스에 넣을 수있는 작은 프로그램을 C #으로 작성했습니다. 대상 데이터베이스를 디자인 한 후로드 코드를 작성하여 새로운 정규화 된 테이블간에 데이터를 올바르게 분할하고 올바른 제약 조건을 따르는 올바른 순서로 추가 할 수 있습니다. 같은 프로그램을 나중에 다시 실행할 수 있습니다. 실제 새로 배포 된 재 설계에 생산 데이터를 복사합니다. 이를 통해 데이터베이스의 실제 재 설계가 가장 중요하게 생각됩니다.
내 질문의 핵심 : 기존 응용 프로그램의 데이터베이스 수준에서 재 설계를 수행하는 모범 사례는 무엇입니까?