DB정리는 할껀데 핵심만 할껍니다. - 데이터베이스 모델

1

DB

목록 보기
2/4

데이터베이스 모델

1. 데이터 모델의 개념

데이터 모델 : 데이터베이스의 구조를 단순화, 추상화하여 체계적으로 표현하는데 사용되는 도구로서 그래픽적으로 구현한다. 데이터 모델은 현실세계의 데이터를 추상화한 개념이기 때문에 사람들이 이해하기 쉬워서 원활한 의사소통을 도화주는 역할을 한다.

다음과 같이 class diagram model로 데이터 모델을 한 부분이다.

2. 데이터 모델의 구성요소

데이터 모델은 데이터 구조뿐만 아니라, 구조에서 허용되는 연산, 구조와 연산에 대한 제약조건으로 구성된다.

데이터 구조

데이터 구조는 현실세계에서 선별하여 데이터 베이스에 저장할 데이터에 대한 요소와 이들 간의 관계를 구조적으로 명세하여 표현한 것이다. 이전에 배운 관계형 DBMS의 테이블이나, DB 구조에서의 스키마가 이에 해당한다.

연산

연산은 데이터 구조에 따라 실제 값들을 처리하는 작업에 대한 명세이다.

제약 조건

제약 조건은 결점이 없고 정확하고 유효한 데이터가 데이터베이스에 저장될 수 있도록 하기 위하여 데이터를 조작하는데 한계를 규정한 것이다. 제약 조건에는 구조적 측면의 제약 사항의미적 측면의 제약 사항이 있는데, 의미적 측면의 제약 사항은 연산을 적용하는 경우 허용할 수 있는 제약사항을 의미한다.

3. 데이터 모델의 종류

데이터 모델은 개념적 데이터 모델과 논리적 데이터 모델로 나뉜다.

개념적 데이터 모델은 최종 사용자, 즉 인간이 인식하는 것과 유사하게 데이터베이스의 논리적 구조를 명시한것이다. ER 모델(Entity-Relationship model)이 대표적이다.

다음과 같은 예제가 ER모델이다. 현실세계의 데이터를 ER모델로 개념화하여 보여줬기 때문에 개념적 데이터 모델이라고 부른다.

그러나, 개념적 구조를 컴퓨터에서 처리할 수는 없다. 컴퓨터가 이해할 수 있는 논리적 데이터 모델로 변환해야 하는 것이다. 논리적 데이터 모델은 계층 데이터 모델, 네트워크 데이터 모델, 관계 데이터 모델이 있다. 관계 데이터 모델은 이전에 배운 관계 DBMS의 구조와 같이 테이블 형태로 표현된다.

다음과 같다.

3.1 개념적 데이터 모델

개념적 데이터 모델은 개체(entity)와 속성(attribute) 그리고 개체 간의 관계(relationship)을 이용하여 현실세계에 존재하는 데이터를 추상화하여 개념적 구조로 표현하는 방법이다. ER모델이 대표적인 개념적 데이터 모델이다.

3.1.1 개체(entity)

개체(entity)라는 것은 사람과 사물 같이 유형의 정보를 가진다. 또, 현실세계에 존재하는 실체 혹은 개념, 사건 등과 같이 무형의 정보를 가지고 추상적/개념적으로 존재하는 실체를 말한다.

가령, 서점을 예로들면 점원, 책들이 유형의 사물이 되고 주문과 가격은 무형의 개념, 실체가 될 것이다.

개체는 발생시점에 따라 다음과 같이 3가지로 나눌 수 있다.

  1. 기본 개체 : 원래 업무에 존재하는 정보로, 다른 개체의 관계에 의하지 않고 독립적으로 생성되며 자신은 다른 개체의 부모 역할을 한다. 가령 책과 점원, 회원 같은 것들이 있다.
  2. 중심 개체 : 기본 개체에서 발생하고, 데이터 양이 많다. 중심 개체는 해당 업무에서 중심적인 역할을 하며, 다른 개체와의 관계를 통하여 행위 개체를 생성하기도 한다. 가령 주문, 배송 등이 있다.
  3. 행위 개체 : 두 개 이상의 무보 개체에서 발생되고, 내용이 빈번하게 변경되거나 데이터 양이 증가한다. 초기에는 잘 발견되지 않으며, 나중에 발견된다. 가령 주문 내역 등이 있다.

ERD에서 개체 타입은 직사격형이다.

다음과 같이 간단하게 표현하면 된다.

3.1.2 속성

속성은 개체의 특성이나 상태를 구체적으로 기술하고, 속성값은 개체의 특성이나 상태가 현실화된 값이다.

ERD에서 속성은 기본적으로 타원으로 나타내고, 그 속성이 소속된 개체 타입에 실선으로 연결한다.

다음과 같이 속성은 entity의 속성으로 타원으로 표현되는 것이고 간선으로 관계를 나타낸다.

개체 인스턴스를 다른 개체 인스턴스들과 구별할 수 있게 하는 하나 또는 그 이상의 속성을 식별자( identifier )라고 한다. 또한, 개체를 설명하기 위해서만 존재하는 속성을 설명자 ( descriptor ) 라고 한다.

가령, 우리 국민들의 나이와 이름은 설명자이다. 그러나 주민등록번호는 국민(개체)들을 구분시켜주는 속성이므로 식별자인 것이다.

식별자의 경우에는 ERD에 속성 이름에 밑줄을 그려줌으로서 표시한다.

다음과 같이 회원번호는 회원의 식별자이므로 밑줄을 쳐주기로 한다.

3.1.3 관계

관계(relationship)은 개체와 개체가 맺고 있는 의미있는 연관성을 나타낸다. 그리고 관계는 개체와 개체가 존재의 행태나 행위로서 서로에게 영향을 준다.

ERD에서는 마름모로서 나타내고 관계 타입이 관련된 개체 타입에 실선으로 연결한다.

다음처럼 마름모로서 개체 간의 관계를 표현할 수 있다.

관계 cardinality는 하나의 관계에 실제로 참여할 수 있는 인스턴스 수를 말한다. 가장 일반적인 cardinality의 표현방법은 1:1, 1:M, N:M이 있다.

위의 예제에서는 일 대 다 관계 ( 1 : M)이다. 회원은 책을 여러개 살 수 있지만, 책은 한 명의 회원에게 구매될 수 밖에 없기 때문이다.

ERD에서 관계 cardinality를 표현하는 방법이다.

3.2 논리적 데이터 모델

논리적 데이터 모델은 필드에 기술된 데이터 형식과 이 데이터 형식들 간의 관계를 이용하여 현실세계를 표현하는 방법이다. 이러한 논리적 데이터 모델은 DBMS가 이해할 수 있다.

계층 데이터 모델, 네트워크 데이터 모델, 관계 데이터 모델이 있는데, 우리는 관계 데이터 모델만을 볼 것이다.

3.2.1 관계 데이터 모델

관계 데이터 모델은 데이터베이스의 논리적 구조를 table형태로 표현한 데이터 모델이다. 관계 데이터 모델은 포인터가 아닌 속성 값을 이용하여 관계를 표현한다.

다음과 같이 회원은 자신이 구매한 책을 참조하기 위해서 포인터를 사용하여 들어가지 않는다. 속성값을 이용해서 내가 책 table에서 어떤 책을 삿는지 확인하는 것이다.

관계 데이터 모델은 포인터를 사용하여 참조하는 방식보다 느리지만, 이해하기 쉽고 개발에 있어 편하다는 장점이 있다.

0개의 댓글