3. 데이터베이스 구축 - 논리 데이터베이스 설계(데이터베이스 설계 ~ 관계형 데이터 모델)
1. 데이터베이스 설계
: 사용자의 요구를 분석하여 이를 데이터베이스의 구조에 맞게 변형한 후 특정 DBMS로 데이터베이스를 구현하는 것
1) 데이터베이스 설계 시 고려사항
- 무결성 : 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스 내 데이터들은 정해진 제약조건을 항상 만족해야 한다.
- 일관성 : 데이터베이스 내 데이터들 사이나, 질의에 대한 응답은 항상 일정해야 한다.
- 회복 : 시스템 장애 발생 시 발생 직전의 상태로 복구할 수 있어야 한다.
- 보안 : 불법적인 데이터의 노출이나 변경, 손실로부터 보호할 수 있어야 한다.
- 효율성 : 응답 시간 단축, 생산성 향상, 저장 공간 최적화 등이 가능해야 한다.
- 데이터베이스 확장 : 운영에 영향을 주지 않으면서 지속적인 데이터 추가가 가능해야 한다.
2) 데이터베이스 설계 순서
요구 조건 분석 | ▶ | 개념적 설계 | ▶ | 논리적 설계 | ▶ | 물리적 설계 | ▶ | 구현 |
1. 요구 조건 분석
: 데이터베이스를 사용할 사람들로부터 필요한 용도를 파악하는 것
- 데이터베이스 사용자에 따른 수행 업무, 필요 데이터의 종류와 용도, 처리 형태, 흐름, 제약 조건 등을 수집
- 수집한 정보를 바탕으로 요구 조건 명세 작성
2. 개념적 설계 (정보 모델링, 개념화)
: 정보의 구조를 얻기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행
- 요구 조건 명세를 바탕으로 DBMS에 독립적인 E-R 다이어그램 작성
- DBMS에 독립적인 개념 스키마 설계
3. 논리적 설계 (데이터 모델링)
: 현실 세계에서 발생하는 자료를 특정 DBMS가 지원하는 논리적 자료 구조로 변환하는 과정
- 속성으로 이루어진 개체와, 개체들 간 관계로 나타나는 현실 세계의 데이터를 필드로 기술된 데이터 타입과, 데이터 타입들 간 관계로 표현되는 논리적 구조의 데이터로 모델화
- 개념 스키마를 평가 및 정제하고 DBMS에 종속적인 논리적 스키마를 설계하는 단계
- 트랜잭션의 인터페이스 설계
- 관계형 데이터베이스를 구축한다면 테이블을 설계하는 단계
4. 물리적 설계 (데이터 구조화)
: 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조를 가진 데이터로 변환하는 과정
- 데이터베이스 파일의 저장 구조와 액세스 경로를 결정
- 저장 레코드에 대한 정보를 이용해 데이터가 컴퓨터에 저장되는 방식을 묘사
- 트랜잭션 처리량, 응답 시간, 디스크 용량 등을 고려
5. 데이터베이스 구현
: 논리적, 물리적 설계 단계로 도출된 데이터베이스 스키마를 파일로 생성하는 과정
- 선택한 DBMS의 데이터 정의어(DDL)을 이용하여 스키마를 기술하고 컴파일하여 데이터베이스 파일 생성
- 생성된 빈 데이터베이스 파일에 데이터 입력
- 응용 프로그램을 위한 트랜잭션 작성
- 데이터베이스 접근을 위한 응용 프로그램 작성
76. 데이터 모델
: 현실 세계의 정보들을 컴퓨터에 표현하기 위해 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터 간 관계, 일관성, 제약 조건 등을 기술하기 위한 개념적 도구의 집합
- 데이터베이스 설계 시 데이터 스키마를 논리적으로 표현하기 위해 사용되는 도구
- 데이터 모델 구성 요소
- 개체 (Entity) : 데이터베이스에 표현하려는 개념이나 정보 단위 등의 현실 세계의 대상체
- 속성 (Attribute) : 개체의 특성을 기술하는 데이터의 가장 작은 논리적 단위.
- 관계 (Relationship) : 개체 간의 관계나 속성 간의 논리적인 연결
- 데이터 모델에 표시할 요소
- 구조 (Structure) : 개체 타입들 간의 관계, 데이터 구조 및 정적 성질을 표현
- 연산 (Operation) : 데이터베이스의 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구
- 제약 조건 (Constraint) : 데이터베이스의 실제 데이터에 대한 논리적 제약 조건
1) 데이터 모델의 종류
1. 개념적 데이터 모델
: 현실 세계에 대한 인식을 추상적인 개념으로 표현하는 모델 (정보 모델)
- 여러 속성으로 기술된 개체 타입과 개체 타입들 간 관계를 이용해 현실을 표현
- ex) E-R Model
2. 논리적 데이터 모델
: 현실 세계에 대한 개념적 모델을 컴퓨터가 이해하고 처리할 수 있는 환경에 맞도록 변환한 모델
- 여러 필드로 구성된 데이터 타입과 데이터 타입들 간 관계를 이용해 현실을 표현
- 특정 DBMS는 특정 논리적 모델 하나만 선정하여 사용함
- ex) 관계 모델, 계층 모델, 네트워크 모델
※ 논리적 데이터 모델의 품질 검증
: 만들어진 논리적 데이터 모델이 기업에 적합한지 검증하는 것.
- 품질 기준에 따라 개체, 속성, 관계, 식별자, 모델 전반 등에 대해 검토 체크리스트를 작성하여 검증함
77-79. 데이터 모델의 구성 요소
1) 개체 (Entity)
: 개념, 정보 등의 현실 세계의 대상체로 데이터베이스에 표현하려는 것
1. 개체의 특징
- 실세계에 독립적으로 존재하는 유형, 무형의 정보
- 서로 연관된 몇 가지의 속성(attribute)로 구성됨
- 파일 시스템에서의 레코드(record)에 대응
- 영속적으로 존재하는 개체의 집합
- 독립적으로 존재하거나 그 자체로서 구별이 가능함
- 유일한 식별자(identifier)로 식별 가능
- 개체는 다른 대체와 한 가지 이상의 관계(relationship)을 가진다
2. 개체의 구성 요소
- 속성 : 개체가 가지는 특성 (ex. 학번, 이름, 전공, 단과대)
- 개체 타입 : 속성으로만 기술된 개체의 정의
- 가체 인스턴스 (Instance) : 개체를 구성하는 각 속성들이 값을 가져 하나의 개체를 나타내는 것 (Occurrence)
- 개체 세트 : 개체 인스턴스의 집합
3. 개체 선정 방법
- 업무 기술서
- 담당자와의 인터뷰
- 업무 현장 견학
- 업무에 쓰이는 장부와 전표 분석
- 시스템 산출물 검토
- 자료 흐름도에 나타난 자료 저장소 분석
- 업무 프로세스 재설계(BPR)로 업무가 재정의된 경우 관련 개체 분석
※ 업무 프로세스 재설계(BPR; Business Process Reengineering)
: 경쟁 우위 확보를 위해 기업이 프로세스를 기반으로 비즈니스 시스템을 근본적으로 재설계하는 것
4. 개체명 지정 방법
- 업무에서 실제로 쓰이는 용어로 지정
- 약어 사용 최소화
- 가능하면 단수 명사 사용
- 모든 개체명은 유일해야 함
- 개체의 의미에 따라 부여
2) 속성 (Attribute)
: 개체를 구성하는 항목이자 개체의 특성으로 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상으이 데이터 항목 또는 데이터 필드에 대응
- 차수 (Degree) : 개체가 가진 속성의 개수
1. 속성의 종류
- 속성의 특성에 따라
- 개체 구성 방식에 따라
3. 속성 후보 선정 원칙
: 속성으로 지정할 후보는 최대한 많이 선택하여 다음의 원칙으로 선정한다.
- 다른 속성으로 재현할 수 없는 속성(원시 속성)은 반드시 포함한다.
- 소그룹별로 속성 후보군을 만들고 가장 근접한 개체에 할당한다.
4. 속성명 지정 방법
- 업무에서 실제로 쓰이는 용어로 지정
- 약어 사용 최소화
- 서술형으로는 지정하지 않음
- 개체명은 속성의 이름이 될 수 없음
- 개체 내에서 중복되지 않도록 지정
3) 관계 (Relationship)
: 개체와 개체, 속성과 속성 사이의 논리적인 연결
1. 관계의 형태와 그 표현
: 두 개체가 갖는 관계는 '일 대 일','일 대 다','다 대 다' 의 형태 중 하나를 가진다.
- 관계의 표현
: | (필수 기호), O (선택 기호), <(다중 기호)를 이용하여 관계의 형태를 표시
2. 관계의 종류
80. 식별자 (Identifier)
: 하나의 개체 내의 모든 인스턴스들을 유일하게 구분할 수 있는 속성, 또는 속성의 집합. 모든 개체는 반드시 하나 이상의 식별자를 가진다.
- 식별자의 분류
- 대표성 여부에 따라 : 주 식별자 / 보조 식별자
- 스스로 생성 여부에 따라 : 내부 식별자 / 외부 식별자
- 단일 속성 여부에 따라 : 단일 식별자 / 복합 식별자
- 대체 여부에 따라 : 원조 식별자 / 대리 식별자
1) 주 식별자 / 보조 식별자
- 주 식별자 (Primary Identifier) : 개체를 대표하는 유일한 식별자
- 보조 식별자 (Alternate Identifier) : 주 식별자를 대신해 개체 식별에 사용할 수 있는 속성
- 주 식별자와 보조 식별자 모두 개체 내 인스턴스들을 유일하게 식별할 수 있다.
- 하나의 개체 내에 주 식별자는 하나만 존재할 수 있으나, 보조 식별자는 하나 이상 존재할 수 있다.
- 테이블에서 주 식별자는 기본키가 되며 보조 식별자는 유니크 인덱스로 지정해 사용한다.
- 주 식별자의 특징
- 유일성 : 개체 내의 모든 인스턴스들이 주 식별자로 유일하게 구분될 수 있어야 한다.
- 최소성 : 주 식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
- 불변성 : 개체에서 지정된 식별자는 변하지 않아야 한다.
- 존재성 : 주 식별자가 된 속성에는 반드시 속성 값이 존재해야 한다.
※ 유니크 인덱스
: 속성값에서 중복되는 값이 없도록하는 인덱스
- 후보 식별자 : 개체에서 각 인스턴스를 유일하게 식별하는 식별자 중에서 주 식별자가 될 수 있는 후보군
- 개체 내 여러 후보 식별자 중에서 하나를 주 식별자로, 나머지를 보조 식별자로 지정한다.
- 후보 식별자의 조건
- 유일성을 가져야 한다.
- 속성들을 직접 식별할 수 있어야 한다.
- 속성 값이 Null value가 될 수 없다.
- 속성의 집합일 경우 개념적으로 유일해야 한다.
- 내부 데이터 값이 자주 변경되지 않는 것이 좋다.
2) 내부 식별자 / 외부 식별자
- 내부 식별자 (Internal Identifier) : 개체 내에서 스스로 만들어지는 식별자
- 외부 식별자 (Foreign Identifier) : 관계를 가지고 있는 다른 개체의 식별자를 가져와서 사용하는 식별자
- 외부 식별자는 자신 개체에서 관계가 있는 다른 개체로 찾아가는 연결자 역할을 한다
3) 단일 식별자 / 복합 식별자
- 단일 식벌자 (Single Identifier) : 한 가지 속성으로만 구성된 식별자
- 복합 식별자 (Composite Identifier) : 두개 이상의 속성으로 구성된 식별자
4) 원조 식별자 / 대리 식별자
- 원조 식별자 (Original Identifier) : 업무에 의해 만들어지는 가공되지 않은 식별자 (본질 식별자)
- 대리 식별자 (Surrogate Identifier) : 주 식별자가 복합 식별자인 경우 구성하는 속성들을 합쳐 하나로 만든 식별자 (인조 식별자)
- 대리 식별자의 조건
- 최대한 범용적인 값을 사용한다.
- 유일한 값을 만들기 위해 대리 식별자를 사용한다.
- 하나의 대리 식별자 속성으로 대체할 수 없는 경우를 주의한다.
- 편의성, 단순성, 의미의 체계화를 위해 대리 식별자를 사용한다.
- 시스템 필요성에 의해 내부적으로만 대리 식별자를 사용할 수 있다.
81. E-R 모델 (개체-관계 모델)
: 1976년 피터 첸(Peter Chen)이 제안한, 가장 대표적인 개념적 데이터 모델
- 개체와 개체 간 관계를 기본 요소로 이용하여 현실 세계의 데이터를 개념적인 논리 데이터로 표현한다.
- 개체 타입(Entity Type)과 관계 타입(Relationship Type) 으로 구성된다.
- 특정 DBMS를 고려한 모델은 아니다.
- E-R 다이어그램으로 개체, 속성, 관계를 표현한다.
1) E-R 다이어그램
: E-R 모델의 기본 아이디어를 시각적으로 표현한 다이어그램
- 구성 기호
82. 관계형 데이터 모델
: 2차원의 표(Table)을 이용해 데이터 상호관계를 정의하는 데이터베이스 구조
- 가장 널리 사용되는 데이터 모델
- 테이블들을 파일 구조 처럼 하나의 DB로 묶어서 관계를 설정하거나, 테이블 간 관계를 설정하여 사용한다.
- 테이블 내의 각 레코드들을 유일하게 식별하는 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현한다.
- SQL : 관계형 데이터 모델의 대표적인 언어
- 1:1, 1:N, M:N의 다양한 형태의 관계를 자유롭게 표현할 수 있다.