반응형

안녕하세요. 신기한 연구소입니다.

 

데이터 모델링에 대한 용어들이 많은데요.

특히 같은 의미인 듯한데 다른 용어를 사용하는 거 같기도 하고

혼동되는 경향이 있더군요.

용어를 쉽게 이해할 수 있게 표현해봤는데 처음 접하는 분들에게 도움이 되길 바라는 마음에

최대한 이해하기 쉽게 설명했습니다.

 

 

 

엔터티(Entity)

업무적으로 분석을 하면 그룹을 선정할 수 있습니다.

임직원, 제품, 계약, 법인카드, 계좌, 거래처 등등..

이렇게 업무 분석 중 도출되는 개체들을 엔터티(Entity)라고 합니다.

 

릴레이션R

관계형 데이터 모델을 구성할 때 사용하는 용어인데

릴레이션R 스키마(Scheme) 과 릴레이션R 인스턴스로 구분할 수 있습니다.

릴레이션R은 애트리뷰트(속성), 튜플, 애트리뷰트값(원자값), 도메인, 인스턴스 용어를 사용합니다.

 

테이블

개념 모델링, 논리 모델링을 거쳐 물리 모델링을 통해 엔터티(릴레이션R)를 기반으로 실제 물리적인 데이터를 저장하는 공간을 테이블이라고 합니다.

 

엔터티(Entity), 릴레이션R, 테이블 관계

개념 모델링 시 추출한 개체를 엔터티라 부르고,

논리 모델링을 통해 물리 모델링으로 엔터티를 테이블로 구성하고

테이블을 관계형 데이터 모델로 정의할 때는 릴레이션R이라고 합니다.

어떻게 보면 셋 다 같은 듯 보이지만,

보통은 개념/논리에서 도출된 엔터티(Entity)를 변환해서 물리의 테이블을 만듭니다.

하지만, 성능 등을 고려해 정규화 또는 비정규화를 통해 물리적인 구성은 변환할 수 있습니다.

그래서 엔터티 그대로 테이블이 되지 않는 경우도 있습니다.

예를 들면 슈퍼/서브타입의 경우가 있답니다.

 

릴레이션R은 조건과 상황에 따라 반드시 테이블과 일치하는 건 아닙니다.

예를 들어서, 애트리뷰트 값에 원자값이 아닌 값이 들어갈 수 있다면 (한 컬럼에 값이 2개, “남, 28세”)

이 컬럼을 갖는 테이블을 만들 수는 있지만 릴레이션R의 정의에 맞지 않습니다.

 

결론은,

개발자가 개발할 때 SQL문에서 사용하는 from 절의 테이블 명은 물리 모델링에서 산출된 테이블이고,

그 테이블을 만들기 위해 설계 시 나온 테이블의 개념적, 논리적 산출물이 엔터티(Entity)이며

그 테이블을 관계형 데이터 모델에서는 릴레이션R이라고 합니다.

 

깁스냐, 캐스팅이냐, 석고냐 같은 듯 다르게 부르는 거라고 보시면 되겠네요. ㅎㅎㅎ

 

결국 개념적 엔터티와 관계형 릴레이션R은 잘 구성되고 최적의 성능을 낼 수 있는 물리적 테이블을 위해 필요한 과정의 산물이라 보면 되겠습니다.

 

애트리뷰트(속성, Attribute)

테이블의 열과 같은 의미이며 도메인 위에 정의된다고 보시면 됩니다.

개발자들은 컬럼명으로 익숙하겠네요.

 

도메인(Domain)

애트리뷰트(속성, Attribute) 값의 범위입니다.

값의 타입과 크기(Char(3), Integer…)의 설정입니다.

성별이라는 컬럼이 있다면 “남/여” 또는 코드값으로 “0/1”등으로 값을 범위를 정하고 char(1)로 타입과 사이즈를 지정하는 것을 도메인(Domain)이라고 합니다.

 

릴레이션R 스키마

릴레이션R 이름(테이블명)과 애트리뷰트(속성)를 릴레이션R 스키마라고 합니다.

개발자가 보는 테이블 명세서/정의서로 이해하면 되겠네요.

 

릴레이션R 인스턴스

테이블을 만들면 해당 컬럼들에 값이 채워집니다.

개발자는 select * from A; 로 검색하면 해당 테이블의 전체 데이터가 나오는데

그 전체 데이터를 인스턴스라고 합니다. 튜플의 집합이라고도 합니다.

 

릴레이션R 스키마와 릴레이션R 인스턴스를 인스턴스R이라고 합니다.

 

튜플/투플

관계형 데이터 모델에서 부르는 (릴레이션R) 인스턴스와 같은 의미로

테이블의 모든 행(데이터)을 말합니다.

 

차수

릴레이션R의 애트리뷰트(속성)의 개수입니다.

테이블의 컬럼 개수로 이해하시면 편합니다.

이 테이블에 컬럼이 5개 있다 = 5차 릴레이션R

 

카디널리티(카디날리티, Cardinality)

튜플의 수입니다.

개발자 분들은 select count(*) form A; 로 얻는 전체 행의 수입니다.

직원 테이블에 직원 10명의 정보가 있다면

카디널리티는 10입니다.

 

데이터 모델링의 3단계

 

개념적 데이터 모델링

업무를 분석하면서 엔터티를 정의하고,

관계를 정의하고,

키를 설정하는 등의 작업을 하는 모델링.

 

논리적 데이터 모델링

상세화 작업을 하는데 정규화도 진행한다.

식별자와 속성을 정의한다.

엔터티 상세화 작업 및 관계 등 작업을 한다.

ERD를 보면 한글명으로 되어 있는데..

분석 설계를 업무 중심으로 논리적으로 진행하므로

현지 언어로 표현하면 쉽게 이해할 수 있겠지요?

 

물리적 데이터 모델링

물리적 저장소 설계 및 테이블, 인덱스, 제약조건 등을 생성합니다.

실제 SQL문에서 사용할 테이블 명과 컬럼명이라

ERD에서 물리 설계는 정의된 영어/영어 약자 등으로 되어 있습니다.

 

잘못된 정보나 수정할 부분이 있으면 댓글 주세요. 

감사합니다.

반응형