2022. 11. 27. 15:25ㆍ수업/데이터베이스
데이터베이스 설계
데이터베이스 개발 생명 주기(Life Cycle)

요구사항 분석을 기초로 데이터베이스 구조를 작성하는 과정
--> 문제가 발생되면 피드백을 받아 적절한 단계로 되돌아가 다시 시작

데이터베이스 설계 시 고려사항
- 무결성(integrity)
: 변경 연산 후에도 제약조건 만족
- 일관성(consistency)
: 데이터 간, 응답간의 일치
- 회복(recovery)
: 장애 발생 시 일관된 상태로 복구
- 보안(security)
: 불법 접근의 방지
- 효율성(efficiency)
: 응답시간 / 저장공간 최소화, 생산성 향상
- 확장성(extensibility)
: 운영에 지장없이 새로운 데이터의 계속적 추가
요구사항 분석
--> 사용자의 요구사항을 수집하고 분석하여 공식적인 요구사항 명세서(specification)를 생성하는 것
1. 개체, 애트리뷰트, 관계성, 제약조건 등과 같은 정적 정보 구조에 대한 요구사항
2. 트랜잭션 유형, 트랜잭션 실행 빈도와 같은 동적DB처리 요구사항
3. 회사의 경영 목표 및 정책 그리고 규정과 같은 범기관적 제약조건 등이 산출되어야 한다
분석 과정
일반사항 분석 - 업무와 관련된 문서들을 수집 - 회사의 경영 목표 및 제약조건 파악 - 모아진 문서와 자료등을 분류하고 정리 - 공식적인 요구사항 명세서를 작성 - 요구사항 명세서 담당자들과 확인 회의
문서들을 체계적으로 정리
--> 많은 분량의 문서들을 정리해 DB 설계 준비
--> 소프트웨어 공학 기법들이 사용될 수 있음 - HIPO, SADT, DFD, Orr-Warnier 다이어그램, Nassi-Schneiderman 다이어그램 등을 ㅣㅇ용
DFD
--> DFD는 약속된 표기법에 따라 작성됨


개념적 설계(Conceptual Design)
--> 개념적 스키마 모델링과 트랜잭션 모델링을 병행적으로 수행
--> 개념적 스키마 모델링
--> E-R 다이어그램 사용
--> 요구사항 분석 결과로 나온 명세서를 E-R다이어그램과 같은 개념적 데이터 모델로 기술한다
--> 이러한 과정을 개념적 데이터 모델링이라 하고, 표현된 결과를 개념적 데이터 구조 또는 개념적 데이터 스키마라 한다
--> 스키마 구성 요소 : 개체(entity), 속성(attribute), 관계(relationship)를 식별해서 결정
개념적 스키마를 유도하는 기본 원리
--> 추상화 : 현실세계를 단순화, 개념화시켜 표현한 것
--> 집단화 : 하위 클래스 몇 개의 속성을 묶어서 하나의 새로운 개체를 생성 ex) 엔진, 기어, 바퀴 -> 자동차
--> 일반화 : 하위 레벨의 공통적인 특성을 파악하여 상위 레벨의 개체를 생성 ex) 승용차, 트럭, 버스 -> 자동차
집단화와 일반화

트랜잭션 모델링
--> 처리 중심 설계 : 응용을 위한 데이터 처리에 중점을
--> 주요 트랜잭션들을 식별하고 이들에 대한 기능적 특성을 DB 설계 단계 초기에 명세해놓은 것
--> 트랜잭션 사이의 상대적 중요성과 예상 실행 빈도수를 파악해서 물리적 DB를 설계할 때 중요 정보로 사용됨
I/O와 기능적 행태만 주로 정의
--> 즉, 입력 데이터, 출력 데이터, 내부적인 제어 흐름을 기술함
--> 트랜잭션 유형으로는 검색(retrieval), 갱신(update), 혼합(검색&갱신) 형태가 존재할 수 있음

논리적 설계
--> 개념적 설계에서 생성된 개념적 데이터 스키마로부터 목표 DBMS가 처리할 수 있는 스키마를 생성하는 것
--> 이 스키마는 요구사항 명세서를 만족
--> 무결성, 일관성, 제약조건도 만족
논리적 설계는 다음 3 단계를 거쳐 수행
1. 논리적 데이터 모델로 변환
2. 트랜잭션 인터페이스 설계
3. 스키마의 평가 및 정제
논리적 데이터 모델로 변환
--> 개념적 데이터 스키마를 목표 DBMS에 맞는 스키마, 즉 논리적 데이터 모델로 변환 --> 이 변환 과정이 논리적 데이터 모델링
--> 데이터 모델에는 관계형, 계층, 네트워크, 객체지향, 객체-관계형 모델들을 모두 포함
--> 이 단계의 결과? 목표 DBMS의 DDL로 기술된 스키마
--> 이 DDL에는 물리적 설계단계에서 결정해야 될 매개변수들이 포함될 수 있으므로 완전한 스키마 정의는 물리적 설계 단계까지 보류
2단계와 3단계
트랜잭션 인터페이스 설계
--> 트랜잭션의 전체적 골격을 개발하고 인터페이스를 정의
--> 트랜잭션에 대한 데이터 접근 방법을 기술
스키마의 평가 및 정제
--> 성능 평가는 정량적 정보와 성능평가 기준에 따라 수행
- 정량적 정보 : 데이터의 크기, 처리 빈도 수, 처리 작업량 등
- 성능평가 기준 : 논리적 레코드의 접근, 데이터 전송량, DB의 크기 등
--> 필요한 경우 인덱스나 해싱 기법 등을 사용하여 성능개선
관계형 데이터 모델로의 설계 사례
- 학사 DB를 위한 E-R 다이어그램

관계 데이터 모델로의 변환 예
--> 사각형으로 표시된 개체 타입은 하나의 릴레이션 즉, 개체 릴레이션으로 만든다
--> 다이아몬드로 표시된 관계는 연관된 개체 타입의 키를 포함하는 관계 릴레이션으로 표현한다
--> 변환된 스키마는 3개의 개체 릴레이션과 3개의 관계 릴레이션으로 구성되어 있다
변환된 관계형 데이터 스키마
--> 독립된 릴레이션으로 관계를 표현

이 뿐만 아니라 공통 애트리뷰트로 관계를 표현할 수도 있다

독립된 릴레이션으로 관계를 표현하지 않고 두 릴레이션에 공통되는 애트리뷰트(키)를 공통으로 갖게 함으로써 묵시적으로 관계를 나타낼 수 있다
--> 학생 릴레이션에 "교수번호"를 첨가시키거나(a) 교수 릴레이션에 "학번"을 첨가시켜(b) 관계를 묵시적으로 표현
--> 어떤 방법을 선택할지는 설계자의 선택 사항이다
--> 고려할 사항 : 데이터 중복과 데이터 처리의 효율성
--> a의 경우 데이터 중복이 크게 생기지 않음
--> b의 크게 생김 - 한 교수당 지도 학생은 많으므로
--> 1:n인 경우 n쪽의 릴레이션에 키를 첨가시키는 것이 효율적
물리적 설계
- 논리적 데이터 스키마로부터 효율적인 내부 스키마를 설계하는 것
--> 성능에 중대한 영향을 미치므로 효율성 강조
--> 트랜잭션의 상세 설계도 병행하여 수행됨
- 물리적 구조의 기본젝인 데이터 단위는 저장 레코드
- 하나의 파일 : 한 타입의 저장 레코드들의 집합
- 물리적 설계에는 다음과 같은 설계들이 포함된다
--> 저장 레코드 양식 설계 / 레코드 집중화 / 접근 경로 / 저장 공간 할당
- 저장 레코드 양식 설계 시 고려사항
--> 데이터 타입 / 데이터 값의 분포 / 사용될 응용 / 접근 빈도
- 저장 레코드에 대한 데이터 표현과 압축에 관한 정보도 포함
- 접근 빈도수에 따라 그룹을 달리해 물리적으로 상이하게 저장하는 것도 포함
레코드 집중화
--> 논리적으로 관련이 깊은 레코드들을 물리적으로 근접하도록 저장하여 물리적 순차성을 지원
--> 연속된 레코드의 검색을 요구할 때 빠른 접근 가능
--> 블록크기의 선정? : 순차 처리(Sequential Processing)가 주가 되면 큰 블록을 사용하는 것이 유리 /
임의 접근 처리(Random Processing)가 주가 되면 작은 블록을 사용하는 것이 유리
접근 경로
--> 저장된 데이터의 검색과 저장을 가능하게 함
--> 저장구조 : 주로 인덱스를 통한 접근방법과 데이터 파일을 정의
--> 탐색기법 : 주어진 응용을 위한 적절한 접근 경로를 정의
기본 접근 경로와 보조 접근 경로로 나뉨
--> 기본 접근 경로(primary access path)
--> 기본키를 기본으로 한 기본 인덱스를 이용하는 것
--> 초기 레코드 적재, 레코드의 물리적 위치, 기본키를 통한 검색
--> 주요 응용들이 기본 접근 경로를 이용해서 처리되도록 설계
--> 보조 접근 경로(secondary access path)
--> 보조키에 기반을 둔 보조인덱스를 통해 저장레코드를 접근
--> 접근시간은 줄일 수 있으나 저장 공간을 추가로 사용하고, 인덱스 관리가 복잡해짐
상용 DBMS는 성능 향상을 위해 여러가지 tool을 지원
--> 인덱싱 기법, 레코드 집중화, 포인터, 해싱 등이 포함
물리적 데이터 구조 설계 시 고려사항
- 트랜잭션 응답시간
- 저장공간의 효율화
- 트랜잭선 처리도 : 단위 시간에 DBMS가 처리할 수 있는 평균 트랜잭션 수
--> 물리적 설계의 평가를 위해 시뮬레이션이나 프로토타입과 같은 기법을 많이 사용
--> DBMS는 성능 평가를 위해 system catalog에 통계 데이터를 저장
구현
--> 목표 DBMS의 DDL로 기술된 명령문이 컴파일되고 실행됨
--> 데이터베이스 스키마와 빈 데이터베이스 파일을 생성
--> DB에 데이터를 적재시킴
--> 만일 기존 파일이 있다면 변환 유틸리티 사용
--> DB의 트랜잭션은 응용 프로그래머에 의해 구현
--> DB 설계 및 구현이 끝나면 DB 운영 단계로 넘어감

'수업 > 데이터베이스' 카테고리의 다른 글
데이터베이스 - 무결성, 보안, 회복 (0) | 2022.11.27 |
---|---|
데이터베이스 - 데이터베이스 정규화 (1) | 2022.11.27 |
데이터베이스 - SQL(검색, 삭제, 갱신, 뷰, 삽입SQL 등) (1) | 2022.11.26 |
데이터베이스 - 데이터와 정보, 데이터베이스, DBMS (0) | 2022.11.24 |