[DB] ER모델(개체-관계 모델)
ER모델(개체-관계 모델)
개체(Entity)
개체는 현실 세계에서 조직을 운영하는데 꼭 필요한 사람이나 사물과 같이 구별되는 모든 것을 의미한다.
예를들어 서점을 모델링할 때 중요 데이터를 가진 사람인 고객과 중요 데이터를 가진 책이 개체가 된다.
이 과정에서 어떠한 개체를 구성하고 있는 속성이 실제 값을 가짐으로써 실체화된 개체를 개체 인스턴스(Entity Instance) 라고한다.
이 개체 인스턴스들을 모아 놓은 것을 개체 집합(Entity set)이라고 한다.
그리고 데이터베이스에서 실제로 저장하고 관리하는 것이 이 개체 인스턴스들의 모임인 개체 집합이라 할 수 있다.
개체와 속성은 파일 구조에서 레코드와 필드 용어에 대응되며, 개체 타입은 레코드 타입, 개체 인스턴스는 레코드 인스턴스에 대응된다.
ER 모델이란 개체와 개체간의 관계를 이용해 현실 세계를 개념적 구조로 표현하는 방법이다.
여기서 개체는 사람이나 사물 등 구별되는 모든 것을 의미하지만 DB상에서는 어떤 테이블 상의 한 column을 얘기한다.
더 나아가서 개체를 고유의 이름과 속성들로 정의한 것을 개체 타입이라고 하며, 이 개체를 구성하고 있는 속성들이 실 제 값을 가짐으로써 실체화된 개체는 인스턴스, 어커런스 라고 얘기한다.
개체와 속성은 파일 구조에서 레코드와 필드 용어에 대응된다. 그리고 개체 타입은 레코드 타입에, 개체 인스턴스는 레코드 인스턴스에 대응된다.
이러한 개체들의 관계는 ER모델로 나타낼 수 있다.
속성
- 단순 속성:
- 단일 값을 갖고 있는 속성
- 예를들어 고객 개체의 적립금 속성은 단순 값
- 복합 속성:
- 값이 여러개의 의미를 포함하므로, 의미를 분해할 수 있다.
- 예를들어 고객 개체의 생년월일은 연, 월, 일로 세분화가 가능하다.
- 유도(참조) 속성:
- 책 개체의 가격, 할인율 속성으로 계산되어 결정되는 판매가격을 유도속성이라고 할 수 있다.
- 유도 속성은 필요할 때마다 계싼되므로 값을 따로 저장할 필요가 없다.
- 널(null) 속성:
- 널 값은 DB에서 여러 가지로 중요한 의미를 지닌다.
- 널 값은 아직 결정되지 않았거나, 모르는 값을 의미한다.
- 해당되는 값이 없는, 존재하지 않는 값의 경우도 널 값을 의미한다.
- 중요한건 널 값은 값을 아직 갖지 않은 것이므로 공백, 0과는 다르다.
- 키 속성:
- 모든 개체 인스턴스의 키 속성 값이 다르므로 키 속성은 개체 집합에 존재하는 각 개체 인스턴스들을 식별하는데 사용된다.
관계
- 1:1 관계
- 개체 A와 B의 인스턴스 중 각각 하나가 관계를 맺는 상황
- 남편 - 아내
- 1:다 관계
- 개체 A의 각 개체 인스턴스는 개체 B의 개체 인스턴스 여러 개와 관계를 맺을 수 있지만 개체 B의 각 개체 인스턴스는 개체 A의 개체 인스턴스 하나와만 관계를 맺을 수 있다면 두 개체는 일대다 관계다.
- 다:다 관계
- 개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 여러개와 관계를 맺을 수 있고, 개체 B의 각 개체 인스턴스도 개체 A의 개체 인스턴스 여러 개와 관계를 맺을 수 있다면 다대다 관계다.
- 종속성
- 개체 B가 독자적으로는 존재할 수 없고 다른 개체 A의 존재 여부에 의존적이라면, 개체 B가 개체 A에 종속되어 있다고 한다.
- 다시말하면 개체 A가 삭제되면 개체 B도 삭제되어야 한다.
- 위와 같은 의존 여부에 의해 B는 약한(종속) 개체, A는 강한(오너) 개체라 한다.
- 예를들어 학생과 학부모라면, 학생이 없다면 학무모가 없으니 학생 개체가 강한 개체, 학무보 개체는 약한 개체가 된다.