2022. 12. 13. 08:40 수정 및 복습 시작
데이터 모델링과 데이터 모델
- 데이터 모델링이란 현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정이다.
- 우리는 저장할 개체를 데이터베이스로 변환할 때 그 개체에서 데이터베이스에 저장하여 관리할 만한 가치가 있는 중요한 데이터만 찾아내야 한다. 예를 들어 기린을 기준으로 한다.
- 그럼 발이 4개이고, 초식 동물이며, 몸에 무늬가 있고, 목이 굉장히 길다. 이렇게 누가 들어도 기린을 상상할 수 있는 데이터를 찾아야 한다.
- 이 과정을 추상화라고 한다.
현실세계에서 기린에 대한 중요 데이터를 추출하여 앞선 과정과 같이 개념 세계로 옮기는 작업을
데이터 모델링 과정 중에서도 개념적 모델링이라 한다.
그리고 개념 세계의 데이터를 데이터베이스에 저장할 구조를 결정하고 이 구조로 표현하는 작업을 논리적 모델링이라 한다.
모델링은 개념적 모델링과 논리적 모델링을 통해 이루어진다.
이제 예시인 기린 말고 더욱 복잡한 현실 세계의 조직,
단체를 만약 데이터베이스로 옮긴다고 하면 그것은 굉장히 어려운 이라고 생각할 수 있다.
이러한 데이터 모델링을 쉽게 도와주는 도구가 있는데 그것이 바로 데이터 모델이다.
데이터 모델
- 데이터 모델은 데이터 모델링의 결과물을 표현하는 도구로, 개념적 데이터 모델과 논리적 데이터 모델이 있다.
- 개념적 데이터 모델은 사람의 머리로 이해할 수 있도록 현실 세계를 개념적 모델링하여 데이터베이스의 개념적 구조로 표현하는 도구다. 예시로는 개체-관계 모델이 있다.
- 논리적 데이터 모델은 개념적 구조를 논리적 모델링하여 데이터베이스의 논리적 구조로 표현하는 도구다. 예시로는 관계 데이터 모델이 있다.
- 데이터 모델은 연산, 데이터 구조, 제약 조건 3가지 구성요소로 이루어진다.
개체-관계 모델 (E-R 다이어그램)
- 먼저 개체 관계 모델이란 1976년 피터 첸이 제안한 것으로, 개체와 개체 간의 관계를 이용해 현실 세계를 개념적 구조로 표현하는 방법이다.
- 핵심 요소는 개체, 속성, 관계이며 현실 세계를 개체-관계 모델을 이용해 개념적으로 모델링하여 그림으로 표현한 것을 개체-관계 다이어그램 또는 E-R 다이어그램이라 한다.
개체
- 개체는 현실 세계에서 조직을 운영하는 데 꼭 필요한 사람이나 사물과 같이 구별되는 모든 것을 의미한다.
- 즉 개체는 저장할 만한 가치가 있는 중요 데이터를 가지고 있는 사람이나 사물 등이며, 개념적 모델링을 하는 데 가장 중요한 요소다.
- 개체는 사건이나 사람처럼 물리적으로 존재하는 개념뿐만 아니라 학과나 과목처럼 물리적으로 존재하지 않지만 반드시 필요한 개념이면 개체가 될 수 있다.
- 개체는 다른 개체와 구별되는 이름을 가지고 있고, 각 개체만의 고유한 특성이나 상태, 즉 속성을 하나 이상 가지고 있다.
- 개체를 고유의 이름과 속성들로 정의한 것을 개체 타입이라 한다. 개체를 구성하고 있는 속성이 실제 값을 가짐으로 써 실체화된 개체를 개체 인스턴스 또는 개체 어커런스라 한다.
- 특정 개체 타입에 대한 개체 인스턴스들을 모아 놓은 것을 개체 집합이라 한다. 데이터베이스에서 실제로 저장하고 관리하는 것이 이 개체 집합이라 할 수 있다.
- E-R 다이어그램에서는 개체를 사각형으로 표현한다.
속성
- 속성은 개체가 가지고 있는 고유의 특성이다.
- 속성은 그 자체만으로는 의미가 없지만 관련 있는 속성들을 모아 개체를 구성하면 하나의 중요한 의미를 표현할 수 있다. 속성은 일반적으로 의미 있는 데이터의 가장 작은 논리적 단위로 인식된다.
- 파일 구조의 필드와 대응되며 E-R 다이어그램에서 속성은 타원으로 표현한다.
- 속성은 속성 값의 개수에 따라 단일 값 속성, 다중 값 속성으로 분리할 수 있고 의미의 분해 가능성에 따라 단순 속성 복합 속성으로 분리할 수 있다. 또한 기존 속성 값에서 유도를 통해 유도 속성으로 분리할 수 있다.
단일 값 속성과 다중 값 속성
- 먼저 단일 값 속성과 다중 값 속성이다.
- 단일 값 속성은 말 그대로 특정 개체를 구성하는 속성의 값이 하나면 단일 값 속성이라고 한다.
- 이와 달리 속성이 값을 여러 개 가질 수 있으면 다중 값 속성으로 분류된다. E-R 다이어그램에서 이중 타원으로 표현한다.
단순 속성과 복합 속성
- 단순 속성은 의미를 더는 분해할 수 없는 속성이다.
- 복합 속성은 의미를 더 분해할 수 있는 속성이다.
유도 속성과 저장 속성
- 유도 속성은 값이 별도로 저장되는 것이 아니라 기존의 다른 속성 값에서 유도되어 결정되는 속성을 유도 속성으로 분류한다.
- E-R 다이어그램에서 점선으로 표현한다. 유도 속성을 이끌어 내는 속성들을 저장 속성이라고 한다.
널 속성과 키 속성
- 널 속성이란 널 값은 아직 결정되지 않았거나 모르는 값을 의미한다.
- 또는 해당되는 값이 없는, 즉 존재하지 않는 값의 경우도 널 값이라 한다.
- 이처럼 널 값은 값을 아직 갖지 않은 것이므로 공백이나 0과는 다르다. 이런 널 값이 허용되는 속성을 널 속성이라고 한다.
- 키 속성은 각 개체 인스턴스를 구별하는 데 사용되는 속성이다. 모든 개체 인스턴스들은 키 속성이 다르다.
- 둘 이상의 속성들로 구성되기도 하며 E-R 다이어그램에서는 밑줄로 표현한다.
관계
- 관계는 개체와 개체가 맺고 있는 의미 있는 연관성으로, 개체-관계 모델의 중요한 요소다.
- 관계는 개체 집합들 사이의 대응 관계, 즉 매핑(Mapping)을 의미한다.
- E-R 다이어그램에서는 마름모로 표현한다.
- 관계도 개체처럼 속성을 가질 수 있고 실제 특정 개체 인스턴스들 간에 맺어진 실제 관계를 관계 인스턴스라고 부르기도 한다.
관계의 유형
- 관계는 다양한 기준에 따라 분류한다.
- 먼저 관계에 참여하는 개체 타입의 수를 기준으로 이항관계, 삼항 관계, 순환 관계 등으로 나눌 수 있다.
- 이항관계는 개체 타입 두 개가 맺는 관계이고, 삼항 관계는 개체 타입 세 개가 맺는 관계다. 순환 관계는 개체 타입 하나가 자기 자신과 맺는 관계다.
- 다음 분류의 기준은 매핑 원소의 수, 매핑 카디널 리티로 분류할 수 있다.
- 매핑 카디널리티는 두 관계를 맺는 두 개체 집합에서, 각 개체 인스턴스가 연관성을 맺고 있는 상대 개체 집합의 인스턴스 개수를 의미한다.
- 관계는 매핑 카디널 리티를 기준으로 일대일, 일대다, 다대다라는 세 가지 유형으로 분류할 수 있다.
일대일 관계
- 개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 하나와 관계를 맺을 수 있고,
개체 B의 각 개체 인스턴스도 개체 A의 개체 인스턴스 하나와 관계를 맺을 수 있다면, 두 개체의 관계는 일대일 관계다.
일대다 관계
- 개체 A의 각 개체 인스턴스는 개체 B의 개체 인스턴스 여러 개와 관계를 맺을 수 있지만,
개체 B의 각 개체 인스턴스는 개체 A의 개체 인스턴스 하나와만 관계를 맺을 수 있다면 두 개체는 일대다 관계다.
다대다 관계
- 개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 여러 개와 관계를 맺을 수 있고,
개체 B의 각 개체 인스턴스도 개체 A의 개체 인스턴스 여러 개와 관계를 맺을 수 있다면 두 개체는 다대다 관계다.
관계의 참여 특성
- 관계의 참여 특성에는 필수적 참여와 선택적 참여가 있다.
- 필수적 참여는 모든 개체 인스턴스가 관계에 반드시 참여해야 되는 것을 의미한다.
- 필수적 참여 관계는 E-R 다이어그램에서 이중선으로 표현한다. '필수적 참여한다'라는 표현 말고 '전체 참여한다'라고도 한다.
- 선택적 참여는 개체 인스턴스 중 일부만 관계에 참여해도 되는 것을 의미한다.
관계의 종속성
- 두 개체가 관계에 대해 종속적인 특성을 가지는 경우도 있다.
- 다른 개체의 존재 여부에 의존적인 개체를 약한 개체라고 한다.
- 다른 개체의 존재 여부를 결정하는 개체를 강한 개체라고 한다.
- 강한 개체와 약한 개체는 일반적으로 일대다의 관계를 가지고, 약한 개체는 강한 개체와의 관계에 필수적으로 참여한다.
- 약한 개체는 강한 개체의 키를 포함하여 키를 구성한다.
- E-R 다이어그램에서 약한 개체는 이중 사각형으로 표현하고 약한 개체가 강한 개체와 맺는 관계는 이중 마름모로 표현한다.
논리적 데이터 모델
- 논리적 데이터 모델이란 E-R다이어그램으로 표현된 개념적 구조를 데이터베이스에 저장할 형태로 표현된 논리적인 구조다.
- 논리적 데이터 모델은 논리적 데이터 모델링의 결과물이고, 사용자가 생각하는 데이터베이스의 모습 또는 구조이다.
- 논리적 데이터 모델로 표현된 데이터베이스의 논리적 구조가 바로 데이터베이스 스키마다.
논리적 데이터 모델로는 흔히 관계 데이터 모델, 계층 데이터 모델, 네트워크 데이터 모델 등이 있다.
계층 데이터 모델과 네트워크 데이터 모델을 살짝 살펴보고 관계 데이터 모델은 깊게 알아보겠다.
계층 데이터 모델
- 계층 데이터 모델은 데이터베이스의 논리적 구조가 트리 형태다.
- 루트 역할을 하는 개체가 존재하며 사이클이 존재하지 않는다. 개
- 체 간에 상하 관계가 성립하며, 상위에 있는 개체를 부모 개체, 하위에 있는 개체를 자식 개체라 한다.
- 이들 사이의 일대다 관계를 부모 관계라 한다.
- 두 개체 사이의 하나의 관계만 정의할 수 있다.
- 다대다 관계를 직접 표현할 수 없고 개념적 구조를 모델링하기 어려워 구조가 복잡해질 수 있다. 데이터 CRUD가 쉽지 않다.
네트워크 데이터 모델
- 네트워크 데이터 모델은 데이터베이스의 논리적 구조가 그래프 또는 네트워크 형태다.
- 개체 간에는 일대다 관계만 형성된다. 관계를 여러 개 정의할 수 있어 관계를 이름으로 구별한다.
- 다대다 관계를 직접 표현할 수 없고 데이터 CRUD가 쉽지 않다.
- 일대다 관계의 개체들을 각각 오너와 멤버라고 부른다. 이들 사이의 관계를 오너-멤버 관계라고 부른다.
관계 데이터 모델
- 개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델이다.
- 일반적으로 관계 데이터 모델에서는 하나의 개체에 관한 데이터를 릴레이션 하나에 담아 데이터베이스에 저장한다.
- 필자가 이해하기론 데이터베이스 테이블 하나를 릴레이션과 동일하게 여긴다고 생각한다.
관계 데이터 모델의 기본 용어
- 릴레이션: 하나의 개체에 관한 데이터를 2차원 테이블의 구조로 저장한 것. 파일 관리 시스템 관점에서 파일에 대응
- 속성: 릴레이션의 열을 속성 또는 애트리뷰트(attrivute)라고 부른다. 릴레이션은 파일 관리 시스템에서의 파일, 속성은 해당 파일의 필드에 대응하는 개념이다.
- 투플 : 릴레이션의 행을 투플(tuple)라고 부른다. 어떤 릴레이션에서 각 투플은 실제 속성 값들을 모아놓은 것으로, 어떤 개체의 인스턴스다. 투플은 파일 관리 시스템 관점에서 해당 파일의 레코드에 대응하는 개념이다.
- 도메인: 속성 하나가 가질 수 있는 모든 값의 집합을 해당 속성의 도메인(domain)라고 한다.
속성 값을 입력 및 수정할 때 적합성 판단의 기준이 되고, 일반적으로 속성의 특성을 고려한 데이터 타입으로 정의한다. - 널 값: 릴레이션에 있는 특정 투플의 속성 값을 모르거나, 적합한 값이 없는 경우에는 널(Null)이라는 특별한 값을 사용한다.
널 값은 특정 속성에 해당되는 값이 없음을 나타내므로 숫자 0이나 공백 문자와는 다르다. - 차수: 하나의 릴레이션에서 속성의 전체 개수다.
- 카디널리티: 하나의 릴레이션에서 투플의 전체 개수다.
릴레이션과 데이터베이스의 구성
- 릴레이션 스키마: 릴레이션 스키마는 릴레이션의 논리적 구조이다.
릴레이션의 이름과 릴레이션에 포함된 모든 속성 이름으로 정의한다.
릴레이션 내포라고도 하며 정적인 특징이 있다.
보통 릴레이션 스키마는 데이터베이스 관리 시스템이 내부적으로 데이터 정의어를 이용해 정의한다. - 릴레이션 인스턴스: 어느 한 시점에 릴레이션에 존재하는 투플들의 집합이다.
투플들은 스키마에서 정의한 각 속성에 대응하는 실제 존재하는 데이터 값들이다.
릴레이션 인스턴스를 릴레이션 외연이라고도 하며, 동적인 특징이 있다. - 데이터베이스 스키마: 데이터베이스의 전체 구조이다. 데이터베이스를 구성하는 릴레이션 스키마의 모음이다.
즉 데이터베이스 스키마를 설계한다는 것은 필요한 모든 릴레이션의 스키마를 모두 정의한다는 뜻이다. - 데이터베이스 인스턴스: 데이터베이스를 구성하는 릴레이션 인스턴스의 모음이다.
릴레이션의 특성
- 투플의 유일성 - 하나의 릴레이션에는 동일한 투플이 존재할 수 없다.
- 투플의 무순서 - 하나의 릴레이션에서 투플 사이의 순서는 무의미하다.
- 속성의 무순서 - 하나의 릴레이션에서 속성 사이의 순서는 무의미하다.
- 속성의 원자성 - 속성 값으로 원자 값만 사용할 수 있다. (원자 - 더는 분해할 수 없는 하나의 값)
이제 릴레이션에서 투플들을 유일하게 구별하는 속성 또는 속성들의 집합인 키에 대해 알아보겠다.
키의 종류
키는 관계 데이터 모델에서 중요한 제약조건을 정의한다.
관계 데이터 모델에서는 슈퍼 키, 후보 키, 대체키, 외래 키의 다섯 가지로 분류할 수 있다.
본격적으로 살펴보기 앞서 키의 특성에 대해 알아보겠다.
- 유일성 - 하나의 릴레이션에서 모든 투플은 서로 다른 키 값을 가져야 한다.
- 최소성 - 꼭 필요한 최소한의 속성들로만 키를 구성해야 한다.
슈퍼 키
유일성을 만족하는 속성 또는 속성들의 집합이다.
유일성은 키가 갖추어야 하는 기본 특성으로, 하나의 릴레이션에서 키로 지정된 속성 값은 투플마다 달라야 한다는 의미다.
제일 큰 범주를 갖는 키다. 슈퍼 키는 유일성만 만족하면 된다.
후보 키
후보 키는 유일성과 최소성을 모두 만족하는 속성 또는 속성들의 집합이다. 하나의 속성으로 구성된 키는 당연히 최소성을 만족한다.
기본키
후보 키 중에서 기본적으로 사용하기 위해 선택한 키이다. 중요한 키이므로 몇 가지 기준이 존재한다.
- 널 값을 가질 수 있는 속성이 포함된 후보 키는 기본키로 부적합하다.
- 값이 자주 변경될 수 있는 속성이 포함된 후보 키는 기본키로 부적합하다.
- 단순한 후보 키를 기본키로 선택한다.
대체키
대체키는 기본키로 선택되지 못한 후보 키들이다.
외래 키
외래 키는 어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본키가 되는 키다.
다시 말해 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합이 외래 키다.
- 참조하는 릴레이션 : 외래 키를 가진 릴레이션
- 참조되는 릴레이션 : 외래 키가 참조하는 기본키를가진 릴레이션
- 하나의 릴레이션에는 외래키가 여러 개 존재할 수도 있고 외래 키를 기본키로 사용할 수도 있다.
관계 데이터 모델의 제약
관계 데이터 모델에서 정의하고 있는 기본 제약 사항은 키와 관련된 무결성 제약조건이다.
무결성은 데이터에 결함이 없는 상태, 즉 데이터가 정확하고 유효하게 유지된 상태를 말한다.
무결성 제약 조건의 주요 목적은 데이터베이스에 저장된 된 데이터의 무결성을 보장하고,
데이터베이스의 상태를 일관되게 유지하는 것이다.
관계 데이터 모델이 기본으로 포함하고 있는 무결성 제약조건에는 개체 무결성 제약조건과 참조 무결성 제약조건이 있다.
데이터베이스의 상태를 일관성 있게 유지하기 위해서는 두 가지를 모두 만족시켜야 한다.
- 개체 무결성 제약조건 - 기본키를 구성하는 모든 속성은 널값을 가질 수 없는 규칙
- 참조 무결성 제약 조건 - 외래키는 참조할 수 없는 값을 가질 수 없는 규칙.
이상으로 포스팅을 마치겠습니다. 감사합니다.
2022. 12. 13. 09:30 수정 및 복습 마무리
댓글