최근 저는 IT 분야에서 일하고 있습니다. 제 전문 분야는 응용 프로그램 디자인이지만, 현재 데이터베이스 구조와 응용 프로그램을 수정하고 개조해야합니다.여러 개의 데이터베이스, 적은 수의 테이블? 하나의 데이터베이스, 많은 테이블?
현재 데이터베이스에는 20 개의 상호 연결된 데이터베이스가 있으며 수 백 개의 서로 다른 뷰에 수 백 (저장 프로 시저 없음)이 있습니다. 모든 것이 일련의 액세스 프론트 엔드에 묶여 있습니다.
이제 서버 아키텍처가 매우 이상합니다. 동일하거나 거의 동일한 데이터를 포함하는 여러 데이터베이스에 중복 테이블이 있으므로 분명히 많은 부분을 병합 할 수 있습니다. 그러나 이전 개발자가 응용 프로그램을 배치 한 방식은 테이블간에 전달해야하는 정보 중 SOME이 포함 된 "Shared_Tables"라는 다른 데이터베이스와 함께 모든 단일 응용 프로그램에 대해 별도의 데이터베이스를 갖는 것이 었습니다.
이제 기본적으로 회사의 새로운 시스템 구조를 만드는 것이 처음부터 시작되었으므로 분리 된 데이터베이스를 사용하는 것이 실제적인 이점이 있습니까, 아니면 모든 것을 1 개의 데이터베이스로 병합하는 것이 효율적인지 그들은 모두 동일한 인스턴스에서 실행되고 있다고 가정합니다.
또한 주목할 가치가없는 데이터베이스는 기본 키, 고유 키, 외래 키 등이 없습니다. 그리고 여러 필드의 데이터 유형은 동일해야 할 때 서로 다릅니다.
** 처음 ** 아무 기본 키, 외래 키 * 문제도 수정하지 말고 일단 작동하면 * 다른 생각을 생각하십시오 .... 누구든지 "설계된"그러한 데이터베이스는 금지되어야합니다. 키보드를 다시 만진 적이 있습니다 .... –
데이터베이스 내에 5 년 분량의 데이터가 포함되어 있습니다. 어떤 경우에는 기본 키와 외래 키를 삐걱 거리며 시작하려고했지만 일부 다른 문제가 생길 수 있습니다. 이 데이터베이스가 악몽이라고 말하는데, 그것은 엄청난 양의 과소 평가입니다. 그리고 많은 PK/FK가 여러 데이터베이스에 걸쳐 있기 때문에 PK/FK 문제를 수정하는 것이 또 다른 주요한 문제입니다 ... –
일단 시스템이 다소 안정적이고 적절한 PK + FK를 갖게되면 얼마나 많은 테이블 이러한 데이터베이스를 병합하면 제거 할 수 있습니다. 필자는 일반적으로 데이터베이스의 수가 적다는 점을 강조하는 경향이 있습니다. 테이블을 너무 많은 데이터베이스로 분리하지 마십시오. 예를 들어 데이터베이스 경계에서 선언적 참조 무결성을 수행 할 수 없습니다. 테이블이 너무 많으면 SQL Server의 ** 스키마 ** 기능을 사용해보십시오. 기능의 "영역"을 기반으로 사용 권한을 처리하는 데에도 좋습니다. –