본문 바로가기
카테고리 없음

[SQL] 데이터모델링(2)

by holy_jjjae 2023. 10. 31.

Abstract

 개념적 데이터 모델 중 대표적으로 많이 사용되는 것이 개체-관계모델(E-R Model)이다. 논리적 데이터 모델로는 관계 데이터 모델(relational data model)이 가장 많이 사용된다. 개체-관계 모델은 개체(Entity)와 개체 간의 관계를 이용해 현실 세계를 개념적 구조로 표현하는 방법이다. 현실 세계를 개체-관계 모델을 이용해 개념적으로 모델링하여 그림으로 표현한 것을 개체-관계 다이어그램(E-R 다이어그램)이라 한다.

개체(Entity)

 현실 세계에서 조직을 운영하는데 꼭 필요한 사람이나 사물과 같이 구별되는 모든 것을 의미한다.

 

  • 저장할 만한 가치가 있는 중요 데이터를 가지고 있는 사림이나 사물  ex) 고객, 책
  • 개념이나 사건처럼 개념적으로만 존재하는 것도 개체가 될 수 있음  ex) 학과, 과목
  • 다른 개체와 구별되는 이름을 가짐
  • 각 개체만의 고유한 특성이나 상태, 즉 속성을 하나 이상 가지고 있음

  • 개체를 고유한 이름과 속성들로 정의한 것을 개체 타입
  • 개체를 구성하고 있는 속성이 실제 값을 가짐으로써 실체화된 개체를 개체 인스턴스
  • 특정 개체 타입에 대한 개체 인스턴스들을 모아놓은 것을 개체 집합

E-R 다이어그램에서는 개체를 사각형을 표현하고 사각형 안에 개체의 이름을 표기함.

 

속성

 속성은 개체가 가지고 있는 고유한 특성이다. 속성은 그 자체로만으로는 의미가 없지만 관련 있는 속성들을 모아 개체를 구성하면 하나의 중요한 의미를 표현할 수 있다.

  • E-R 다이어그램에서는 속성을 타원으로 표현하고 타원 안에 속성이름을 표기함
  • 해당하는 개체와 연결하면 됨

속성의 분류

단일 값 속성과 다중 값 속성

  • 특정 개체를 구성하는 속성 값이 하나면 단일 값 속성 ex) 이름
  • 속성이 값을 여러 개 가질 수 있으면 다중 값 속성으로 분류 ex) 연락처 – 집/휴대폰

 

단순 속성과 복합 속성

  • 의미를 더는 분해할 수 없는 속성, 즉 의미가 하나인 속성을 단순 속성
  • 의미를 분해할 수 있어 여러 개의 의미를 포함하는 속성을 복합 속성으로 분류
  • 즉, 단순 속성이 여러 개 모여 만들어진 속성으로 볼 수 있음

ex) 주소 -> ///우편번호

ex) 생년월일 -> //

유도속성

  • 실제로 값을 저장하고 있는 것은 저장 속성이고, 유도 속성은 필요할 때마다 계산되므로 값을 따로 저장할 필요가 없음

ex) 저장 속성인 출생 년도에서 나이 속성을 유도하는 것

ex) 책 개체가 가지고 있는 가격, 할인율 속성과 해당 속성들에서 유도되는 판매가격

→ 유도 속성은 E-R 다이어그램에서 점선 타원으로 표현

 

널 속성

  • 널(null) 값은 DB에서 여러 가지로 중요한 의미를 지니므로 의미를 정확히 이해해야 한다.
  •  널 값이 허용되는 속성을 널 속성이라고 한다.

(null)?

아직 결정되지 않았거나 모르는 값을 의미 또는 해당되는 값이 없는 즉 존재하지 않는 값의 경우도 널 값이라 함, 공백이나 0과는 다름

 

ex) 한 명의 고객 개체 인스턴스의 등급 속성 값이 널 값이면 가입 시 고객이 취미를 입력하지 않았음을 의미

ex) 고객 개체 인스턴스의 취미 속성이 널 값이면 가입 시 고객이 취미를 입력하지 않았음을 의미

ex) 사원 개체를 구성하는 병역 속성은 사원 개체 인스턴스의 성별이 여자인 경우에는 해당 사항이 없으므로 널 값을 가질 수밖에 없음

 

키 속성

  • 개체를 구성하는 속성들 중에서 각 개체 인스턴스를 식별할 수 있는 역할을 하는 속성
  • 어떤 경우에는 키를 둘 이상의 속성들로 구성하기도 함

ex) 고객 개체에 고객아이디 속성이 없는 경우에는 (고객명+집전화번호) 속성을 조합하여 키를 구성

→  키 속성은 E-R 다이어그램에서 밑줄을 그어 표현

 

관계(relationship)

  • 개체와 개체가 맺고 있는 의미 있는 연관성으로, 개체-관계 모델의 중요한 요소
  • 관계는 개체 집합들 사이의 대응관계, 즉 매핑을 의미
  • 관계도 개체처럼 속성을 가질 수 있음
  • 관계를 맺음으로써 발생하는 중요한 데이터들이 관계의 속성이 됨
  • 관계는 E-R 다이어그램에서 마름모로 표현

ex) 고객이 책을 구매하면 발생하는 구매일자, 결제방식 등이 구매 관계의 속성이 됨

관계의 유형

  •  관계에 참여하는 개체 타입의 수를 기준으로 이항 관계, 삼항 관계, 순환 관계로 나눔
  •  이항 관계는 개체 타입 2개가 맺는 관계, 삼항 관계는 3개, 순환 관계는 개체 타입 1개가 자기 자신과 맺는 관계

 

+ 매핑 카디널리티(8)?

관계를 맺는 두 개체 집합에서 각 개체 인스턴스가 연관성을 맺고 있는 상대 개체 집합의 인스턴스 개수를 의미

 

→  일대일, 일대다, 다대다 세 가지 유형으로 나뉨

 

 

1) 일대일 관계

 개체 A의 각 개체 인스턴스는 개체 B의 개체 인스턴스 하나와 관계를 맺을 수 있고, 개체 B도 개체 A의 개체 인스턴스 하나와 관계를 맺을 수 있다면 두 개체의 관계는 일대일 관계이다.

 

ex) 남편 개체-아내 개체 : 혼인 관계

 

 

2) 일대다 관계

 개체 A의 각 개체 인스턴스는 개체 B의 개체 인스턴스 여러 개와 관계를 맺을 수 있지만, 개체 B의 각 개체 인스턴스는 개체 A의 개체 인스턴스 하나와만 관계를 맺을 수 있다면 두 개체는 일대다 관계이다.

 

ex) 부서 개체-사원 개체 : 소속 관계

 

 

3) 다대다 관계

 개체 A의 각 개체 인스턴스가 개체 B의 인스턴스 여러 개와 관계를 맺을 수 있고, 개체 B의 각 개체 인스턴스도 개체 A의 인스턴스 여러 개와 관계를 맺을 수 있다면 두 개체는 다대다 관계이다.

 

관계의 참여 특성

1) 필수 참여와 선택 참여

  • 개체 A와 B 사이의 관계에서, 개체 A의 모든 개체 인스턴스가 관계에 반드시 참여해야 된다면 개체 A가 관계에 ‘필수적 참여한다’ 또는 ‘전체 참여한다’ 라고 함.
  • 개체 A의 개체 인스턴스 중 일부만 관계에 참여해도 되면 개체 A가 관계에 ‘선택적 참여한다’ 또는 ‘부분 참여한다’ 라고 함.
  • 개체가 관계에 선택 참여하는지, 필수 참여하는지는 DB 설계 과정에서 중요하게 고려해야 되는 사항
  • DB를 구축한 후에 새로운 개체 인스턴스를 삽입하거나, 기존 개체 인스턴스를 삭제, 변경할 때 제약 사항으로도 활용
  • 필수적 참여 관계는 E-R 다이어그램에서 이중선으로 표현

ex) 고객 개체와 책 개체 사이의 구매 관계, 모든 고객이 책을 반드시 구매해야 한다는 제약조건

 

2) 관계의 종속성

 두 개체가 관계에 대해 종속적인 특성을 가지는 경우, 개체 B가 독자적으로는 존재할 수 없고 다른 개체 A의 존재 여부에 의존적이라면, 개체 B가 개체 A에 종속되어 있다고 함.

 

   개체 A가 존재해야 개체 B가 존재할 수 있고 개체 A가 삭제되면 개체 B도 함께 삭제되어야 함을 의미 : 존재 종속

   B : 약한 개체, A : 강한 개체

 

ex) 직원 개체와 부양가족 개체 사이의 부양관계

 회사에 새로운 사원이 입사하면 해당 직원의 부양가족에 대한 데이터도 함께 저장하지만, 퇴사하면 퇴사한 직원의 부양가족 데이터도 함께 삭제

   직원 개체 : 강한 개체, 부양가족 개체 : 약한 개체

 

  • 강한 개체와 약한 개체는 일반적으로 일대다 관계이며, 약한 개체는 강한 개체와의 관계에 필수적으로 참여한다는 특징이 있음
  • 약한 개체는 자신이 지닌 속성만으로는 식별이 어려워 일반적으로 강한 개체의 키를 포함하여 키를 구성

 

ex) 계속

  • 직원 개체와 부양가족 개체는 일반적으로 일대다 관계를 맺음
  • 부양하는 직원이 있어야 부양가족도 존재하므로 부양가족은 부양 관계에 필수적으로 참여함
  • 직원 개체에 직원번호라는 키 속성이 존재한다면, 직원번호 속성과 부양가족 이름 속성을 조합하여 약한 개체인 부양가족 개체의 키를 구성할 수 있음 -> (직원번호, 이름)

   부양가족 이름과 같이 약한 개체를 구별해주는 속성을 구별자 또는 부분키라고 함

 

 

E-R 다이어그램

개체를 표현하는 사각형, 개체 간의 관계를 표현하는 마름모, 개체나 관계의 속성을 표현하는 타원, 각 요소를 연결하는 링크로 구성된다. 그리고 일대일, 일대다, 다대다 관계를 레이블로 표기한다.

 

ex) 고객과 책 개체의 구매 관계, 책과 출판사 개체 사이의 공급 관계

논리적 데이터 모델

  • E-R 다이어그램으로 표현된 개념적인 구조를 DB에 표현하는 형태를 결정하는 논리적 데이터 모델링에서는 DBMS 종류가 중요
  • 사용자 입장에서 선택한 DBMS에 따라 E-R 다이어그램으로 표현된 개념적 구조를 DB에 어떤 형태로 저장할지를 논리적으로 표현하는 구조를 논리적 데이터 모델이라 함. (사용자가 생각하는 DB의 모습 또는 구조)
  • 논리적 데이터 모델로 표현된 DB의 논리적 구조가 바로 DB 스키마이다. 논리적 구조는 사용하는 DBMS에 따라 달라진다.
  • 일반적으로 많이 사용되는 논리적 데이터 모델은 관계 데이터 모델로, 2차원 테이블 형태이다. 관계 데이터 모델이 제안되기 전에는 계층 데이터 모델과 네트워크 데이터 모델이 주로 사용됨.

 

1) 계층 데이터 모델

데이터베이스의 논리적 구조가 트리형태

  • 계층 데이터 모델에서는 다대다 관계를 직접 표현할 수 없어 별도의 개체를 추가로 생성하여 표현
  • 계층 데이터 모델은 트리 구조로 표현되기 때문에 루트 역할을 하는 개체가 존재하고 사이클이 존재하지 않음

  • 일대다 관계를 맺는 개체들 사이에는 상하관계가 성립 (부모 개체–자식 개체 : 부모-자식 관계)
  • 부모 개체 하나가 자식 개체를 여러 개 가질 수 있지만, 모든 자식 개체는 부모 개체를 하나만 가질 수 있음

 

2)네트워크 데이터 모델

DB의 논리적 구조가 그래프 또는 네트워크 형태

  • 개체는 사각형으로 나타내고 개체들 간의 관계는 화살표로 나타내는 데, 화살표는 일대다 관계만 표현할 수 있다.

 

  • 두 개체 간의 관계를 여러 개 정의할 수 있어 관계를 이름으로 구별함
  • 일대다 관계만 직접 표현할 수 있으므로 두 개체 사이의 일대다 관계들을 이용해 다대다 관계를 표현
  • ex) 고객 개체와 책 개체의 다대다 관계를 구입과 구매라는 2개의 일대다 관계로 표현
  • 일대다 관계 개체들을 각각 오너와 멤버라 부르고, 이들 사이의 관계를 오너-멤버 관계라 함
  • 계층 데이터 모델부다 개념적 구조를 논리적 구조로 좀 더 자연스럽게 모델링 할 수 있지만 구조가 훨씬 복잡해질 수 있어, 데이터의 삽입, 삭제, 수정 같은 연산과 데이터 검색이 계층 데이터 모델보다 더 어려워지는 문제가 발생함

 

 

3)관계 데이터 모델 (8장에서 자세히!)

DB의 논리적 구조를 표 형태로 표현

 

 일반적으로, DBMS는 논리적 데이터 모델을 하나만 지원하므로 DB를 구축하는 환경에 맞는 DBMS를 먼저 선택한 후 이를 지원하는 논리적 데이터 모델을 선택해야 한다.