본문 바로가기
#IT 개발노트

데이터베이스 설계 방법

by 꾸미라기 2024. 1. 14.
반응형
SMALL

오늘의 포스팅은 데이터베이스 설계 순서, 논리적/물리적 설계, 정규화에 대해 설명하겠습니다.

 

1. 데이터베이스 설계 순서

 

(1) 요구사항 분석
프로젝트나 업무의 요구사항을 정확히 이해하는 것이 중요합니다. 사용자의 요구사항을 파악하고 분석한다.

(2) 논리적 설계와 물리적 설계
설계를 논리적과 물리적 두 가지 측면에서 다루어야 합니다. 논리적 설계는 엔터티, 관계, 속성 등을 정의하는 단계이며, 물리적 설계는 실제 데이터베이스 시스템에 맞게 테이블, 인덱스, 제약 조건 등을 구체화하는 단계입니다.

(3) 정규화
정규화를 통해 중복을 최소화하고 데이터의 일관성을 유지할 수 있습니다. 

(4) 인덱스 및 성능 최적화
데이터베이스 성능을 향상시키기 위해 인덱스 설정과 쿼리 최적화를 위한 방안을 고려한다.

(5) 보안 및 권한 관리
데이터베이스 접근 권한 및 보안에 대해 고려한다.

(6) 확장성 고려
향후 데이터의 양이 증가하거나 새로운 기능이 추가될 때 시스템이 유연하게 대응할 수 있도록 설계한다.

 

2. 논리적 설계와 물리적 설계

 

(1) 논리적 설계 (Logical Design)

- 엔터티-관계 다이어그램 (ERD)
사용자의 비즈니스 요구사항을 기반으로 데이터 모델을 만들어 내는 단계입니다.
주요 개체(엔터티)와 그들 간의 관계를 정의합니다.
각 엔터티의 속성을 식별하고 정의합니다.
관계의 유형을 설정하고 카디널리티(1:1, 1:N, N:M 등)를 명시합니다.

- 정규화
데이터 중복을 최소화하고 데이터 일관성을 유지하기 위해 테이블을 정규화합니다.
제 1 정규형(1NF), 제 2 정규형(2NF), 제 3 정규형(3NF) 등을 적용하여 테이블을 세분화합니다.
중복 데이터를 최소화하고 의존성을 해결합니다.

- 데이터 모델링
논리적 설계를 시각화하여 데이터베이스 구조를 이해하기 쉽게 만듭니다.
ERD를 바탕으로 데이터베이스를 그래픽으로 표현합니다.
테이블 간의 관계와 속성을 시각화하여 전체적인 구조를 파악할 수 있게 합니다.

(2) 물리적 설계 (Physical Design)

- 테이블 설계
논리적 설계를 바탕으로 실제 데이터베이스에서 사용될 테이블을 정의합니다.
각 엔터티를 테이블로 매핑하고, 각 속성을 테이블의 열(Column)로 변환합니다.
데이터 타입, 제약 조건 (Primary Key, Foreign Key 등)을 정의합니다.

- 인덱스 및 성능 최적화
데이터베이스 쿼리의 성능을 향상시키기 위해 인덱스를 적절히 설정합니다.
검색이 자주 일어나는 열에 인덱스를 추가하여 검색 속도를 향상시킵니다.
쿼리 실행 계획을 분석하여 최적화할 부분을 식별하고 수정합니다.

- 보안 및 권한 관리
데이터베이스의 보안을 유지하고 불필요한 접근을 방지합니다.
사용자 및 그룹을 생성하고, 적절한 권한을 할당합니다.
민감한 정보에 대한 접근을 제한하고 데이터의 기밀성을 보장합니다.

- 저장 프로시저, 트리거 등의 객체 생성
데이터베이스 로직을 구현하고 관리하기 위해 저장 프로시저, 트리거 등을 생성합니다.
필요한 업무 로직을 저장 프로시저로 작성하여 데이터베이스 내에서 실행할 수 있도록 합니다.
특정 이벤트에 대응하여 자동으로 실행되는 트리거를 정의합니다.

논리적 설계는 데이터 모델을 생성하고 엔터티 간의 관계를 정의하며, 정규화를 통해 데이터 일관성을 유지합니다. 물리적 설계는 논리적 설계를 바탕으로 실제 데이터베이스에 적용되는 구조를 정의하고, 성능 최적화, 보안 및 권한 관리 등을 포함합니다. 이 두 단계는 데이터베이스를 효과적으로 구축하고 관리하기 위한 핵심 과정입니다.

 

3. 정규화 1차~3차


정규화는 데이터베이스 설계에서 중복을 최소화하고 데이터의 일관성을 유지하기 위한 과정입니다. 정규화에는 1차 정규화, 2차 정규화, 그리고 3차 정규화가 있습니다.

1차 정규화
각 행은 원자값(Atomic Value)을 갖도록 분해합니다.
중복을 최소화하고 각 열은 하나의 의미를 나타내도록 합니다.

2차 정규화 (복합키 기준 일부 키에만 종속된 경우 분리)
1차 정규화를 만족하면서 부분적 종속을 제거합니다.
기본 키가 아닌 모든 속성이 기본 키에 완전 함수적으로 종속되도록 합니다.
테이블을 두 개 이상의 테이블로 분리하여 관계를 정리합니다.

3차 정규화 (일반 속성에 종속되어 있을 경우 분리)
2차 정규화를 만족하면서 이행적 종속을 제거합니다.
테이블에서 이행적 종속 관계가 없도록 속성을 분리하여 테이블을 정규화합니다.
각 테이블은 한 가지 주제에 대해서만 다루도록 합니다.
정규화를 통해 데이터의 중복을 최소화하고 응집도를 높여 데이터베이스를 효율적으로 구성할 수 있습니다.




반응형