데이터 모델링의 이해 - ERD
ERD의 기본 개념에 대해 기술할 페이지
Last updated
ERD의 기본 개념에 대해 기술할 페이지
Last updated
데이터베이스 모델링에서 사용되는 데이터 시각화 도구중 하나입니다. ERD를 통해 데이터베이스로 구현해야할 개체(Entity)와 이 개체들간의 관계(Relationship)를 설정하여 시각화시킬 수 있습니다.
업무의 관심대상이 되며, 관리할 필요가 있는 유형, 무형의 사물을 Entity로 설계합니다.
학생관리프로그램을 예로 들면 학생정보를 관리하기 위하여 학생 Entity를 만들 수 있습니다.
Entity가 관리해야하는 각 정보를 속성이라고 부릅니다.
데이터 모델링관점에서 속성은 더 이상 분리되지 않는 최소한의 데이터단위를 의미합니다.
각 속성은 한개의 값을 가지고 있어야합니다.
모든 Entity는 반드시 2 개 이상의 속성을 가지고 있어야 합니다.
학생 Entity의 속성으로는 학번, 이름, 나이, 주소 등이 있겠습니다.
속성이 가질수 있는 값의 범위를 의미합니다.
도메인을 참고하여 해당 속성이 가지게될 데이터의 타입, 최대 크기, 제약사항등을 지정합니다.
예를 들어 학생 엔티티의 grade(학년)속성의 경우 최소 1, 최대 6의 도메인을 가집니다.
엔티티의 속성으로 구현된 하나의 값을 지칭하는 단어입니다.
예를 들어 학생Entity에 속성으로 학번, 이름 , 나이 가 존재할 경우 아래와 같이 인스턴스를 만들수 있습니다. 즉 , 한 행에서 속성값의 집합을 인스턴스라고 부릅니다.
201801
민경민
20
201802
민경민2
21
서로 다른 엔티티간의 연관성을 관계(Relationship)라고 정의합니다.
서로 관계가 있는 엔티티간에는 공통 속성을 정의하여 데이터를 연결할 수 있습니다.
위 예시를 살펴보면 학생과 수강과목 엔티티는 학번을 통해 두 엔티티가 관련이 있음을 나타내고 있습니다. 만약 민경민학생이 수강하는 수강과목을 얻어오려면 수강과목 엔티티에서 민경민학생의 학번을 찾으면 될것이고, 도덕과목을 수강중인 학생들의 이름을 찾으려면 도덕과목의 학번과 학생의 학번을 대조하여 찾으면 될것입니다.
이렇게 두 엔티티간의 관계를 설정할 때 연결되는 시작 방향의 엔티티에 따라 서로 다른 관계명을 규정할 수 있습니다.(수강한다, 수강된다)
또한 두 관계가 가지는 결합도의 크기와, 관계의 지속여부에 따라 연관관계(Association Relationship)와 의존관계(Dependency Relationship)으로 구분됩니다.
두 엔티티간의 결합도가 상대적으로 높고, 상시 유지되는 관계입니다.
예를 들어 학생과 수강과목과 같이 외래식별자를 통해 두 엔티티는 지속적으로 연결이 되고 있습니다.
두 엔티티간의 결합도가 상대적으로 낮고, 그 관계가 일시적으로만 유지되는 관계입니다.
예를 들어 학생이 수강신청을 하는 순간적인 상황에서 학생 엔티티와 수강신청 엔티티는 일시적으로 관계를 맺어 수강신청을 하는 학생의 정보를 얻어오겠지만, 수강신청이 완료되면 두 엔티티는 서로 독립적으로 존재하게 될 것 입니다.
관계가 있는 두 엔티티간에 수적으로 어떤 관계에 있는지를 나타내는 특성을 의미합니다.
관계차수에는 1:1 , 1:N, M:N의 관계가 존재합니다.
위 학생과 수강과목의 관계차수에 대해서 생각해본다면 1명의 학생은 N개의 수업을 들을수 있고, 1개의 수업에는 M명의 학생이 등록 될수 있으므로 N:M의 관계를 가집니다.
1:1관계의 예시로는 학생 엔티티와 학생증 엔티티와 같이 각 엔티티의 인스턴스가 반드시 1:1로만 존재해야 하는 경우가 있으며 1:N관계의 예시로는 학생 엔티티와 학교 엔티티의 관계를 떠올리면 됩니다. 1개의 학교에는 N명의 학생이 존재할수 있으며 1명의 학생은 반드시 1개의 학교에만 속합니다.
두 엔티티의 관계가 선택사항인지 필수인지를 나타내는 개념입니다.
참여도에는 Mandatory(필수) Optional(옵션) 두 가지 옵션이 존재합니다.
필수참여(Mandatory)는 관계에 있는 한 쪽 엔티티의 모든 인스턴스가 다른 엔티이의 인스턴스와 관계가 있는 경우 설정하며, 선택적 참여(Optional)는 두 엔티티간의 관계가 필수가 아님을 의미합니다.
예를 들어 학생과 학과 엔티티가 있다고 할때 모든 학생은 반드시 학과에 속해 있어야 하므로 학생엔티티는 학과 엔티티에게 있어 필수(Mandatory)참여도를 가집니다.
또 다른 예로 학생과 동아리 엔티티가 있다고 할 때 학생은 동아리에 속할 수도 있고 속하지 않을 수도 있습니다. 이와 같은 관계를 표현할 때는 선택적 참여(Optional)로 표시합니다.
식별자는 엔티티에서 각 인스턴스를 구별(식별) 하기 위한 목적으로 사용됩니다.
식별자는 엔티티와의 관계를 설정할 때나 데이터의 무결성을 유지하기 위하여 사용되는 중요한 자원 중의 하나로 분류별로 다양한 식별자가 존재하며 , 각 식별자의 특징은 중첩될 수 있습니다.
엔티티 내에서 각 인스턴스를 구분할 수 있으며, 대표성을 가지고 있어 다른 엔티티와 참조관계로 연결할 수 있는 식별자입니다.
학생 엔티티에서 학번과 같은 속성이 주식별자가 될 수 있습니다.
주 식별자와 같이 각 인스턴스를 구분할 수 있지만 대표성을 가지지 못하여 다른 엔티티와 참조관계를 연결할 수 없는 식별자입니다.
학생 엔티티에서 학번이 주식별자라면, 주민등록번호와 같이 유니크한 값도 보조식별자로 설정할 수 있습니다. 단, 대표성을 가지는 속성은 학번이므로 타 엔티티에서 보조식별자를 통해 참조관계를 설정할 수 없습니다.
엔티티 내부에서 스스로 생성된 식별자를 의미하며 자신만의 속성으로 인스턴스를 식별할 수 있습니다.
학생 엔티티에서 학번과 같은 속성이 내부 식별자에 해당합니다.
엔티티 안에서 스스로 생성된 식별자가 아닌 타 엔티티와의 관계를 통해 얻어오는 식별자를 의미합니다.
학생과 수강과목 엔티티에서 수강과목의 학생번호가 외부 식별자에 해당합니다.
하나의 속성으로 구성된 식별자를 의미합니다.
학생 엔티티에서 학생번호가 단일식별자에 해당합니다.
여러개의 속성으로 구성된 식별자를 의미합니다.
학생엔티티, 학생별 수강과목 엔티티, 수강과목 엔티티가 존재한다고 할때 학생별 수강과목에서는 학생번호와 수강과목 번호 2개를 합친 복합식별자의 형태로 각 인스턴스를 관리합니다.
해당 엔티티가 본질적으로 가지는 고유한 속성을 통해 인스턴스를 식별하는 식별자를 의미합니다.
학생 엔티티에서 주민번호와 같이 각 학생을 구분할 수 있는 속성을 본질식별자로 채택합니다.
엔티티의 고유성을 보장하기 위해 인위적으로 만들어진 대체된 식별자를 의미합니다.
실세계에 존재하는 자연적인 속성이 아닌, 데이터베이스 관리를 위해 인위적으로 만들어진 랜덤 id, autoincrement(자동증가값)등이 인조 식별자로 활용됩니다.
학생 데이터를 관리하기 위해 데이터베이스에서 자동으로 생성된 숫자형 고유 ID를 학생번호에 저장하여 관리하는 경우 이 학생번호가 인조식별자에 해당합니다.
다른 엔티티에 종속적이지 않고 독립적으로 존재 할 수 있는 엔티티입니다.
다른 엔티티의 참조없이 고유하게 식별이 가능하며, 프로그램의 중요한 개체를 기본키 엔티티로 설정한 후 다른 엔티티에서 기본키 엔티티를 참조하게끔 관계를 형성합니다.
예를 들어 학생과, 수강과목의 관계에서 학생은 수강과목과 상관없이 존재할 수 있으므로 기본키 엔티티에 해당합니다.
다른 엔티티들과의 관계를 통해 중심이 되는 엔티티로 여러 엔티티를 연결하는 중간지점역할을 합니다.
예를 들어 학생과 수강과목의 관계사이에 학생별 수강목록과 같은 중심 엔티티를 추가하여 M:N관계를 1:M:1관계로 만들 수 있습니다.(정규화)
기본 엔티티의 특정 활동/행동에 대한 정보를 기록하는 엔티티입니다.
기본적으로 행동의 중심이 되는 엔티티가 존재해야 하며, 여러 엔티티와 관계를 맺고 있을 수 있습니다.
예를 들면 점수 엔티티가 행위 엔티티에 속합니다. 학생이 시험을 보면 점수 엔티티에 학생이 본 시험 내용이 기록이 됩니다.
식별자 관계와 비식별자 관계는 두 엔티티간에 외래식별자(Foreign Identifier)가 어떤식으로 관계를 맺는지에 따라 결정됩니다. 서로 관계가 있는 두 엔티티간에는 부모-자식 관계가 성립이 되는데, 본인의 주식별자를 상대 엔티티에게 넘겨주는 엔티티는 부모 엔티티, 외래식별자를 전달받는 엔티티는 자식엔티티라고 부릅니다.
예를 들어 학생 - 전공 엔티티 사이에서 학생은 부모, 전공은 자식 엔티티가 됩니다.
#이미지#
식별자 관계는 자식 엔티티에서 외래식별자를 주식별자로 사용하거나, 주식별자의 속성에 추가하여 복합식별자로 사용합니다.
이러한 관계는 부모-자식간의 강한 연결관계를 표현하기 위해서 사용하며, 자식 엔티티는 항상 부모엔티티에게 종속 되어 있습니다.
만약 식별관계의 부모 인스턴스가 삭제된다면 종속된 자식엔티티의 인스턴스도 삭제될것 입니다.
예를 들어 학생과 성적 엔티티가 존재할 경우 성적은 학생 엔티티에 종속적이기 때문에 학생이 삭제될경우 성적 엔티티 또한 삭제되어야 할 것입니다.
비식별자 관계는 자식엔티티에서 외래식별자를 주식별자에 포함시키지 않고 단순한 일반 속성으로 사용합니다.
이러한 관계는 약한 연결관계(Weak Dependency)를 표현하기 위해 사용하며, 자식은 부모에게 종속되어있지 않습니다.
비식변관계에서는 부모엔티티의 변화가 자식엔티티에 영향을 끼치지 않습니다.
예를 들어 학생과 학과 엔티티가 존재할 경우 학과가 사라진다고 해서 학생데이터가 삭제될 일은 없을 것입니다.
이미지 추가
개체(Entity)를 정의한다
개체(Entity)를 다이어그램에 적절하게 배치한다
개체(Entity)간의 관계(Relationship)를 설정한다.
관계명을 기술한다
관계의 참여도를 기술한다
관계의 필수여부를 기술한다.
추가
각 챕터에 이해를 위한 이미지 추가하기 😅
-> 학생, 성적, 과목등 테이블 만들고 필요할때마다 캡쳐후 관계 그려주기.
관계차수, 참여도, 비식별관계에 대한 이미지 추가하기.
+ 전표, 업무기술서에서 연관관계를 찾는 방법 . 굳이?