스터디/데이터베이스

DBMS - Database Modeling과 관계형 모델

elenalee 2023. 6. 3. 12:24

1. 데이터베이스 모델링 

사용할 데이터를 선별하여 데이터에 체계적으로 구조화 저장, 사용할 방법이 필요

 

데이터 모델 

의미, 데이터 타입, 연산등을 명시하기 위해 사용할 수 있는 개념들의 집합

 

데이터 모델링 

실세계의 일부분을 DBMS가 지원하는 데이터 모델의 형태로 나타내는 과정 

 

 

1) 데이터 모델링의 단계 ( 분석 이후 3단계 구조 )

데이터의 의미를 파악, 데이터와 관여하는 업무와 프로세스를 개념으로 정의하고 분석

 

▷ 개념적 데이터 모델링 : 요구사항 해석의 오류를 방지, 실세계의 데이터를 개념적으로 일반화시켜 데이터구조, 데이터타입, 속성, 관계, 제약조건등을 이끌어내는 과정 (ER모델 사용, 객체간의 관계)

▷ 논리적 데이터 모델링 : 특정 DBMS의 구조에 맞게 데이터를 표현하는 과정, 데이터 정의언어로 기술된 개념 스키마 생성 (관계형 모델 사용, DDL기술)

▷ 물리적 데이터 모델링 : 데이터베이스 파일의 내부 저장구조, 파일구성, 인덱스, 접근경로를 결정하는 과정 

 

2) 요구사항 분석단계

①  필요성

DB구조가 복잡해지고 수명주기가 단축되고 활용범위는 확대됨에 따라 사전분석을 통한 적절한 설계가 필요하며, 사용자 요구명세 없는 경우 완성도 및 신뢰도가 낮아지고 이후 에러발생 및 수정이 부가됨 

 

② 과정

업무를 분석하고 필요한 데이터를 저장/운용하는 구조개발하며, 도출, 분석, 기록 단계로 수행 (IEEE-Std-830 표준)

 

 

▣ 제안 요청서 (RFP) 사용자의 요구사항/기술서 개요(목적,기능,요구사항, 단위업무, 데이터정의, 인터페이스 명세)

 요구사항 도출 : 사용자 요구사항 분석 후 명세서 작성으로 업무와 데이터흐름을 기술

                           구축대상, 프로젝트 목표, 범위조사, 업무관계자 인터뷰, 외부자료 및 기술동향 (요구사항 명세서)

 요구사항 분석 : 요구사항의 명확성/완전성/모호성 검증, 요구사항 분류/통합/분리한 기능세분화 (요구사항 정의서)

요구사항 기록 : 요구사항 목록 정리 및 관리자 승인, 정리된 요구사항을 형식에 맞게 문서화, 종료까지 지속적 관리  

 

 

2. ER모델 ( 개념적 데이터 모델링)

실제의 속성들로 이루어진 개체(entity)와 관계(relation)사이를 정형화시킨 모델로 개체집합, 관계집합, 속성으로 구성되며 개념적 모델링 단계에서 사용되고 데이터와 구조의 관계를 ERD(Eentity Relation Diagram)으로 표현 (실제 데이터 저장에 대한 내용은 없음)

 

개념적 데이터 모델링의 결과 (ER)

 

1) 개체와 관계 

개체 (entity) : 실세계에 존재하는 다른 객체와 구별되는 유무형의 사물

    개체집합(entity set) : 개체를 설명하는 여러속성으로 구성 (같은 속성을 공유하는 개체모임)

 관계 : 개체와 개체간 연관성 

    관계집합 : 개체집합간 연관관계 

 

2) 속성 

 단순 속성 : 더 작은 구성요소로 나눌수 없는 속성  

    복합 속성 : 더 작은 구성요소로 나눌수 있는 속성 (생, 년, 월일) => 세부 구성요소는 들여쓰기

▷ 단일값 속성 : 한 개체에 단 하나의 값을 가지는 속성 (이름, 나이)

    다중값 속성 : 한 개체에 여러개의 값을 가지는 속성 (전화번호) => 집합기호 표현

▷ 유도 속성 : 다른 속성으로부터 값이 유추될수 있는 속성 (생년월일과 나이) 

    저장 속성 : 유도 속성을 위해 사용될수 있는 속성( 유추불가, 반드시 저장)

 

관계집합 및 속성에 대한 예시

3) 제약조건 

데이터모델은 의미, 구조, 연관성 및 조건을 표현하기 위한 도구, 표현의 정확성을 위해 준수해야 하는 조건을 정의하는 표현방법을 제공

사상수 : 관계집합에 내 개체집합, 한 개체가 다른 개체와 관계맺는 수량 명시 => 화살표로 표시

 참가제약조건 : 전체적 참가(모든개체 참여), 부분적 참가 (일부개체 참여) => 전체참가 이중선 

 

키(key)속성 : 개체를 구별하는 유일한 값을 가지는 속성 => 속성에 밑줄로 표현

    ** Primary Key, Foreign Key(컬럼 적은쪽,약개체, 1:N에서는 N, N:N일때는 복합키)

 

특수 속성 

    - 관계집합의 속성(두집합의 관계로 생성되는 속성) 예) 수강신청 시 수강시간생성

    - 재귀적 관계 (개체집합이 자신과 관계) 예) 과목 DB내 선수과목 설정 

    - 약한개체집합 (개체의 존재유무가 관계맺는 개체에 종속) => 관계집합, 개체집합 이중선 

    - 강한개체집합 (약한 개체집합과 연결되는 일반개체집합)

 

3. 관계형 모델 ( 논리적 데이터 모델링 ) 

실제 DBMS에서 사용하는 데이터 모델에 맞춰 데이터를 표현하는 과정으로 개념적 데이터 모델링의 결과를 상용 DBMS의 논리적 데이터 모델로 표현한다. 데이터 정의언어로 기술된 개념 스키마 생성하며 관계형 모델이 보편적으로 사용된다. (IBM에서 최초개발)

 

1) 릴레이션

①  릴레이션의 구조  (테이블 형태)

스키마는 맨윗 컬럼의 집합으로 데이터 타입을 정의

 컬럼은 데이터의 속성

데이터는 열단위로 저장되며 레코드

 변수에 실제값이 저장되어 있는 경우 인스턴스

 

② 릴레이션의 특징

레코드 유일성 : 중복된 레코드 불가

레코드 무순서성 : 레코드 순서는 의미없음

컬럼의 무순서성 : 컬럼은 순서가 없고, 이름과 값의 쌍으로 이루어짐 

컬럼의 원자성 : 모든 값들은 나눌수 없는 단 하나의 의미 

 

2) Key

① 키의 속성

▷ 유일성 : 키값은 중복불가 

▷ 최소성 : 축소할수 없음  

 

② 키의 종류

▷  슈퍼키 : 유일성을 만족하는 키, 두개 이상의 속성값 포함가능   

▷ 후보키 : 유일성, 최소성을 만족하는 키 

▷ 기본키(Primary Key) : 레코드의 구분을 위해 선택된 후보키

▷ 외래키 : 참조된 다른 릴레이션의 기본키

 

3) 관계형 모델의 제약조건 

영역 제약조건 : 컬럼의 정의된(domain)에 속한 값 ( 예, 문자열, 숫자 등)

키 제약조건 : 키는 레코드를 구분하는 고유값 

개체 무결성 제약조건 : 기본키 값 Null 불가 

참조  무결성 제약조건 : 반드시 존재하는 레코드의 기본키만 참조 

 

4) ERD 변환  

논리적 데이터 모델링은 ERD를 RDBMS의 구현모델에 맞게 구조와 관계를 표현개념 스키마 생성

1단계 - 개체집합은 릴레이션으로 변환,

2단계 - 약한 개체집합 : 강한개체집합의 키속성을 포함,

3단계 - 일대일관계 : 외래키 참조설정,

4단계 - 일대다관계 : 일쪽의 기본키를 다쪽에 매칭

5단계 - 다대다 관계 : 양쪽의 기본키를 각각 참조하는 외래키를 복합키형태의 컬럼으로 구성

6단계 - 다중값 속성 : 기본키를 참조하는 외래키와 다중값 속성으로 별도 릴레이션을 구성, (

7단계 - 관계집합의 속성 : 외래키가 위치한 릴레이션의 컬럼으로 삽입하여 구성 

 

- 다대다 관계집합은 새로운 릴레이션으로 만들어지며 각각의 기본키를 복합키로 구성

   (기본키 및 외래키의 기능을 모두 수행)

- 관계집합의 속성(신청시각)은 외래키가 위치한 곳에 삽입 

- 약한 개체집합의 기본키는 참조되는 외래키가 기본키와 복합키로 기본키의 역할 수행

 

ER 다이어그램의 변환 (1:1, N:N, 강/약한 개체집합)

 

 

5) 관계 연산  

① 개념 

관계형 모델의 릴레이션으로 새로운 릴레이션 생성

사용자 관점에서 데이터를 추출하는 도구제공

 

② 관계대수 

 관계 연산을 정의하는 방법 

주어진 릴레이션에서 새로운 릴레이션을 만드는 연산자 활용 ( 𝜫, ⋈ 등)

새로운 임시 릴레이션 구성하며, 연산자를 중첩하여 연산처리절차 표현

 

③ 관계 연산자

 Select 연산 : 주어진 릴레이션에서 조건을 만족하는 릴레이션 생성  ( σ조건 (R))

Proejct 연산 : 기술된 컬럼만 갖는 릴레이션으로 재구성 ( 𝜫<컬림리스트> (R))

집합 연산자 : 합집합 ( RUS ), 교집합(R∩S) ,차집합 (R-S)

    R, S의 차수가 동일, 각 릴레이션의 도메인이 같아야함 (i번째 칼럼의 도메인이 서로 같음) 

Rename 연산자 : 𝝆 cs ( σ소속학과 = '컴퓨터과학과 (교수)) 새롭게 생성한 릴레이션을 cs로 명명 

 Cartesian Product : 레코드 간의 모든 조합을 결합

 Join 연산자 : 여러개의 테이블을 결합하여 연산 (Cartesian연산후 Select연산처리)

 집계 함수  : 집계함수 값들의 집합, 또는 레코드의 집합에 적용하는 연산 

                        레코드 그룹화를 위해 집계함수 연산자 앞에 그룹화 속성을 기술 

 

집계함수, count 연산의 사례