[SQL/1과목] 엔터티(Entity)란? + 속성/관계
문제를 푸는데, 엔터티의 분류가 여럿있는 것을 알게 되었다. 나는 엔터티도 분류가 된다는 것도 몰랐기에 오늘은 엔터티에 대해서 알아보겠다.
우선 엔터티의 정의, 특징에 대해 알아보고, 그 뒤에 분류에 대해 자세히 알아보겠다! 추가로 속성 및 관계에 대해도 알아보겠다!
엔터티(Entity)
엔터티(Entity)란?
엔터티는 “실체” 혹은 “독립체”라는 의미를 가지고 있으며, 업무에서 필요하고 유용한 정보를 저장·관리하기 위한 대상을 말한다. 사람, 장소, 물건, 사건, 개념 등 명사 형태로 표현할 수 있고, 데이터 베이스에선 테이블과 같다!

엔터티의 주요 구성 요소는 인스턴스와 속성이다. 여기서 인스턴스는 엔터티에 속하는 실제 데이터 하나하나, 즉 행(Row)을 의미하고 속성은 엔터티를 구성하는 항목(Column)이며, 각각의 인스턴스가 가지는 값을 말한다.
예시로, 학생을 들어보겠다! 학생의 경우 학번, 이름, 전공을 가질 수 있을 것이고, 철수라는 학생, 영희라는 학생이 있을 것이다. 그러면 학생이란 엔터티 안에, 철수의 학번 이름 전공, 영희의 학번 이름 전공이 저장될 것이다. 이때 철수와 영희는 인스턴스, 학번,이름,전공은 속성이 될 것이다 !
이때, 그림에서는 단 한개의 속성값이라했는데 왜 학번,이름,전공 속성이 세개지..? 라고 생각할 수 있다!!(실은 내가 처음에 그렇게 생각했다) 근데 그림에서 단 한개라는 것은 속성이 하나라는게 아니라 속성"값"이 하나라는 것이다. 이것은 정규화랑 이어지는 내용이다 ! 정규화에 대한 포스팅은 추후 올리겠다...
이어서 특징에 대해 알아보겠다.
엔터티의 특징
- 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이어야 한다.
- 유일한 식별자에 의해 식별이 가능해야한다.
- 영속적으로 존재하는 인스턴스의 집합이어야 한다. 이때 한 개가 아니라 두개 이상이어야 한다!
- 엔터티는 업무 프로세스에 의해 이용되어야 한다.
- 속성이 반드시 있어야 한다. 이때 속성은 두개 이상이다. (근데 찾아보면, 속성은 최소 하나라고 한다. 알아보니, 이론적으론 하나만 있어도 맞지만 하나만 있을 경우 하나의 속성만 가진 엔터티는 구조적으로 너무 단순해서 다른 엔터티와의 관계 정의나 확장성이 떨어지고, 식별자(Primary Key) + 일반 속성 → 최소 2개는 되어야 의미 있는 데이터 구조로 간주되기 때문에 시험에서는 두개로 간주한다는 것 같다!)
- 다른 엔터티와 최소 한개 이상의 관계가 있어야 한다.
노랭이 책의 부록을 토대로 정리해보았다! 식별자에 대한 내용은 다음 포스팅이 될 예정이니 다음 포스팅도 읽어봐주기!
엔터티가 뭔지 알아봤으니, 분류를 해보겠다.
유/무형에 따른 분류
1. 유형 엔터티
실제로 만질 수 있는 실체, 물리적인 존재로 주로 사람, 사물 등 실재하는 것을 담고있다. 데이터로 관리할 필요가 있는 대상으로 실제 세계에서 구체적이고 직접적으로 존재한다. 예를들어 학생, 교수 등등이 있다.
2. 개념 엔터티
물리적으로는 존재하지 않지만, 관리가 필요한 개념적 정보으로 분류 조직 이런것들이 여기에 속한다. 과목, 학과 등이 예시로 얘네는 물리적 존재는 안하지만, 개념적 정보이다.
3. 사건 엔터티
시간에 따라 발생하는 행위나 사건 중심의 엔터티로 주로 프로세스, 이력, 트랜잭션과 관련되어 있다. 보통은 다른 엔터티 간의 관계 결과로 생성되며 예시로 수강신청, 성적 등이 될 수 있다.
발생 시점에 따른 분류
1. 기본, 키 엔터티
가장 기본이 되는 독립적 객체로자체 식별자(PK)를 가지고 있으며, 다른 엔터티에 의존하지 않고도 존재할 수 있다.
학생, 과목이 기본 엔터티라고 볼 수 있다.
2. 중심 엔터티
기본 엔터티들 간의 관계에서 파생된 엔터티로 주로 비즈니스의 핵심 개념을 표현하고, 두 개 이상의 기본 엔터티와 연결된다.
수강신청이라는 엔터티가 중심 엔터티로 볼 수 있으며, 이 수강신청 엔터티는 학생과 과목 이 두 엔터티와 연결되어 있을 것이다!
3. 행위 엔터티
중심 엔터티를 기반으로 발생하는 상세 활동/이력을 담고있다. 가장 자주 변경되며, 상세하고 반복적인 업무 처리를 위한 엔터티이다.
예시로 성적, 출석 이런 것들이 있다.

학생이란 엔터티(기본엔터티1)와 과목이란 엔터티(기본엔터티2)와 수강신청(중심엔터티)은 연관되어있다. 그리고, 이 수강신청의 엔터티를 통해 성적(행위엔터티), 출석(행위 엔터티)이란 엔터티가 발생한다. 한 학생의 수강 신청 이력에서 성적이 산출되고, 그 수강신청한 것에 대해서 출석 또한 관리되기 때문이다.
이렇게 엔터티에 대해 알아봤다. 이어서, 엔터티와 같이 보면 좋을 속성(attribute) 및 관계(relationship)에 대해 알아보겠다!
속성(Attribute)
속성은 위에서도 말했듯이, 엔터티를 구성하는 항목(Column)이며 각각의 인스턴스가 가지는 값이다. 바로 특성 및 분류 등에 대해 알아보겠다.
속성의 특징
- 속성은 더이상 분리가 되지 않으며, 최소의 데이터 단위이다!
- 업무에서 관리되는 정보이어야 한다.
- 한 속성에 대해서 하나의 속성값만 가질 수 있다.
- 주식별자에 함수적 종속성을 가져야 한다.
여기서, 함수적 종속성이 무엇일까? 함수적 종속성이란, 주식별자가 정해지면 그에 따라 속성의 값이 고유하게 결정된다는 것이다! 주식별자 값이 바뀌면 속성 값도 바뀌어야되고, 주식별자 값이 같다면 속성 값도 같아야되는 것이다. 그래서, 주식별자(기본키)를 보면 데이터를 유일하게 식별할 수 있어야 한다.
예를들면, 학생이란 엔터티에서 기본키가 학번이라고 해보자. 그럼 한 데이터에는 2023125037해서 학번(기본키)이 주어져있을 것이다. 이 학번 하나가 정해지면 학생의 학과와 이름은 무조건 정해져있다. 2023125037은 무조건 소프트웨어학과, 이비인 것이다. 만약 학번이 바뀐다면, 이름이든 학번이든 바뀌게 될 것이다. 이것이 함수적 종속성이다! 이 함수적 종속성은 정규화와 연관되어 있다. 추후 정규화와 함께 더 자세히 알아보자.
분류
1. 특성에 따른 분류
- 기본 속성 : 비즈니스 프로세스에서 도출할만한 본래의 속성으로 업무 분석을 통해 추출한 모든 속성이다. 가장 일반적이 다수를 차지하며, 코드성 데이터, 엔터티 식별을 위한 일련번호 등 대부분의 속성이 기본 속성이다.
- 설계 속성 : 데이터 모델링 과정에서 발생되는 속성으로 데이터모델링을 위해 만들어진 것이다.
- 파생 속성 : 다른 속성에 의해 만들어진 속성으로, 데이터를 조회할 때 빠른 성능을 낼 수 있도록 학기 위해 원래 속성값을 계산하여 저장한다.
2. 엔터티 구성 방식에 따른 분류
- 기본키 : 엔터티의 각 인스턴스를 유일하게 식별하기 위한 대표 속성으로 PK, 주식별자 라고도 불린다.
- 외래키 : 다른 엔터티의 기본키를 참조하여 관계를 표현하는 속성으로 FK라고도 불린다.
- 일반속성 : 기본키나 외래키가 아닌, 엔터티의 부가 정보를 담는 일반적인 속성이다.
3. 의미 분할가능여부에 따른 분류
- 복합속성 : 여러 세부 속성으로 나눌 수 있는 구조적인 속성이다. 예를들어 주소는 시, 구, 동으로 나뉠 수 있다.
- 단순속성 : 더 이상 나눌 수 없는 단일 정보 단위의 속성이다.
4. 가질 수 있는 값의 개수차이에 따른 분류
- 다중값 속성: 하나의 엔터티가 여러 개의 값을 가질 수 있는 속성이다. 예를들어 전화번호가 이에 속한다.
- 단일값 속성 : 하나의 엔터티에 단 하나의 값만 존재하는 속성이다. 예를들어 주민번호가 여기에 속한다.
속성의 명칭 부여
속성은 엔터티에서 중요한 요소이다. 그렇기에, 속성에 명칭 부여할 때에도 규칙이 있다.
- 해당 업무에서 사용하는 이름을 부여해야한다.
- 서술식 송성명은 사용하지 않는다.
- 약어 사용은 가급적 제한한다.
- 전체 데이터 모델에서 유일성을 확보하는 것이 좋다.
이렇게 속성에 명칭을 부여할때에 규칙이 있는 것 처럼, 속성의 값에도 규칙이 있다. 각 속성은 가질 수 있는 값의 범위가 있는데, 이를 도메인(Domain)이라고 한다. 엔터티 내에서 속성에 대한 데이터 타입과 크기 그리고 제약사항을 지정하는 것이다!
예를들어, 나이라는 속성이 있다면 이의 범위는 무조건 0이상이 될 것이며, 현실적인 숫자일 것이다. 이러한 범위를 도메인이라고 한다.
관계(Relationship)
마지막으로 관계에 대해 알아보겠다. 관계는 두 개 이상의 엔터티(Entity) 간의 연관성이나 상호작용을 표현한 것으로 엔터티들이 어떻게 연결되어있는지를 나타내고 있는 것이다. 이 관계의 분류 및 표기법 등에 대해 알아보자.
관계의 분류
1. 존재에 의한 관계 (UML에서 연관 관계와 유사)
말 그대로 존재의 형태에 따라 생성되는 관계로, 예시로 들면 학생과 학교가 있다. 학생은 학교에 소속되며 존재 기반이다.
2. 행위에 의한 관계 (UML에서 의존 관계와 유사)
말 그대로 행위의 발생 여부에 따라 생성되는 관계로, 예시로 들면 학생과 프린터로 들 수 있다.
관계의 표기법
이러한 관계를 표기할때의 표기법 또한 있다.
- 관계명 : 관계의 이름
- 관계차수 : 1:1, 1:M, N:M
- 관계선택사양 : 필수관계, 선택관계

두 엔터티 사이에서 관계에 대해 확인해야할 사항
- 두 개의 엔터티 사이에 관심 있는 연관규칙이 존재하는가?
- 두 개의 엔터티 사이에 정보의 조합이 발생되는가?
- 업무기술서, 장표에 관계연결을 가능하게하는 동사(verb)가 있는가?
- 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?
이번 포스팅에서는 엔터티와 속성, 관계에 대해서 알아보았다. 다음에는 식별자에 대해 알아볼 예정이다!