안녕하세요. SQLER의 코난 김대우입니다. 
이번 강좌에서는, 11-5. 관계형 데이터베이스 이해 - 데이터베이스 설계 요구사항(Requirements) 분석과 개념적 설계를 진행 하겠습니다.


SQLER에서 진행되는, 챗GPT와 함께 배우는 SQL Server 강좌 목록

 

이번에 진행할 강좌는 관계형 데이터베이스 이해 - 데이터베이스 설계 요구사항 분석과 개념적 설계입니다.

 

 

 

TL;DR

요구사항 분석 과정에서 사용자와 애플리케이션 요구사항을 수집하고 명세화하며, 데이터베이스가 제공해야 할 기능과 구조를 결정합니다. 개념적 설계 단계에서는 DBMS 독립적인 개념적 스키마 모델링과 트랜잭션 모델링을 진행해 데이터베이스 전체 구조와 기능을 정의합니다.



데이터베이스 설계 요구사항 분석

요구사항 분석은 데이터베이스 설계 초기 단계로, 사용자와 애플리케이션 요구사항을 수집하고 명세화(Specification)하는 과정입니다. 데이터베이스 시스템을 구축하기 위해 필요한 정보와 처리 요구사항을 파악하여 데이터베이스가 제공해야 할 기능과 구조를 결정하는 것이 요구사항 분석 과정입니다. 

 

저장할 정보와 처리 요구사항의 수집

데이터베이스에 저장할 정보와 처리 요구사항을 수집하는 단계입니다. 사용자와 애플리케이션의 요구사항을 파악하여 어떤 데이터가 필요한지, 데이터는 어떤 형태로 처리되어야 하는지 등의 정보를 수집합니다.

 

조직의 관리 목표(Organizational management goals)와 제약 조건의 식별

데이터베이스를 구축할 때 조직의 관리 목표와 제약 조건을 파악하는 단계입니다. 기관이나 조직의 경영 정책, 관리 형태 등에 대한 정보를 수집하여 데이터베이스 설계에 반영합니다.

 

요구사항 명세서(Requirements Specification) 작성

수집한 정보를 바탕으로 공식 요구사항 명세서를 작성합니다. 이 명세서는 작업, 데이터, 관계, 제약 조건 등을 구체적으로 명세화하는 문서입니다.

 

요구사항 명세서 검토

작성된 요구사항 명세를 검토하고, HIPO(Hierarchy Input Process Output), DFD(Data Flow Diagram), Warnier/Orr 다이어그램 등의 방법을 사용해 요구사항 명세를 검토합니다. 검토 과정에서 요구사항 누락이나 모순을 찾고 보완합니다.


☑️ 챗GPT 활용: 시스템 분석 및 설계 과정의 요구사항 명세 - HIPO(Hierarchy Input Process Output)에 대해서 알려줘
☑️ 챗GPT 활용: 시스템 분석 및 설계 과정의 요구사항 명세 - Warnier/Orr 다이어그램에 대해서 알려줘

 

요구사항 분석 단계 정리

요구사항 분석 단계는 데이터베이스 설계 기초를 마련하는 중요한 작업입니다. 요구사항 분석 단계에서 사용자와 애플리케이션의 요구사항을 파악하고, 데이터베이스의 구조와 관계 등을 명세화하여 데이터베이스 설계에 활용합니다.

 

 

데이터베이스 설계 - 개념적 설계(Conceptual design)

데이터베이스 개념적 설계는 데이터베이스의 전체적인 구조를 설계하는 단계로, DBMS에 독립적인 개념적 스키마 모델링과 트랜잭션 모델링 단계입니다. 개념적 설계는 데이터베이스의 논리적 구조를 설계하는 중요한 단계이며, 다음과 같은 방법으로 진행합니다.

 

개념적 스키마 모델링 (Conceptual Schema Modeling) - ERD 툴 사용

개념적 스키마 모델링은 개념적 데이터 모델을 사용하여 데이터베이스의 구조를 설계하는 단계입니다. 일반적인 개념적 데이터 모델은 Entity-Relationship Diagram (ER Diagram)입니다. 이 모델은 엔티티(개체)와 엔티티 간의 관계를 그래픽으로 표현하여 데이터베이스의 구조를 나타냅니다. 엔티티는 데이터베이스에서 관리하고자 하는 실제 개체들을 나타내고, 관계(Relationship)는 엔티티들 간의 연결을 나타냅니다. ER Diagram을 이용하여 개념적 스키마를 모델링하면, 데이터베이스의 전체적인 구조와 데이터 간의 관계를 시각적으로 파악할 수 있습니다.

 

뷰 통합 (View Integration) 방법 (하향식)

애플리케이션이나 사용자 그룹별로 각각 뷰(View)를 식별하고, 이런 뷰들을 통합해 하나의 스키마로 만드는 방법입니다. 다양한 애플리케이션과 사용자들이 데이터베이스에 접근할 때 각자 필요에 맞춰 뷰를 정의하여 사용하는데, 이런 뷰들을 통합하여 하나의 일관된 개념적 스키마를 생성할 수 있습니다. 

 

애트리뷰트 종합 (Attribute Synthesis) 방법 (상향식)

애트리뷰트들을 식별하고 분류한 뒤, 각 애트리뷰트들 간의 관계를 파악해 개체(엔티티)를 생성하고, 개체 간 관계, 개체와 속성 간 관계, 속성들 간의 관계를 통해 전체적인 스키마를 생성하는 방법입니다.
애트리뷰트는 데이터베이스에 저장되는 항목들(items)을 나타내며, 이러한 애트리뷰트들은 특정 개체들과 관련되어 있습니다. 애트리뷰트들의 종속성, 상호 관계, 엔티티와의 관계를 정의하면서 데이터베이스의 구조를 설계하는 방법입니다.

 

위의 방법으로 개념적 설계를 수행하면, 데이터베이스의 구조와 기능을 정의하고, 논리적 구조를 만들 수 있습니다. 개념적 설계 단계에서는 데이터베이스 시스템의 전체적인 구조를 파악하고, 이후 논리적 설계 단계에서는 실제 데이터베이스 구현을 위한 세부 사항들을 정리합니다.

 

 

데이터베이스 설계 - 트랜잭션 모델링

트랜잭션 모델링은 개념적 설계 단계의 데이터베이스 트랜잭션을 정의하는 단계입니다.
트랜잭션 모델링은 트랜잭션의 입출력과 기능을 정의해 데이터베이스 작업 흐름을 이해하는 중요한 단계입니다.

 

입력 데이터 (Input Data)

트랜잭션을 실행하기 위해 필요한 입력 데이터입니다. 입력 데이터는 트랜잭션 실행을 위한 초기 상태(Initial status)를 표현합니다.

 

출력 데이터 (Output Data)

트랜잭션이 실행된 후 리턴하는 출력 데이터를 정의합니다. 출력 데이터는 트랜잭션의 결과를 표현합니다.

 

내부 제어 흐름 (Internal Control Flow)

트랜잭션 내부 제어 흐름을 정의합니다. 즉, 트랜잭션이 어떻게 실행되고, 어떤 순서로 작업이 수행되는지를 표현합니다. 

 

트랜잭션 유형

트랜잭션 유형은 주로 읽기, 쓰기, 읽기 & 쓰기로 구분됩니다:


읽기 (Read Transaction)

데이터베이스에서 데이터를 조회하는 트랜잭션


쓰기 (Write Transaction)

데이터베이스에 새로운 데이터를 추가하거나 기존 데이터를 수정 또는 삭제하는 트랜잭션. 트랜잭션의 입력으로 데이터를 받고, 데이터베이스에 삽입, 갱신 또는 삭제하여 출력 처리


읽기 & 쓰기 (Read & Write Transaction) 

데이터베이스에서 데이터를 조회하고, 이후 해당 데이터를 갱신하는 트랜잭션. 데이터를 조회하여 확인한 후, 필요에 따라 갱신 작업을 트랜잭션으로 수행.

 

트랜잭션 모델링 정리

트랜잭션 모델링은 개념적 설계 진행 중, 데이터베이스에서 실행되는 작업의 구조를 정의하고, 각 트랜잭션들의 목적과 유형을 정의해 데이터베이스 설계에 활용합니다. 트랜잭션 모델링은 개념적 설계 단계에서 이루어지며, 이후 논리적 설계와 물리적 설계 단계에서 구체적인 트랜잭션 구현과 최적화를 수행합니다.
 

 

SQL 강좌 책 구매

강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 코딩 교육 사회공헌 활동에 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다. 

 

책구매 링크: 챗GPT와 함께하는 마이크로소프트 SQL Server 2022 

책구매링크.png

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 21982
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 12251
2294 SQL강좌: 12-1. 인덱스 생성과 관리 - 인덱스(Index) 소개 file 코난(김대우) 2023.08.18 61
2293 SQL강좌: 11-8. 관계형 데이터베이스 이해 - 데이터베이스 구현 코난(김대우) 2023.08.18 24
2292 SQL강좌: 11-7. 관계형 데이터베이스 이해 - 데이터베이스 물리적 설계 코난(김대우) 2023.08.18 23
2291 SQL강좌: 11-6. 관계형 데이터베이스 이해 - 데이터베이스 논리적 설계 코난(김대우) 2023.08.18 23
» SQL강좌: 11-5. 관계형 데이터베이스 이해 - 데이터베이스 설계 요구사항(Requirements) 분석과 개념적 설계 코난(김대우) 2023.08.18 20
2289 SQL강좌: 11-4. 관계형 데이터베이스 이해 - 데이터베이스 설계 목표와 고려사항 코난(김대우) 2023.08.18 16
2288 SQL강좌: 11-3. 관계형 데이터베이스 이해 - 데이터베이스 설계 단계 file 코난(김대우) 2023.08.18 19
2287 SQL강좌: 11-2. 관계형 데이터베이스 이해 - 데이터베이스 생명주기 file 코난(김대우) 2023.08.18 24
2286 SQL강좌: 11-1. 관계형 데이터베이스 이해 - 관계형 모델 코난(김대우) 2023.08.18 33
2285 SQL강좌: 10-4. T-SQL 프로그래밍 - 공통 테이블 식(CTE-Common Table Expression) 코난(김대우) 2023.08.18 47
2284 SQL강좌: 10-3. T-SQL 프로그래밍 - 변수, 조건문(IF-ELSE), 반복문(WHILE), CASE 표현식 코난(김대우) 2023.08.18 27
2283 SQL강좌: 10-2. T-SQL 프로그래밍 - 일괄처리(Batch) 코난(김대우) 2023.08.18 32
2282 SQL강좌: 10-1. T-SQL 프로그래밍 - 소개 코난(김대우) 2023.08.18 21
2281 SQL강좌: 9-3. 커서 - 현업에서 커서 사용 및 주의사항 코난(김대우) 2023.08.18 49
2280 SQL강좌: 9-2. 커서 - 커서 구문 코난(김대우) 2023.08.18 23
2279 SQL강좌: 9-1. 커서(CURSOR) - 커서 소개 코난(김대우) 2023.08.18 40
2278 SQL강좌: 8-7. 저장 프로시저 - 프로시저 캐시와 RECOMPILE 코난(김대우) 2023.08.18 40
2277 SQL강좌: 8-6. 저장 프로시저 - 종속성(Dependency) 확인 코난(김대우) 2023.08.18 44
2276 SQL강좌: 8-5. 저장 프로시저 - OUTPUT 파라미터 코난(김대우) 2023.08.18 44
2275 SQL강좌: 8-4. 저장 프로시저 - 동적 SQL(Dynamic SQL)과 SQL 주입(Injection) 공격 코난(김대우) 2023.08.18 54





XE Login