이 글은 데이터베이스 개론 (저자 김연희)의 내용을 개인적으로 정리하는 글임을 알립니다.
데이터 모델링과 데이터 모델의 개념
데이터 모델링
현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정을 데이터 모델링이라 한다.
현실 세계의 데이터를 컴퓨터 세계의 데이터베이스로 한 번에 옮기기는 쉽지 않다.
- 추상화 : 현실 세계의 데이터 중에서 중요한 데이터를 선별하는 작업
사람의 머릿속에 있는 현실 세계의 데이터 중에 중요한 데이터를 찾아 개념 세계로 옮기는 단계와 이를 컴퓨터 세계에 저장하는 구조를 결정해서 표현하는 단계로 나누어 진행한다.
- 개념적 모델링 : 현실 세계의 데이터 중에 중요한 데이터를 찾아 개념 세계로 옮기는 단계
- 논리적 모델링 : 개념 세계의 데이터를 데이터베이스에 저장할 구조를 결정하고 이 구조로 표현하는 작업
일반적으로 개념적 모델링과 논리적 모델링을 명확히 구분하지는 않고 합쳐서 데이터 모델링이라 부른다.
데이터 모델링은 데이터베이스 설계의 핵심 과정이다.
데이터 모델
데이터 모델링을 쉽게 할 수 있도록 도와주는 도구가 있는데 이것이 바로 데이터 모델이다.
- 데이터 모델 : 현실 세계의 데이터 구조를 컴퓨터 세계의 데이터 구조로 기술하는 도구
데이터 모델은 데이터 모델링의 결과물을 표현하는 도구로, 개념적 데이터 모델과 논리적 데이터 모델이 있다.
- 개념적 데이터 모델 : 사람의 머리로 이해할 수 있도록 현실 세계를 개념적 데이터로 모델링하여 데이터베이스의 개념적 구조로 표현하는 도구
- 논리적 데이터 모델 : 개념적 구조를 논리적 데이터 모델링하여 데이터베이스의 논리적 구조로 표현하는 도구
일반적으로 데이터 모델은 데이터 구조, 연산, 제약조건으로 구성된다.
데이터 모델에서는 보통 데이터 구조를 강조하지만, 적용 가능한 연산과 제약조건도 이해할 필요가 있다.
데이터 구조
- 개념적 데이터 모델에서 데이터 구조 : 현실 세계를 개념 세계로 추상화했을 때 어떤 요소로 이루어져 있는지를 표현하는 개념적 구조
- 논리적 데이터 모델에서 데이터 구조 : 데이터를 어떤 모습으로 저장할 것인지를 표현하는 논리적 구조
- 데이터 구조는 자주 변하지 않고 정적이라는 특징이 있다.
연산
- 데이터 구조에 따라 개념 세계나 컴퓨터 세계에서 실제로 표현된 값들을 처리하는 작업
- 값이 연산에 의해 계속 변경될 수 있으므로 동적이라는 특징이 있다.
제약조건
- 데이터 무결성을 유지하기 위함
- 구조적 측면의 제약 사항과 연산을 적용하는 경우 허용할 수 있는 의미적 측면의 제약 사항이 있다.
데이터 모델링과 데이터 모델을 아파트 건축에 비교하면
- 개념적 모델링 : 요구사항을 반영하여 설계도를 그리는 과정
- 개념적 데이터 모델 : 설계도를 그릴 때 사용하는 방법이나 도구
- 논리적 데이터 모델링 : 설계도를 토대로 모델하우스를 만드는 과정
- 논리적 데이터 모델 : 모델하우스를 만들 때 사용하는 방법이나 도구
보통 데이터 모델링과 논리적 데이터 모델링을 통틀어 데이터베이스 설계라고 한다.
데이터 모델링 과정을 통해 논리적 구조가 결정되면, 컴퓨터 저장 장치에 실제로 저장되는 형태를 의미하는 물리적 구조로 변환하는 작업을 통해 현실 세계의 데이터를 컴퓨터 세계의 데이터로 저장한다.
- 물리적 데이터 모델링 : 컴퓨터 저장 장치에 실제로 저장되는 형태를 의미하는 물리적 구조로 변환하는 작업
개념적 데이터 모델링과 논리적 데이터 모델링 작업을 지원하는 다양한 데이터 모델이 존재하는데, 사용하는 데이터 모델에 따라 현실 세계를 표현하는 개념적 구조나 논리적 구조의 모습이 달라진다.
개념적 데이터 모델 중 대표적으로 많이 사용되는 것이 개체-관계 모델(E-R Model : Entity-Relationship Model)이다.
개념적 데이터 모델
(개체-관계(Entity-Relationship) 모델)
개체-관계 모델이란 개체(entity)와 개체 간의 관계(Relationship)를 이용해 현실 세계를 개념적 구조로 표현하는 방법이다.
현실 세계를 개체-관계 모델을 이용해 개념적으로 모델링하여 그림으로 표현한 것을 개체-관계 다이어그램(ERD:Entity-Relationship Diagram)이라고 한다.
개체(Entity)
개체는 현실 세계에서 조직을 운영하는 데 꼭 필요한 사람이나 사물과 같이 구별되는 모든 것을 의미한다.
예를 들어, 서점을 개념적으로 모델링할 때 중요 데이터를 가지고 있는 사람인 고객과 중요 데이터를 가지고 있는 사물인 책이 개체가 된다.
개체는 사람과 사물처럼 물리적으로 존재하는 것만을 의미하지 않는다.
개념이나 사건처럼 개념적으로 존재하는 것도 개체가 될 수 있다.
예를 들어, 학교 운영에 필요한 데이터를 가지고 있는 학과나 과목은 물리적으로 존재하지 않지만 반드시 필요한 개념이기 때문에 개체가 될 수 있다.
개체는 다른 개체와 구별되는 이름을 가지고 있고, 각 개체만의 고유한 특성이나 상태, 즉 속성을 하나 이상 가지고 있다.
- 개체 타입 : 개체를 고유한 이름과 속성들로 정의한 것
- 개체 인스턴스(어커런스) : 개체를 구성하고 있는 속성이 실제로 값을 가짐으로써 실체화된 개체
- 개체 집합 : 특정 개체 타입에 대한 개체 인스턴스들을 모아 놓은 것
개체와 속성은 파일 구조에서 레코드(row)와 필드(column) 용어에 대응된다.
개체 타입은 레코드 타입에, 개체 인스턴스는 레코드 인스턴스에 대응한다.
ERD에서 개체를 사각형으로 표현하고 사각형 안에 개체의 이름을 표기한다.
속성(Attribute)
속성은 개체가 가지고 있는 고유한 특성이다.
속성은 그 자체만으로는 의미가 없지만 관련 있는 속성들을 모아 개체를 구성하면 하나의 중요한 의미를 표현할 수 있다.
속성은 일반적으로 의미 있는 데이터의 가장 작은 논리적 단위로 인식된다.
ERD에서 속성은 타원으로 표현하고, 타원 안에 속성의 이름을 표기한다.
속성은 아래와 같이 다양한 기준으로 분류할 수 있다.
단일 값 속성과 다중 값 속성
- 단일 값 속성 : 특정 개체를 구성하는 속성 값이 하나
- 다중 값 속성 : 특정 개체를 구성하는 속성이 여러개(ERD에서 이중 타원으로 표현)
단순 속성과 복합 속성
- 단순 속성 : 의미를 더 분해할 수 없는 속성, 즉 의미가 하나
- 복합 속성 : 의미를 분해할 수 있어 값이 여러 개의 의미를 포함(예를 들어 생년월일은 년, 월, 일로 이뤄짐)
유도 속성과 저장 속성
-유도 속성
- 값이 별도로 저장되는 것이 아니라 기존의 다른 속성 값에서 유도되어 결정되는 속성
예를 들어, 책 개체를 구성하는 가격과 할인율 속성으로 계산되는 판매 가격 속성이 유도 속성 - 유도 속성은 그때마다 계산되므로 값을 따로 저장할 필요가 없다.
- 유도 속성은 ERD상에서 점선 타원으로 표현
-저장 속성
가격과 할인율 같은 유도 속성을 계산하는 데 사용되는 속성
널 속성
- 아직 결정되지 않았거나 모르는 값을 의미
- 해당되는 값이 없는, 즉 존재하지 않는 값의 경우도 널 값
- 널 값은 아직 값을 갖지 않은 것이므로 공백과 0과는 다르다.
키 속성
개체 집합에 존재하는 각 개체 인스턴스들을 식별하는 데 사용
- 유일성 : 하나의 키값으로 튜플을 유일하게 식별할 수 있는 성질
- 최소성 : 키를 구성하는 속성들 중 꼭 필요한 최소한의 속성들로만 키를 구성하는 성질
슈퍼 키(Super Key)
각 행을 유일하게 식별할 수 있는 속성들의 집합이다.
서로 구분만 할 수 있다면 '슈퍼키'라고 할 수 있다.
- 학번 : 학번만 가지고 학생들을 구분할 수 있으므로 슈퍼키가 맞다.
- 주민등록번호 : 주민등록번호만 가지고도 학생들을 구분할 수 있으므로 슈퍼키가 맞다.
- 이름 : 이름은 서로 같을 수 있기 때문에 구분하지 못하므로 슈퍼키가 아니다.
- 생년월일 : 생년월일 역시 서로 같을 수 있기 때문에 슈퍼키가 아니다.
- 이름, 생년월일 : 이름과 생년월일의 조합으로 학생들을 구분할 수 있으므로 슈퍼키가 맞다.
후보키 (Candidate Key)
각 행을 유일하게 식별할 수 있는 "최소한의" 속성들의 집합이다.
서로 구분할 수 있으면서 불필요한 속성들이 없어야 '후보키'라고 할 수 있다.
- 학번 : 학생들을 구분할 수 있고 속성이 하나 뿐이므로 후보키가 맞다.
- 주민등록번호 : 학생들을 구분할 수 있고 속성이 하나 뿐이므로 후보키가 맞다.
- 이름 : 이름은 서로 같을 수 있기 때문에 후보키가 아니다.
- 생년월일 : 생년월일 역시 서로 같을 수 있기 때문에 후보키가 아니다.
- 이름, 생년월일 : 학생들을 구분할 수는 있으나 [학번] 하나 또는 [주민등록번호] 하나만 가지고도 구분할 수 있다.
따라서 속성 2개를 조합할 필요가 없으므로 후보키가 아니다.
기본키 (Primary Key)
최소성을 가진다.
후보키들 중에서 하나를 메인으로 선택한 키다.
ERD 상에서 밑줄을 그어 나타낸다.
- [학번]을 메인으로 선택했으므로 [학번]이 기본키가 된다.
대체키 (Alternate Key)
기본키를 제외한 나머지 후보키들을 의미한다.
- [학번]을 메인으로 선택했으므로 [학번] 이 외에 [주민등록번호]가 대체키가 된다.
외래키 (Foreign Key)
한 테이블이 다른 테이블의 기본키를 참조해서 테이블 간의 관계를 만드는 것을 의미한다.
- 취미 테이블의 [학번]은 학생 테이블의 [학번]을 참조해서 학생마다 취미가 무엇인지를 나타내고 있으므로 외래키이다.
유니크키(Unique Key, Unique Index)
값 중복을 허용하지 않는다.
NULL값을 허용한다.
테이블에서 여러 개 생성 가능하다.
관계(Relationship)
관계는 개체와 개체가 맺고 있는 의미 있는 연관성이다.
관계는 개체 집합들 사이의 대응 관계, 즉 매핑(mapping)을 의미한다.
업무 처리에 대한 요구 사항을 개체들을 이용해 하나의 문장으로 만들었을 때 동사에 해당하는 것이 관계이다.
고객 개체와 책 개체 사이의 '고객이 책을 구매한다'에서 구매가 관계이다.
관계도 개체처럼 속성을 가질 수 있다.
관계를 맺음으로써 발생하는 중요한 데이터들이 관계의 속성이 된다.
관계는 ERD 상에서 마름모로 표현한다.
관계의 유형(Mapping Cardinality)
관계도 다양한 기준에 따라 분류할 수 있다.
중요하게 활용되는 분류 기준은 매핑 원소의 수, 즉 매핑 카디널리티다.
매핑 카디널리티를 기준으로 일대일, 일대다, 다대다 라는 세 가지 유형으로 분류할 수 있다.
일대일(1:1) 관계
개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 하나와 관계를 맺을 수 있고, 개체 B의 각 개체 인스턴스도 개체 A의 개체 인스턴스 하나와 관계를 맺을 수 있다면 두 개체의 관계는 일대일 관계다.
일대다(1:N) 관계
개체 A와 각 개체 인스턴스는 개체 B의 개체 인스턴스 여러 개와 관계를 맺을 수 있지만, 개체 B의 각 개체 인스턴스는 개체 A의 개체 인스턴스 하나와만 관계를 맺을 수 있다면 두 개체는 일대다 관계다.
다대다(N:M) 관계
개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 여러 개와 관계를 맺을 수 있고, 개체 B의 각 개체 인스턴스가 개체 A의 개체 인스턴스 여러 개와 관계를 맺을 수 있다면 두 개체는 다대다 관계다.
관계의 참여 특성(Mapping Optionality)
개체 A와 B 사이의 관계에서, 개체 A의 모든 개체 인스턴스가 관계에 반드시 참여해야 된다면 개체 A가 관계에 '필수적 참여한다' 또는 '전체 참여한다'라고 한다.
- 모든 고객이 책을 반드시 구매해야 한다는 제약조건이 있다. -> 고객 개체가 구매 관계에 필수적 참여
- 필수적 참여 관계는 ERD 상에서 이중선으로 표현
개체 A의 개체 인스턴스 중 일부만 관계에 반드시 참여해야 된다면 개체 A가 관계에 '부분적 참여한다' 또는 '선택적 참여한다'라고 한다.
- 모든 고객이 책을 반드시 구매해야 한다는 제약조건이 없다. -> 고객 개체가 구매 관계에 선택적 참여
관계의 종속성
개체 B가 독자적으로는 존재할 수 없고 다른 개체 A의 존재 여부에 의존적이라면, 개체 B가 개체 A에 종속되어 있다고 한다.
이는 개체 A가 존재해야 개체 B가 존재할 수 있고, 개체 A가 삭제되면 개체 B도 함께 삭제되어야 함을 의미한다.
- 약한 개체 : 다른 개체의 존재 여부에 의존적인 개체
- 강한 개체 : 다른 개체의 존재 여부를 결정하는 개체
강한 개체와 약한 개체는 일반적으로 일대다의 관계이며, 약한 개체는 강한 개체와의 관계에 필수적으로 참여한다는 특징이 있다.
약한 개체는 자신이 지닌 속성만으로는 식별이 어려워 일반적으로 강한 개체의 키를 포함하여 키를 구성한다.
약한 개체는 이중 사각형으로 표현하고 약한 개체가 강한 개체와 맺는 관계는 이중 마름모로 표현한다.
ERD(Entity-Relationship Diagram)
ERD는 개체-관계 모델을 이용해 현실 세계를 개념적으로 모델링한 결과물을 그림으로 표현한 것이다.
ERD는 기본적으로 개체를 표현하는 사각형, 개체 간의 관계를 표현하는 마름모, 개체나 관계의 속성을 표현하는 타원, 각 요소를 연결하는 연결선으로 구성된다.
그리고 일대일, 일대다, 다대다 관계를 레이블로 표기한다.
논리적 데이터 모델
논리적 데이터 모델의 개념과 특성
개체-관계 모델은 현실 세계를 사람들의 머릿속에 그릴 수 있는 개념적인 구조로 모델링하는 데 사용하므로 어떤 DBMS로 데이터베이스를 구축하든 상관이 없다.
하지만, ERD로 표현한 개념적인 구조를 데이터베이스에 표현하는 형태를 결정하는 논리적인 데이터 모델링에서는 DBMS 종류가 중요하다.
DBMS에 따라 ERD로 표현된 개념적 구조를 데이터베이스에 어떤 형태로 저장할지를 논리적으로 표현하는데, 이러한 논리적인 구조를 논리적 데이터 모델이라 한다.
논리적 데이터 모델은 논리적 데이터 모델링의 결과물이고, 사용자가 생각하는 데이터베이스의 모습 또는 구조다.
- 스키마 : 논리적 데이터 모델로 표현된 데이터 베이스의 논리적 구조, 데이터베이스 내에서 데이터가 어떤 구조로 저장되는지를 나타낸다.
스키마는 DBMS에 따라 달라진다.
일반적으로 많이 사용되는 논리적 데이터 모델은 관계 데이터 모델로, 데이터베이스의 논리적 구조가 2차원 테이블(표) 형태이다.
관계 데이터 모델이 제안되기 전에는 계층 데이터 모델과 네트워크 데이터 모델이 주로 사용되었다.
관계 데이터 모델
아래의 포스팅에서 다룹니다.
2023.12.08 - [데이터베이스/데이터베이스 개론] - [DB 개론] 관계 데이터 모델
'데이터베이스 > 데이터베이스 이론' 카테고리의 다른 글
[DB 이론] 데이터베이스 설계 (1) | 2023.12.09 |
---|---|
[DB 이론] 관계 데이터 모델 (1) | 2023.12.08 |
SQL분류(DML, DDL, DCL, TCL) (1) | 2023.11.19 |
[DB 이론] 데이터베이스 시스템 (1) | 2023.10.14 |
[DB 이론] 데이터베이스 관리 시스템(DBMS) (0) | 2023.10.03 |