본문 바로가기
데이터 모델과 SQL

[SQL 이해하기] 3. 데이터의 이해 - 속성과 관계

by 영바이트 2023. 5. 10.

 

엔터티는 데이터로 표현되는 식별 가능한 대상을 의미한다. 그리고 엔터티의 다양한 특징들이 속성(attribute)들로 표현된다. 데이터베이스(DB)에서 엔터티는 테이블로 표현되고 속성들은 테이블의 컬럼들로 표현된다. 그리고 각 속성은 속성값을 값으로 갖는다.

 

속성은 엔터티의 구성 요소여야 한다. 예를 들어 상품 엔터티(상품 테이블)에 가격변경 이력이라는 속성(컬럼)은 관련이 적기에 상품 엔터티의 속성으로는 적당하지 않다. 상품이력이라는 테이블을 따로 만들고 가격변경 속성으로 분리하는 것이 더 좋다.

여기에 더해 속성은 의미상 더 이상 쪼개질 수 없는 원자적인 성질을 가져야 한다. 예를 들어 회원 엔터티의 소속이라는 속성은 그 의미가 불분명하다. 학교가 될 수도 있고 학교 내의 학과가 될 수도 있기 때문이다.

속성들이 갖추어야 할 요건들을 정리하면 아래와 같다.

 

· 속성은 엔터티의 구성 요소여야 한다.

· 속성은 더 이상 쪼갤 수 없는 원자적인 성질을 가져야한다.

· 속성은 의미적으로 명확해야 한다.

 


 

속성들을 특성과 구성 방식에 따라 구분해 볼 수 있다. 먼저 특성에 따라 속성을 분류해 보면 아래와 같다.

 

· 기본 속성(Basic attribute): 대상의 일부분이다. 업무 프로세스 분석을 위해 바로 정의가 가능하다.

· 설계 속성(Designed attribute): 대상의 속성은 아니지만 데이터 관리를 위해 필요한 속성들이다. 예를 들면 인스턴스(Row)들을 식별하기 위한 일련번호 등이다.

· 파생 속성(Derived attribute): 다른 속성들로 부터 파생된 값들이다. 예로써 총 주문수량, 재고량 등을 들 수 있다.

 

구성 방식에 따라 속성들을 분류해 볼 수도 있다.

 

· PK(Primary Key) 속성: 엔터티의 각 인스턴스들에 유일성(Uniqueness)을 부여하는 속성이다. 학번, 사번 등이 해당된다.

· FK(Foreign Key) 속성: 다른 엔터티와 관계를 설명하기 위해 필요한 속성이다. 즉, 다른 엔터티의 PK가 여기에 해당된다.

· 일반속성: 일련번호(PK), 다른 엔터티와의 관계(FK) 외의 나머지 속성들이다.

 

각 속성의 값은 속성의 성질에 따른 값의 종류(데이터 타입)와 범위를 가져야 한다. 이를 도메인(Domain)이라고 한다. 예를 들면 우편번호는 '숫자'라는 데이터 타입과 '5자리'라는 범위를 가지고 있다.

 

이제 엔터티, 속성, 그리고 속성값이 무엇을 의미하는지 알 수 있을 것이다. 이들 사이의 관계에 대해 정리해보자.

 

· 하나의 엔터티는 두 개 이상의 인스턴스를 가져야 한다(하나라면 상수 등을 정의해서 사용하는 것이 좋다).

· 하나의 인스턴스는 두 개 이상의 속성을 가져야 한다(하나라면 역시 상수 등으로 정의해서 사용할 수 있다).

· 한 개의 속성은 하나의 값을 가져야 한다.

 


엔터티의 구성 요소들을 살펴보았다. 이제 엔터티와 엔터티 사이의 관계에 대해 살펴보자. 엔터티 사이의 관계는 연관성에 따라 존재 관계와 행위 관계로 나뉜다.

 

· 존재 관계: 존재 자체로 관계가 있는 경우에 해당한다. 예로써 엄마-아기 관계를 들 수 있다.

· 행위 관계: 행위를 통해 관계가 정의되는 경우에 해당한다. 예로써 학생-출석부 관계는 학생이 출석이라는 행위를 함으로써 관계가 생기게된다.

 

엔터티 사이의 관계는 ER(Entity Relationship) 다이어그램(ERD)을 통해 나타낼 수 있다. 이해를 돕기 위해 그림을 먼저 살펴보자.

 

ERD의 예

 

· 그림에서 사각형은 엔터티를 나타낸다

· 실선부모 엔터티의 식별자가 자식 엔터티의 주식별자인 경우를 나타낸다.

· 점선부모 엔터티의 식별자가 자식 엔터티의 일반 속성인 경우를 나타낸다.

· | 막대는 1개를 의미한다.

· ○ 동그라미는 0개, 즉 Optional을 의미한다.

· ∈ 까치발은 2개 이상, 즉 일반적인 M개를 의미한다.

 

위 ERD를 해석해 보면 아래와 같다.

 

· 회원은 주문이 없을 수 있다.(회원-주문)

· 상품 중에는 주문되지 않는 상품도 존재한다.(상품-주문상품)

· 주문은 반드시 1개 이상의 주문상품이 있어야 한다.(주문-주문상품)

 

ER 다이어그램(ERD)의 구성요소들을 정리하면 아래와 같다.

 

· 관계명(Membership): 관계의 정의. ERD에는 표기하지 않을 수 있다. 예) 주문 - 선택한다 : 주문상품 - 선택된다

· 관계차수(Cardinality): 관계에 참여하는 수. ERD에서 |, ∈ 기호

· 관계선택사양(Optionality): 필수인지 선택인지 여부. ERD에서 ○ 기호.

 

댓글