엔티티는 현실 세계를 데이터 관점에서 모델링 할 때 사용되는 핵심적인 개념으로 업무의 관심 대상이 되는 정보를 갖고 있거나 그에 대한 정보를 관리할 필요가 있는 유형무형의 사물을 말한다.
객체지향 관점에서 엔티티는 클래스 엔티티의 인스턴스는 객체에 해당한다.
엔티티는 확실한 분류 기준이 없고 특성에 따라 유형 엔티티, 무형 엔티티, 문서 엔티티, 이력 엔티티, 코드 엔티 로 분류한다. 엔티티의 분류는 필수는 아니지만 빠른 설계에 도움을 준다.
엔티티는 다음과 같은 성질을 만족해야 한다.
DB 설계 시 개념화와 단순화를 진행한다. 이런 과정에서 필요한 정보들만 추려내어 DB에 저장해야 하는데 사용하지 않는 데이터를 추가할 필요가 없다. 그렇기에 업무에서 필요한지를 구분해야 한다.
엔티티는 두 개 이상의 인스턴스가 필요하다.
속성에 대한 이야기는 아래를 참조
속성은 엔티티에서 관리해야 할 최소 단위의 정보 항목이며 엔티티는 하나 이상의 속성을 가진다.
엔티티를 공통점을 가지고 있는 다수 개체의 집합으로 본다면 개체의 공통점 중 엔티티에서 필요한 정보는 엔티티의 속성이 된다. 속성은 테이블에서 가로축을 담당한다.
업무 과정에서 관심 대상으로 분류된 정보 항목들이다. 전체 속성 중에서 가장 큰 비중을 차지한다.
유도 속성은 다른 속성의 값을 이용하여 유도되는 속성을 의미한다.
현셀 세계에는 존재하지 않지만, 설계를 보다 효과적으로 할 수 있기 위해 강제적으로 만들어주는 속성이다.
엔티티 간의 관련성을 나타낸다.
예시로 택배 송장 엔티티와 유저 엔티티가 있다고 하면 택배 송장 엔티티는 유저 엔티티와 소속 관계이다. 사용자가 택배를 주문하게 되면 택배 송장 엔티티에서 인스턴스가 생성되고 이 인스턴스는 유저에게 소속된다.
위의 사례에서 유저 엔티티와 택배 송장 엔티티는 소속 관계이다. 두 엔티티는 관계를 가지고 있으며 관계를 가지고 있다는 의미는 공유하는 속성이 있다는 뜻이다. 반대로 공유하는 속성이 없다면 두 엔티티 간의 관계는 없다.
카디널리티는 두 엔티티 간의 관계에서 수적 관계를 표시한다.
1:N은 하나의 인스턴스가 엔티티 다수의 인스턴스와 관련이 있을 때 사용된다.
사용자가 여러 가지 물건을 주문하였다면 택배 송장 엔티티에는 사용자와 관련이 있는 인스턴스가 많을 것이다. 이를 1:N 관계라고 한다.
1:1은 하나의 인스턴스가 엔티티 하나의 인스턴스와 관련이 있을 때 사용된다.
사용자의 아이디를 저장하는 엔티티와 사용자의 정보를 저장하는 엔티티의 인스턴스는 유일무이하며 이는 두 엔티티가 참조한 상황에서도 같다. 이를 1:1 관계라고 한다.
N:M은 다수의 인스턴스가 엔티티 다수의 인스턴스와 관련이 있을 때 사용된다.
카디널리티는 참여의 관계도 표시가 가능하다.
엔티티의 인스턴스가 다른 엔티티의 인스턴스와 관련 있을 수도 있고 없을 수도 있는 경우이다.
사용자가 주문을 넣어 택배 송장 엔티티와 관련 있는 인스턴스가 여러 개일 수 있고 한 번도 주문하지 않아 없을 수도 있다.
엔티티의 인스턴스가 다른 엔티티의 인스턴스와 반드시 관련이 있어야 하는 경우이다.
택배 송장 엔티티에서 사용자 엔티티에 접근할 때 사용자의 정보가 필요하다. 즉 택배 송장 엔티티의 인스턴스와 대응되는 사용자 엔티티의 인스턴스가 꼭 필요하다.
부모 엔티티와 자식 엔티티의 결정 요인은 관계의 참여도에 따라 결정된다. 위의 설명에서 택배 송장 엔티티는 사용자 엔티티를 꼭 필요로 한다. 이때 사용자 엔티티를 부모 엔티티 택배 송장 엔티티는 자식 엔티티가 된다.
주 식별자와 외래식별자는 각각 기본 키와 외래키의 개념에 대응된다.
주 식별자는 앞에 ◆ 혹은 뒤에 (PK)를 붙여주고 외래식별자는 (FK)를 붙여준다.
ERD는 데이터 모델링에서 일반적으로 사용되는 도구이다.