ERD(Entity Relationship Diagram) 란?
릴레이션과 속성간의 관계를 쉽게 파악할 수 있는 데이터 관계 다이어 그램
Peter Chen 스타일
→ Ex) 회원 릴레이션에는 이름·회원번호·아이디·생년월일·성별·가입날짜시간·관심사 등 속성이 있을 수 있음
릴레이션은 사각형으로 표시
릴레이션 명은 사각형 안에 표시
속성은 타원으로 표시
튜플들을 식별할 수 있는 기본키(Pk) 속성에는 밑줄을 그어 표시함.
일반적으로 속성은 하나의 정보를 표현하는 단순 속성이며, 생년월일 처럼 연, 월, 일 3가지 데이터를 포함하는 복합 속성인 경우도 있음 (혹은 시간속성에서 시간을 시, 분, 초로 나눌 수 있음)
→ 요구사항에 따라 결정
생년월일 데이터로 부터 [나이] 를 유도해서 데이터를 얻을 수 있는데, 이러한 경우 처럼 메모리에 저장하지 않고도, 기존에 있던 속성으로 얻을 수 있는 속성을 유도된 속성이라고 한다.
성별, 생년월일과 같이 데이터 형식의 기준이 정해져 있지 않는, 취미·관심사 같은 속성에 들어올 수 있는 데이터의 형식이 여러개라면 다치 속성이다.
데이터 속성을 결정할 때, 유도할 수 있는 속성으로 표현할 수 있다면 메모리를 아낄 수 있다.
Martin 스타일 (crow’s foot)
→Ex) 회원 릴레이션에는 이름·회원번호·아이디·패스워드·가입날짜 속성이 있음
튜플들을 식별하는 기본키(Pk)는 회원번호
릴레이션 간의 카디날리티(Cardinality)
관계는 마름모로 표현한다.
위와 같이, 한명의 회원은 여러개의 게시글을 작성할 수 있지만, 하나의 게시글은 한명의 회원에 의해서만 작성된다.
이와 같은 관계를 1:N 관계라고 한다.
→ 여기서 1:N / N:N / N:1 과 같은 수치를 카디날리티(Cardinaliyt)라고 한다.
작성 관점에서는 카디날리티가 1:N 이었지만, 조회 관계에서는 N:N 카디날리티를 갖는다.
참고로 N:N 관계에서는 관계 릴레이션을 필수적으로 새로 생성하여 기본키를 새로 설정해야한다.(무결성을 지키기 위해)
강한 엔티티와 약한 엔티티
릴레이션이 키를 형성하기에 충분한 속성을 가지지 못한 경우, 약한 엔티티라고 함.
강한 엔티티 타입과 결합해야만 고유하게 식별할 수 있다.
약한 엔티티인 반려동물 릴레이션에서 동물 이름은 보조키라고 하고, 강한 엔티티인 회원 릴레이션에서 회원번호를 외래키로 참조 받아야만 식별을 할 수 있다.
전체 참여와 부분 참여 관계
회원 릴레이션 입장에서는 게시글 릴레이션이 부분 참여 관계에 있고
게시글 릴레이션 입장에서는 회원 릴레이션이 전체 참여 관계에 있다. (2 중선 표시)
회원 릴레이션과 게시글 릴레이션이 [조회] 관계에 있다면 어떤 참여 관계일까요?