* ER Modeling은 Data Modeling의 일종으로 Data Modeling은
1) 데이터와 데이터의 관계 표현,
2) Data의 무결성 관리(예시 : 동일 Data가 들어오면 차단시킨다)를 위해 수행한다.
정리하자면,
- 데이터 모델링은 데이터에 대한 사용자의 관점을 표현하기 위한 과정
- 개체와 속성은 개발자가 정하는 것이 아닌 사용자가 정하는 것임 (자동차의 ER모델 분석 -> 사용자가 어떻게 보느냐)
사용자가 모르는 DATA가 있을 수 있는데 이런 경우에는 유추해서 채워넣어야 하는데 이럴 경우에는 검증작업이 반드시 필요하다.
- ER 모델은 사용자의 데이터 모델, 데이터 구조와 사용자 작업 환경하에서 데이터들 사이의 관계를 나타내기 위한 언어
- ER 모델은 개체, 속성, 인식자, 관계/관련성(relationship)을 나타낸다.
- 개체(Entity) - 다른 객체(object)와 구별되며 속성(attribute)으로 이루어진 객체
- 관계 혹은 관련성(Relationship) –> 개체 간의 연관성
- 네모 : Entity(개체) // 명사
- 마름모 : Relationship(관계) // 동사, 명사(Entity)값을 유추해야 하는 경우도 있음, 유추할때는 왜 이렇게 유추하는지 설명이 가능해야 함
- 원 : Attribute(속성)
- Degree : 관계에 연결된 개체의 수
- 관계(1:1,1:N)도 유추를 해야하는 경우 설명이 필요하다.
* 이진관계 (Binary Relationship)
DBMS에서는 이진관계이하로만 표현 가능
Cardinality - 관계에 의해 연결될 수 있는 실제 개체의 숫자 (Minimum cardinality, Maximum cardinality), 꼭 명시 해야 함
예시 : (0,1) (1,1)
여기서 Min값이 0인 경우 DBMS에서 Default값이라서 생략 가능 : (0,1) -> 1
* 1번 예시
- 관계에서 속성을 넣은 경우에는 관련 개체의 속성이 중복되는 경우
- (1,N)의 의미 : 입주하는 학생은 최소 1명에서 최대 N명까지
- (0,1)의 의미 : 입주시에 기숙사에 있는 학생은 최소 0명에서 최대 1명까지 // 필수가 아니라는 뜻
* 2번 예시
- (0,N)의 의미 : 직원 중 부양가족이 있을 수도 없을 수도, 건물 중 아파트는 있을수도 없을 수도
- (1,1)의 의미 : 부양가족이 있으면 직원은 무조건 1명 있어야 함 / 아파트가 있으면 건물은 무조건 1채 있어야함
- 더블 박스, 더블 마름모는 : Weak Entity로 1:1 조건이 있어야 함
- 2개는 다른 처리가 필요한 경우도 있다 (직원 중 순직하는 경우 회사에서 부양가족을 챙겨주는 경우)
* 3번 예시
Recursive Relationship 모델 : Entity 1 <-> Relationship 1인 경우
예시문제를 한번 풀어보겠습니다.
왕호 태권도 문제) 왕호 태권도장은 여러 종류의 개인 혹은 그룹 태권 교습을 하고 있다. 개인 교습은 한 학생 당 한 달에 15만원을 받고 있으며 매일 오전 10 시부터 오후 8시 까지 시간 약속에 의해 이루어지는데 개인 교습에는 두 사람 사이의 대련을 많이 지도하고 있다. 그룹 교습은 한 사람 당 8만원을 받는데 학생들을 주 고객으로 하여 하교 시간 이후인 오후 5 시부터 8 시까지 1 시간의 교습을 하고 있다. 왕호 태권 도장에는 전임 사범과 시간 사범이 있는데 전임 사범의 경우 월급을 받으나 시간 사범의 경우 시간 당 수당을 받는다. 또한 왕호 태권도장에서는 태권도의 보급을 위해 한 달에 한번 세 번째 일요일에 태권 대회를 열고 있다. 왕호 태권도장의 관장은 학생과 어떤 종류의 교습을 받으며 각 사범이 어떤 종류의 얼마나 많은 시간을 교습했는지 파악하여 급여를 계산하는 데이터베이스 시스템을 만들고자 한다.
-> 사람마다 다르게 ER모델을 구성할 수 있지만 저는 아래와 같이 ER모델을 구성하였습니다.
* 4번 예시
ER 다이어그램에서 "ISA"는 일반적으로 "is a" 관계를 나타내는 용어로 사용되며, 이는 특정 엔티티가 다른 엔티티의 특별한 형태임을 나타냅니다. 이 구조는 객체 지향 프로그래밍에서 볼 수 있는 상속 개념과 유사하며, 한 엔티티 타입(서브타입)이 다른 엔티티 타입(슈퍼타입)의 모든 특성을 상속받는 것을 표현합니다.
ISA 관계의 특징
상속: 서브타입은 슈퍼타입의 모든 속성과 관계를 상속받습니다. 예를 들어, "직원"이라는 슈퍼타입이 있고 "엔지니어"와 "매니저"라는 서브타입이 있다면, 엔지니어와 매니저는 직원의 모든 속성(예: 이름, 주소, 직원 번호)을 상속받습니다.
특수화와 일반화: ISA 관계는 특수화(specialization)와 일반화(generalization)의 개념을 모두 포함합니다. 특수화는 보다 일반적인 엔티티(슈퍼타입)에서 보다 구체적인 엔티티(서브타입)로 나아가는 과정이며, 일반화는 그 반대 과정입니다.
역할 분화: 서브타입을 사용하면 같은 기본 엔티티가 다양한 역할을 수행할 수 있도록 구분할 수 있습니다. 예를 들어, "동물"이라는 슈퍼타입에 대해 "포유류"와 "조류"라는 서브타입을 정의할 수 있습니다.
-> 결국 Sub Type에 관계에서 발생하는 모델
ER 데이터 모델의 검증
데이터베이스 개발 단계에서 오류 찾아내어 수정 하는 것이
데이터베이스가 적재되고 나서 고치는 것보다 쉽고 비용이 절감된다.
'데이터베이스 관리론' 카테고리의 다른 글
[데이터베이스 관리론] 데이터베이스 관리 (0) | 2024.06.15 |
---|---|
[데이터베이스 관리론] 관계 데이터 모델 (0) | 2024.04.22 |
[데이터베이스 관리론] 정규화에 관하여 (2) | 2024.04.01 |
[데이터베이스 관리론] 데이터 추상화(abstraction)와 DBMS/사용자 그리고 데이터베이스 시스템 개발 단계 (0) | 2024.03.16 |
[데이터베이스 관리론] 데이터베이스의 정의와 데이터 모델 (0) | 2024.03.13 |