///////
Search
1️⃣

ERD와 스키마 사상

ERD를 관계 스키마로 사상하는 과정에 대해서 알아보자.
스키마로 사상하면 데이터간의 관계를 좀 더 압축해서 볼 수 있고 특정 DBMS로 관계형 모델링하기 수월하다.

ERD를 스키마로 사상하는 순서

강한 엔티티 -> 약한 엔티티 -> 1:1 관계 -> 1:N 관계 -> M:N 관계 -> 다치 속성 사상

강한엔티티

ERD에서 그린 엔티티별로 릴레이션 스키마를 사상해준다. 이때 포함되어 있는 다치 속성은 맨뒤에서 사상하기에 잠시 빼주고, 유도 속성도 고민을 하기 위해 나중에 사상한다.

약한엔티티

약한엔티티의 기본키 튜플에 밑줄 그어준 뒤 강한 엔티티의 기본키와 연결해준다. 그 외 속성은 그대로 사상한다.

1:1 관계사상

아래와 같은 1:1 관계는 사상 방법이 두 가지로 나뉜다.
방법 1) 두 릴레이션을 결합하여 사상일반적 1:1 관계라면 하나로 결합하는것이 좋다.
방법 2) 두 릴레이션으로 분리하여 사상
아래와 같이 결합될 릴레이션에 NULL값이 많을 것이라고 예상되는 경우(ex)부분참여)에 분리한다. 분리를 하면 스토리지를 절약할 수 있는 장점이 있다.

1:N 관계사상

1:N의 관계는 전체참여를 하는 엔티티가 외래키를 사용해서 다른 엔티티의 연결을 만들어주는것이 포인트이다.

M:N 관계사상

M:N 관계에선 새로운 릴레이션이 추가되며, 추가된 릴레이션이 관계의 중점이 되는 두 릴레이션에 의존하는 형태가 된다. ( 의존하는 형태 : 전체 참여한다 ) 예시를보면, 조회 조회기록 릴레이션이 새로 만들어지고, 조회기록 릴레이션은 회원과 게시글 릴레이션 모두에게 전체참여임을 알 수 있다.
새로 만들어진 릴레이션에 관계와 관련된 속성이 있다면 릴레이션에 추가해줄 수 있다. ex) 조회 날짜/시간

다치 속성 사상

다치 속성은 약한 엔티티를 사상하는 것과 유사하게 다른 엔티티에 의존한다. 그러므로 관심사 릴레이션을 새로 추가하고 '회원 번호'와 '관심 이름' 속성을 결합하여 기본키로 한다.
관심사 릴레이션은 누구의 관심사인지 기록하기 위해 회원 릴레이션의 '회원 번호'를 참조한다.

최종적인 관계형 릴레이션 스키마

약한 엔티티와 다치속성의 차이는?

추가적인 속성의 유무가 판단기준
둘은 릴레이션으로 사상하면 결과물이 유사하다. 그러나 근본적인 차이는 추가속성의 유무이다.
반려동물 엔티티는 '동물 이름'과 '동물 생일' 속성이 존재하여 다치 속성으로 분류할 수 없으므로 엔티티 단위로 분류되고,
관심사는 관심에 대한 추가적인 속성이 없으며 '관심 이름' 값만 존재하기 때문에 여러 값을 가지는 다치 속성으로 분류할 수 있다.
관심사도 관심 등록/날짜라는 속성이 추가되면 약한 엔티티로 분류되는 것이 낫다.