데이터베이스 계획 개발
데이터베이스를 만드는 첫 번째 단계는 데이터베이스를 구현할 때 지침으로 사용하고 데이터베이스가 구현된 후에는 기능 사양으로 사용할 수 있는 계획을 세우는 것입니다. 데이터베이스 디자인의 복잡성과 세부성은 사용자 집단과 데이터베이스 응용 프로그램의 복잡성과 크기에 의해 결정됩니다.
데이터베이스 응용 프로그램의 특성, 복잡성 및 계획 과정은 매우 다양합니다. 데이터베이스를 한 사람만 사용하는 용도로 비교적 단순하게 디자인할 수도 있고, 수천 명의 고객에 대한 모든 은행 업무를 처리하도록 크고 복잡하게 데이터베이스를 디자인할 수 있습니다. 전자의 경우 데이터베이스 디자인은 연습장에 몇 개의 메모를 하는 작업일 수 있습니다. 후자의 경우 데이터베이스 디자인은 데이터베이스에 대해 가능한 모든 정보가 들어 있는 수백 페이지의 정식 문서를 만드는 작업일 수 있습니다.
데이터베이스를 계획할 때는 크기와 복잡성에 관계없이 다음과 같은 기본 단계를 수행해야 합니다.
정보 수집
개체 확인
개체 모델링
각 개체의 정보 유형 확인
개체 간 관계 확인
정보 수집
데이터베이스를 만들기 전에 데이터베이스에서 수행할 작업을 잘 이해해야 합니다. 문서 기반의 정보 시스템이나 수동으로 운영되고 있는 정보 시스템을 데이터베이스로 대체하는 경우에는 기존 시스템에서 필요한 정보를 대부분 얻을 수 있습니다. 시스템에 관련된 모든 사용자를 인터뷰하여 각 사용자가 수행하는 작업과 데이터베이스에서 제공해야 하는 기능 및 정보를 파악해야 합니다. 또한 사용자가 새 시스템에서 원하는 사항을 확인하고 기존 시스템의 문제점, 제한 사항 및 장애를 파악해야 합니다. 데이터베이스와 인터페이스를 디자인하는 데 참고할 고객 의견, 재고 목록, 관리 보고서 및 기존 시스템에 있는 기타 문서도 수집해야 합니다.
개체 확인
정보를 수집할 때는 데이터베이스에서 관리할 주요 개체나 엔터티를 확인해야 합니다. 개체는 사람이나 제품과 같은 유형의 항목일 수도 있고 상거래, 회사 부서 또는 급여 지급 기간과 같은 무형의 항목일 수도 있습니다. 대개 몇 개의 주요 개체가 있고 이러한 개체를 확인한 후에 관련 항목을 파악할 수 있습니다. 데이터베이스의 항목마다 테이블이 있어야 합니다.
SQL Server에 포함된 AdventureWorks2008R2 예제 데이터베이스의 주요 개체는 bicycle입니다. 이 회사 비즈니스에서 bicycle과 관련된 개체에는 bicycle을 제작하는 직원, bicycle 제작에 사용되는 부품을 판매하는 공급업체, bicycle을 구매하는 고객 및 판매 거래가 있습니다. 이러한 각 개체가 데이터베이스의 테이블이 됩니다.
개체 모델링
시스템의 개체를 확인한 후에는 시스템을 시각적으로 표현하는 방식으로 개체를 기록해야 합니다. 데이터베이스를 구현할 때 데이터베이스 모델을 참조할 수 있습니다.
이를 위해 데이터베이스 개발자는 연필과 메모지, 워드 프로세싱 또는 스프레드시트 프로그램, 데이터베이스 디자인을 위한 데이터 모델링 전용 소프트웨어 프로그램 등 기술적으로 다양한 범위의 도구를 사용합니다. 어떤 도구를 사용하든 데이터베이스 모델을 최신 상태로 유지하는 것이 중요합니다.
각 개체의 정보 유형 확인
데이터베이스에서 테이블로 사용할 주요 개체를 확인한 후에는 각 개체에 저장할 정보 유형을 파악해야 합니다. 이러한 정보 유형이 개체 테이블의 열이 됩니다. 데이터베이스 테이블의 열에는 다음과 같은 몇 가지 공통된 정보 유형이 있습니다.
원시 데이터 열
이 열은 데이터베이스 외부 요인에 의해 결정되는 명확한 정보를 저장합니다. 예를 들면 이름이 있습니다.
범주 열
이 열은 데이터를 분류하거나 그룹화하고 선택 사항이 제한된 데이터를 저장합니다. 예를 들면 true/false, married/single 및 VP/Director/Group Manager가 있습니다.
식별자 열
이 열은 테이블에 저장된 각 항목을 식별하는 메커니즘을 제공합니다. 이 열의 이름에는 ID나 번호가 포함되는 경우가 많습니다. 예를 들면 employee_id, invoice_number 및 publisher_id가 있습니다. 식별자 열은 사용자 작업과 내부 데이터베이스 처리 과정에서 테이블의 데이터 행에 액세스하기 위해 사용하는 주요 구성 요소입니다. 테이블에 주민 등록 번호와 같은 개체의 실제 ID를 사용하는 경우도 있지만 대개 행에 대해 신뢰할 수 있는 인위적인 ID를 생성하도록 테이블을 정의할 수 있습니다.
관계 또는 참조 열
이 열은 한 테이블의 정보와 다른 테이블의 관련 정보를 연결합니다. 예를 들어 판매 거래를 추적하는 테이블은 대개 전체 고객 정보를 판매 거래와 연결할 수 있도록 customers 테이블에 연결됩니다.
개체 간 관계 확인
관계형 데이터베이스의 장점 중 하나는 데이터베이스에 있는 여러 항목에 대한 정보를 연결할 수 있다는 것입니다. 독립된 유형의 정보는 따로 저장될 수 있지만 데이터베이스 엔진이 필요에 따라 데이터를 결합할 수 있습니다. 디자인 과정에서 개체 간의 관계를 확인할 때는 테이블을 보고, 테이블이 서로 어떤 논리적 관계에 있는지 확인하고, 두 테이블 간 연결을 설정하는 관계 열을 추가해야 합니다.
예를 들어 AdventureWorks2008R2 데이터베이스의 디자이너가 데이터베이스에 제품과 제품 모델에 대한 테이블을 만들었다고 가정합니다. Production.Product 테이블에는 각 제품에 대한 정보가 들어 있으며 여기에는 ProductID라는 식별자 열과 제품 이름, 제품 가격, 제품 색상, 크기 및 중량에 대한 데이터 열이 포함됩니다. 테이블에는 Class나 Style 등의 범주 열이 있어 제품을 유형별로 그룹화할 수 있습니다. 또한 제품마다 제품 모델이 있지만 이 정보는 다른 테이블에 저장됩니다. 따라서 Production.Product 테이블에는 제품 모델의 ID만 저장하는 ProductModelID 열이 있습니다. 제품에 대해 데이터 행을 추가할 때 ProductModelID 값이 Production.ProductModel 테이블에 있어야 합니다.