ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL문법기초(5주차)_데이터모델링
    카테고리 없음 2024. 4. 9. 23:52

     

    개념적 데이터 모델링과 논리적 데이터 모델링 작업을 지원하는 다양한 데이터 모델이 존재하는데, 사용하는 데이터 모델에 따라 현실 세계를 표현하는 개념적 구조나 논리적 구조의 모습이 달라진다.

    개념적 데이터 모델 중 대표적으로 많이 사용되는 것이 개체-관계 모델이고 논리적 데이터 모델로는 관계 데이터 모델이 가장 많이 사용된다.

    개체-관계 모델은 개체와 개체 간의 관계를 이용해 현실 세계를 개념적 구조로 표현하는 방법으로 현실 세계를 개체-관계 모델을 이용해 개념적으로 모델링하여 그림으로 표현한 것을 개체-관계 다이어그램 또는 E-R 다이어그램이라고 한다.

     

    개체(Entity)는 현실 세계에서 조직을 운영하는데 꼭 필요한 사람이나 사물같이 구별되는 모든 것을 말한다.

    즉, 개체는 저장할 만한 가치가 있는 중요 데이터를 가지고 있는 사람이나 사물 등이며, 개념적 모델링을 가장 중요한 요소이다.

    예를 들어 현실 세계의 서점을 개념적으로 모델링할 때 중요 데이터를 가지고 있는 고객과 책이 개체가 된다.

    개체는 사건처럼 개념적으로만 존재하는 것도 될 수가 있다.

     

    개체는 다른 개체와 구별되는 '이름'을 가지고 있고, 각 개체만의 고유한 '속성'을 하나 이상 가지고 있다.

    예를 들어 서점의 고객 개체가 이름, 주소, 연락처, 적립금의 속성으로 구성될 수 있다.

    E-R 다이어그램에서 개체는 사각형으로 표현하고 사각형 안에 개체의 이름을 표기하며, 속성은 타원으로 표현한다.

     

     

    속성은 개체가 가지고 있는 고유한 특성이다.

    특정 개체를 구성하는 속성의 값이 하나면 단일 값 속성, 속성이 여러 개의 값을 가질 수 있으면 다중값 속성으로 분류한다.

    단순 속성은 의미를 더 이상 분해할 수 없는 속성으로 책 개체를 구성하는 이름, 가격 등의 속성도 의미를 나눌 수 없기에 단순 속성으로 분류한다.

    복합 속성은 의미를 분해할 수 있어 값이 여러 개의 의미를 포함하는 속성으로 고객 개체를 구성하는 주소 속성은 도, 시, 동, 우편번호 등으로 의미를 나눌 수 있다.

    널값은 아직 결정되지 않았거나 모르는 값 또는 해당되는 값이 없는 즉, 존재하지 않는 값을 의미한다.

    이처럼 널 값은 값을 아직 갖지 않은 것이므로 공백이나 0(zero)과는 다르다.

    이러한 널값이 허용되는 속성을 널 속성이라 한다.

    키 속성은 값이 개체 인스턴스마다 달라서 속성 값으로 개체 인스턴스를 식별할 수 있는 속성이다.

    만일 키 속성으로 적합한 속성이 여러개면 이 중 하나를 키로 선택해 사용하면 된다.

     

    관계는 개체와 개체가 맺고 있는 의미 있는 연관성으로, 개체 집합들 사이의 대응 관계 즉, 매핑을 의미한다.

    관계도 개체처럼 속성을 가질 수 있다. 관계를 맺음으로써 발생하는 중요한 데이터들이 관계의 속성이 된다.

    예를 들어, 고객이 책을 구매하면 발생하는 구매일자, 결제 방식 등이 구매 관계의 속성이 될 수 있다.

    관계는 E-R 다이어그램에서 마름모로 표현한다.

     

     

    관계도 다양한 기준에 따라 분류할 수 있다.

    데이터베이스 설계과정에서 중요하게 활용되는 관계의 분류 기준은 매핑 원소의 수로 관계를 맺는 두 개체 집합에서, 각 개체 인스턴스가 연관성을 맺고 있는 상대 개체 집합의 인스턴스 개수를 말한다.

     

    - 일대일 관계는 하나의 개체 A의 인스턴스가 상대 개체 B의 인스턴스 하나에 매핑되는 것이다.

     

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

     

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

     

     

    개체 A와 개체 B사이의 관계에서, 개체 A의 모든 개체 인스턴스가 관계에 반드시 참여해야 한다면 개체 A가 관계에 '필수적 참여한다.' 또는 '전체 참여한다'라고 한다.

    만일 개체 A의 개체 인스턴스 중 일부만 관계에 참여해도 되면 개체 A가 관계에 '선택적 참여한다' 또는 '부분 참여한다'라고 한다.

    필수적 참여 관계는 E-R 다이어그램에서 이중선으로 표현한다.

     

    두 개체가 관계에 대해 종속적인 특성을 가지는 경우도 있다.

    개체 B가 독자적으로 존재할 수 없고 다른 개체 A의 존재 여부에 의존적이라면, 개체 B가 개체 A에 종속되어 있다고 한다.

    이는 개체 B가 개체 A가 존재해야 존재할 수 있고 개체 A가 삭제되면 함께 삭제되어야 함을 의미한다.

    이때 다른 개체의 존재 여부에 의존적인 개체 B를 약한 개체라고 하고 다른 개체의 존재 여부를 결정하는 개체 A의 강한 개체하고 한다.

    예를 들어, 직원 개체와 부양가족 개체사이의 관계를 살펴보면, 회사에 새로운 직원이 입사하면 해당 직원의 부양가족에 대한 데이터로 함께 저장하지만 직원이 퇴사하면 퇴사한 직원의 부양가족 데이터도 함께 삭제한다.

    그러므로 직원 개체가 강한 개체가 되고 부양가족 개체는 약한 개체가 된다.

     

    강한 개체와 약한 개체는 일반적으로 일대다의 관계이며, 약한 개체는 강한 개체와의 관계에 필수적으로 참여한다는 특징이 있다.

    앞서 예로 든 직원 개체와 부양가족 개체를 다시 살펴보면 한 직원의 부양가족 중 이름이 같은 사람은 없기에 직원별로 보면 이름 속성이 부양가족을 식별하는 역할을 할 수 있지만 다른 직원의 부양가족 이름과 같을 수 있으므로 이름 속성만으로 부양가족을 구별하기가 어렵다.

    이럴 경우에는 먼저 직원번호 속성으로 직원 개체를 식별하고, 식별된 직원의 부양가족 개체를 이름 속성으로 구별하면 된다.

    즉, 강한 개체인 직원 개체에 직원번호라는 키 속성이 존재한다면 이를 부양 가족의 이름 속성과 조합하여 약한 개체인 부양가족 개체의 키를 구성할 수 있게 된다.

    그렇다면 부양가족 개체의 키는 (직원번호, 이름)이 되고 이름 속성과 같이 약한 개체를 구별해주는 속성을 구별자 또는 부분키라고 한다.

    약한 개체는 E-R 다이어그램에서 이중 사각형으로 표현하고 약한 개체와 강한 개체가 맺는 관계도 이중 마름모도 표현한다.

     

    개체-관계 모델은 현실 세계 사람들의 머릿속에 있는 개념을 모델링하는데 사용되므로 어떤 데이터베이스 관리 시스템을 사용하는지는 상관이 없다.

    하지만 E-R 다이어그램으로 표현된 개념적 구조를 데이터베이스에 표현하는 형태를 결정하는 논리적 데이터 모델링에선 데이터베이스 관리 시스템의 종류가 중요하다.

    논리적 데이터 모델은 사용자가 생각하는 데이터베이스의 모습 혹은 구조이고 논리적 데이터 모델로 표현된 데이터베이스의 논리적 구조가 바로 스키마이다.

     

    데이터들 간의 관계를 표현하는 방법에 따라 다양한 논리적 데이터 모델이 존재하는데 일반적으로 많이 사용되는 모델이 관계 데이터 모델로, 데이터베이스의 논리적 구조가 2차원 테이블 형태이다.

    관계 데이터 모델이 제안되기 이 전에는 계층 데이터 모델과 네트워크 데이터 모델이 주로 사용되었다.

     

    계층 데이터 모델은 데이터베이스의 논리적 구조가 트리 형태이다.

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

    또한 일대다 관계를 맺는 개체들 사이에는 상하 관계를 성립해 상위에 있는 개체를 부모 개체, 하위에 있는 개체를 자식 개체하하고 부모 자식 관계라고 한다.

    계층 데이터 모델에서는 트리 구조의 특성 상 부모 개체 하나가 여러 개의 자식 개체를 가질 수 있지만, 모든 자식 개체는 하나의 부모 개체만을 가질 수 있다는 제약 사항이 존재한다.

     

    네트워크 데이터 모델은 데이터베이스의 논리적 구조가 그래프 또는 네트워크의 형태이다.

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

    네트워크 데이터 모델에서는 계층 데이터 모델과 달리 두 개체 간의 관계를 여러 개 정의할 수 있어 관계를 이름으로 구별한다.

    네트워크 데이터 모델에서는 일대다 관계의 개체들을 각각 오너와 멤버라고 부르고, 이들 사이의 관계를 오너-멤버 관계라 부르는데 계층 데이터 모델과 달리 오너 개체 하나가 멤버 개체 여러 개와 관계를 맺을 수 있고 멤버 개체도 오너 개체 여러 개와 관계를 맺을 수 있다.

     

    네트워크 데이터 모델은 같은 개체들 사이의 관계를 2개 이상 표현할 수 있어 계층 데이터 모델보다 개념적 구조를 논리적 구조로 조금 더 자연스럽게 모델링 할 수 있지만 구조가 훨씬 복잡해질 수 있어, 데이터 삽입, 삭제, 수정과 같은 연산과 검색이 어려워지는 문제가 있다.

     

    최근에는 객체의 개념을 도입한 객체지향 데이터 모델 및 객체지향 데이터 모델과 관계 데이터 모델의 특성을 모두 수용하는 객체관계 데이터 모델이 사용되기도 하지만 여전히 누구나 쉽게 이해할 수 있는 데이터 구조와 데이터의 검색, 삽입, 삭제, 수정 등의 연산을 제공하는 관계 데이터 모델이 인기가 높다.

    일반적으로 데이터베이스 관리 시스템은 하나의 논리적 데이터 모델만을 지원하기에 데이터베이스를 구축하는 환경에 맞는 데이터베이스 관리 시스템을 먼저 선택한 후 이를 지원하는 모델을 선택해야 한다.

     

Designed by Tistory.