일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 아날로그 시계만들기
- crud게시판
- 간단한 CRUD 구현
- 국비 회고
- 파이널 프로젝트
- 웹 크롤러
- 국비지원
- mariadb 접속오류
- mariadb 서버 기본값 설정
- 국비과정
- 회고록
- 생년월일 팝업 생성
- CRUD 구현
- Oracle 유동아이피
- 국비지원 후기
- 간단한 CRUD 게시판
- 데이터를 못 읽어오는 경우
- 유동아이피를 고정하는 방법
- 국비 과정
- 국비
- jQuery
- 회고
- 취업 후기
- CRUD 게시판
- 간단한 CRUD구현
- 잡다한 노트
- Oracle 유동IP
- jsp
- 팝업 생성
- 게시판
- Today
- Total
우당탕탕 개발 블로그 도전기
데이터 베이스 모델링의 기초 본문
데이터 베이스 모델링
데이터베이스 모델링은 정보 시스템을 구축하기 위한 기초적인 단계로, 복잡한 데이터를 체계적으로 설계하고 구현하는 과정으로 일반적으로 데이터 베이스 모델링은 요구사항 분석, 개념적 설계, 논리적 설계 그리고 물리적 설계의 4단계를 거치게 된다.
요구사항 분석 (Requirements Analysis)
요구사항 분석의 핵심은 프로젝트나 시스템이 해결하고자 하는 문제를 정확히 이해하고, 이에 대응하는 정보 요구사항을 명확히 식별하는 것이다. 이 과정에서는 다음과 같은 활동들이 포함됨.
- 사용자 인터뷰: 구현할 데이터베이스의 최종 사용자, 시스템 관리자, 그리고 기타 관계자들과의 면담을 통해 정보 요구사항을 파악한다.
- 설문조사: 사용자와 관계자들을 대상으로 한 설문을 통해 필요한 데이터, 데이터의 사용 방법, 그리고 시스템에 대한 기대를 수집함
- 문서 분석: 기존 시스템 문서, 업무 프로세스 문서, 데이터 흐름 다이어그램 등을 분석하여 요구사항을 도출한다.
개념적 설계 (Conceptual Design)
개념적 설계 단계는 요구사항 분석을 통해 수집된 정보를 바탕으로 전체 데이터베이스의 추상적인 구조를 설계하는 과정이다.
'개념적 설계'의 주요 목표는 시스템의 데이터와 그 데이터 간의 관계를 명확히 정의하는 것이며, ERD가 이 과정에서 핵심적인 도구로 사용된다.
- ERD (Entity-Relationship Diagram): ERD는 엔티티(데이터의 집합), 엔티티 간의 관계, 그리고 속성(엔티티를 설명하는 데이터 항목)을 시각적으로 표현하는 다이어그램이다. 예를 들어, 대학교 성적 관리 시스템의 ERD는 <'학생', '과목', '성적', '교수' > 등의 엔티티를 포함할 수 있으며, 이 엔티티들 사이의 관계(예: 학생이 과목을 수강한다, 교수가 과목을 가르친다)를 나타낸다.
논리적 설계 (Logical Design)
논리적 설계 단계는 개념적 모델을 구체적인 논리적 구조로 변환하는 과정이다. 이 단계에서는 실제 데이터베이스 관리 시스템(DBMS)에서 사용될 수 있는 테이블, 필드, 키, 관계 등을 정의한다.
- 테이블 변환: ERD의 각 엔티티는 논리적 설계에서 테이블로 변환되는데, 각 테이블에는 엔티티의 속성이 열(필드)로 매핑된다.
- 키 결정: 각 테이블에 대해 주 키(기본키 : PRIMARY KEY) 를 결정하여 각 레코드의 고유성을 보장한다. 또한, 외래 키(Foreign Key)를 사용하여 테이블 간의 관계를 구현함.
- 정규화: 데이터 중복을 최소화하고 데이터 무결성을 유지하기 위해 정규화 과정을 수행한다.
물리적 설계 (Physical Design)
물리적 설계 단계에서는 논리적 구조를 실제 데이터베이스 시스템에서 구현할 수 있는 물리적 형태로 최적화한다. 이 단계의 주요 목적은 성능, 보안, 저장 공간 활용도를 최적화하는 것으로. 주요 활동은 다음과 같다.
- 저장소 할당: 데이터와 인덱스 파일에 대한 저장소를 할당하고, 데이터의 물리적 배치를 결정함.
- 인덱스 설계: 데이터 접근 속도를 향상시키기 위해 인덱스를 설계하고 구현한다.
- 보안 및 백업 계획: 데이터 보안을 위한 접근 제어 메커니즘을 설계하고, 데이터 손실 방지를 위한 백업 및 복구 전략을 수립함.
앞의 4단계를 '회사 관리 시스템'을 예로 들어 더 세세하게 설명하면
1. 요구 사항 분석 = 기능적 분석(Functional Analysis)
기능적 분석 단계에서는 시스템이 충족해야 할 기본적인 요구사항을 식별한다. 예를 들면
1) 부서 관리: 각 부서의 정보(부서명, 위치 등) 관리, 부서별 직원 수 파악
2) 직원 관리: 직원의 기본 정보(이름, 소속 부서, 직급 등) 등록 및 수정, 직원별 맡은 프로젝트 관리
3) 부양가족 관리: 직원의 부양가족 정보(이름, 관계, 생년월일 등) 관리
4) 프로젝트 관리: 프로젝트 정보(프로젝트명, 시작 및 종료 날짜, 참여 직원 등) 관리 등
각 데이터가 가지고 있는 관점에서 요구사항을 분석하므로 시스템의 설계 및 구현에 있어 중요한 기준이다.
2. 개념적 설계(Conceptual Design)
개념적 설계(Conceptual Design) 단계는 데이터베이스 모델링 과정에서 요구사항 분석 이후에 이루어지는 중요한 단계다.
개념적 설계의 목적은 시스템의 모든 데이터 요소와 그 요소들 간의 관계를 개념적 수준에서 정의하고 모델링하는 것으로
고수준의 추상화를 통해 데이터베이스의 전체 구조를 설계하므로, 데이터 모델은 실제 데이터베이스 시스템의 구현 방법과 독립적이어야 한다.
개념적 설계의 주요 과정으로는
1. 엔티티 식별 : 시스템에서 관리해야 할 주요 데이터 객체나 사물을 엔티티(Entity)로 식별한다.
2. 속성 식별(Identify Attributes): 각 엔티티에 대한 속성(Attribute)을 식별한다. 속성은 엔티티를 더 잘 설명해주는 데이터 항목이다.
3. 관계 식별(Identify Relationships): 엔티티 간의 관계(Relationship)를 식별하고 정의한다. 관계는 엔티티들 사이의 연관성을 나타내는 것이다..
4. ERD 생성(Create an ERD): 식별된 엔티티, 속성, 관계를 바탕으로 엔티티-관계 다이어그램(ERD)를 생성한다. ERD는 개념적 모델을 시각적으로 표현하는 도구로, 데이터 구조를 이해하고 분석하는 데 도움을 준다.
ERD 다이어그램에서의 주의사항
- 개체(Entity): 실제 현실에서 독립적으로 존재하는 것, 직사각형으로 표현
- 속성(Attribute): 개체를 설명하는 특성, 타원으로 표현
- 키속성: 개체마다 고유한 값을 가지는 속성, 밑줄로 표현, 1개 이상 존재가능
회사 관리 시스템의 예시
- 개체(Entity): 실제 현실에서 독립적으로 존재하는 것, 직사각형으로 표현
- 속성(Attribute): 개체를 설명하는 특성, 타원으로 표현
- 키속성: 개체마다 고유한 값을 가지는 속성, 1개 이상 존재가능하다.
- 엔티티: 직원(Employee), 부서(Department), 프로젝트(Project), 부양가족(Dependent)
- 속성:
- 직원: 직원ID, 이름, 소속부서ID
- 부서: 부서ID, 부서명, 위치
- 프로젝트: 프로젝트ID, 프로젝트명, 시작일, 종료일
- 부양가족: 가족ID, 이름, 직원ID, 관계
- 관계:
- 직원은 하나의 부서에 속한다. (1:1)
- 직원은 여러 프로젝트에 참여할 수 있다.(1:N)
- 직원은 여러 부양가족을 가질 수 있다.(M:N)
3. 논리적 설계(Logical Design)
논리적 설계(Logical Design) 단계는 데이터베이스 모델링 과정에서 개념적 설계를 실제 데이터베이스 관리 시스템(DBMS)에서 구현할 수 있는 구조로 변환하는 중요한 과정이다. 이 단계에서는 개념적 모델의 엔티티, 속성, 관계를 논리적 데이터 모델로 전환하여, 데이터를 어떻게 저장하고 조직할지 결정한다.
논리적 설계 단계의 주요 과정으로는
1. 테이블 구조화(Structuring Tables):
설계에서 식별한 각 엔티티를 테이블로 변환한다. 이때, 엔티티의 각 속성은 테이블의 열(Column)이 됨.
2.기본키 및 외래키 지정(Defining Primary and Foreign Keys):
각 테이블에 대해 유일하게 각 행(Row)을 식별할 수 있는 기본키(Primary Key)를 지정한다. 또한, 테이블 간의 관계를 나타내기 위해 외래키(Foreign Key)를 사용함.
3.정규화(Normalization):
데이터 중복을 최소화하고 데이터 무결성을 유지하기 위해 테이블을 정규화하는 과정. 정규화 과정을 통해 데이터베이스의 설계를 최적화하고, 업데이트, 삭제, 삽입 이상(Anomaly)을 방지한다.
4. 관계 정의(Defining Relationships): 엔티티 간의 관계를 논리적 모델 내에서 표현한다. 관계의 유형(1:1, 1:N, M:N)에 따라 외래키를 사용하거나 연결 테이블(Junction Table)을 생성할 수 있음.
회사 관리 시스템의 예시
- 테이블: 직원(Employee), 부서(Department), 프로젝트(Project), 부양가족(Dependent)
- 기본키 및 외래키:
- 직원 테이블: 기본키 - 직원ID / 외래키 - 소속부서ID
- 부서 테이블: 기본키 - 부서ID
- 프로젝트 테이블: :기본키 - 프로젝트ID
- 부양가족 테이블 :기본키 - 가족ID / 외래키 - 직원ID
4. 물리적 설계(Physical Design)
물리적 설계 단계는 데이터베이스 모델링 과정의 마지막 단계로, 논리적 설계를 바탕으로 실제 데이터베이스 시스템에서 데이터를 어떻게 저장하고 관리할지 결정한다. (데이터베이스의 성능, 보안, 관리 용이성을 결정짓는 과정)
물리적 설계 단계에서는 데이터베이스의 물리적 구조를 최적화하여, 시스템의 성능을 극대화하고 저장 공간을 효율적으로 사용할 수 있도록 함.
물리적 설계의 주요 과정으로는
1. 저장 구조 결정(Choosing Storage Structures):
데이터와 인덱스 파일의 저장 방식을 결정하는데 이는 데이터 접근 속도, 업데이트 효율성, 저장 공간 최적화와 직결된다.
2. 인덱싱 전략 수립(Establishing Indexing Strategies):
데이터 검색 성능을 향상시키기 위해 인덱스를 생성한다. 적절한 인덱싱은 쿼리 실행 시간을 단축시키고 시스템의 전반적인 성능을 개선함.
3. 파티셔닝(Partitioning):
대용량 데이터를 관리하기 위해 데이터를 여러 파티션으로 나누는 전략을 결정함. 이는 데이터 관리와 백업, 복구 작업을 용이하게 한다.
4. 보안 정책 설정(Setting Security Policies):
데이터 보안을 위한 접근 제어 리스트(ACL), 암호화, 백업 및 복구 전략을 구현한다.
5. 트랜잭션 관리 및 동시성 제어(Transaction Management and Concurrency Control):
데이터베이스에서 동시에 발생하는 여러 트랜잭션을 효율적으로 관리하고, 데이터 무결성을 유지하기 위한 메커니즘을 결정한다.
회사 관리 시스템의 예시
- 저장 구조 결정: '직원' 테이블은 자주 접근되므로 고성능의 스토리지에 저장한다. '부양가족'의 정보는 접근 빈도가 낮으므로 저렴한 스토리지에 저장할 수 있다.
- 인덱싱 전략 수립: '직원ID'와 '부서ID'에 대한 인덱스를 생성하여 직원 검색 및 부서별 직원 조회 성능을 향상시킨다.
- 파티셔닝: '프로젝트' 테이블을 시간별 또는 지역별로 파티셔닝하여 관리의 복잡성을 줄이고 성능을 개선한다.
- 보안 정책 설정: 직원의 개인 정보를 암호화하고, 정기적인 백업 및 복구 계획을 수립한다.
- 트랜잭션 관리 및 동시성 제어: 다중 사용자 환경에서 직원 정보의 동시 업데이트가 발생할 경우를 대비하여 적절한 잠금(Locking) 메커니즘을 적용한다.
보충 => 데이터베이스 관계 유형
- 1:1 관계(One-to-One): 한 엔티티의 인스턴스가 다른 엔티티의 단 하나의 인스턴스와만 관련될 수 있는 관계다. 예를 들어, '직원'과 '직원의 사무실' 사이에는 1:1 관계가 있을 수 있다.
- 1:N 관계(One-to-Many): 한 엔티티의 인스턴스가 다른 엔티티의 여러 인스턴스와 관련될 수 있는 관계다. 예를 들어, 한 '부서'에 여러 '직원'이 있을 수 있다.
- M:N 관계(Many-to-Many): 한 엔티티의 여러 인스턴스가 다른 엔티티의 여러 인스턴스와 관련될 수 있는 관계다. 예를 들어, 여러 '직원'이 여러 '프로젝트'에 참여할 수 있다. 이 경우, '참여'라는 연결 테이블이 필요함.
관계 유형은 데이터베이스를 설계하고 구현하는 데 필수적인 요소로, 데이터의 구조화, 관계 설정, 효율적인 데이터 관리를 가능하게 함.
자료 출처 :
데이터베이스 모델링 기초
데이터 모델링 현실에서 응용할 데이터를 잘 고르고 다듬어서 DBMS에 저장하는 방법이다. 주어진 개념으로부터 논리적인 데이터 모델을 구성하는 작업을 의미한다. 물리적인 데이터베이스 모델
nauni.tistory.com
https://www.opentutorials.org/course/3883
관계형 데이터 모델링 - 생활코딩
수업소개 관계형 데이터베이스의 테이블을 설계하는 방법을 알려드리는 수업입니다. 이 수업은 아래와 같은 내용을 담고 있습니다. 데이터 모델링의 효용 업무파악 개념적 데이터 모델링 논
www.opentutorials.org