ErdDocs

ER 다이어그램 기호

ER 다이어그램에는 기호 계열이 세 가지 있습니다. 데이터베이스 툴이 그리는 까마귀 발(IE) 표기법, 수업에서 배우는 Chen 표기법, 데이터에 쓰는 UML입니다. 셋 모두 테이블(엔티티)은 상자로, 관계는 상자 사이의 선으로 나타냅니다. 다른 것은 카디널리티를 적는 방식입니다. 카디널리티는 한쪽의 한 행에 다른 쪽의 몇 행이 대응하는지를 뜻합니다. 까마귀 발 표기법은 선 끝에 기호를 그리고, 선 하나를 양쪽 테이블 방향으로 두 번 읽습니다. 아래의 모든 기호는 읽는 법과 함께 ErdDocs가 그렸습니다. 아래 툴에서 내 스키마에 그리는 것과 같은 표기법입니다.

까마귀 발 표기법의 선 끝은 무엇을 뜻하나요

까마귀 발 표기법에서는 모든 것이 선 끝에서 정해집니다. 끝마다 기호가 두 개까지 겹치며, 테이블에 가까운 쪽이 최대, 먼 쪽이 최소입니다.

기호이름읽는 법예
정확히 하나정확히 하나세로선 + 세로선: 최소 하나, 최대 하나주문은 정확히 한 고객에게 속한다
0 또는 10 또는 1원 + 세로선: 선택, 최대 하나고객이 가진 포인트 카드는 최대 한 장
1 이상1 이상세로선 + 까마귀 발: 적어도 하나주문에는 항목이 적어도 하나 있다
0 이상0 이상원 + 까마귀 발: 몇 개든, 없어도 됨고객의 주문은 0개 이상
까마귀 발 표기법 요약 카드. 네 가지 선 끝 기호: 정확히 하나(세로선과 세로선), 0 또는 1(원과 세로선), 1 이상(세로선과 까마귀 발), 0 이상(원과 까마귀 발)까마귀 발 표기법 요약 카드. 네 가지 선 끝 기호: 정확히 하나(세로선과 세로선), 0 또는 1(원과 세로선), 1 이상(세로선과 까마귀 발), 0 이상(원과 까마귀 발)
같은 네 가지 선 끝을 카드 한 장에 모았습니다. 저장하거나, SVG 파일을 밝은 테마 또는 어두운 테마로 내려받으세요.

선 하나를 읽는 법

관계선은 각 테이블 방향으로 두 번 읽습니다. 대표적인 쇼핑몰 예:

orders 방향: 고객은 주문을 0개 이상 가진다. customers 방향: 주문은 정확히 한 고객에게 속한다.customersorders
orders 방향: 고객은 주문을 0개 이상 가진다. customers 방향: 주문은 정확히 한 고객에게 속한다.

스키마를 절반만 알 때 기호가 무엇을 뜻하는지까지 포함한 전체 읽기 규칙은 까마귀 발 표기법 페이지에 있습니다. 어떤 조합을 고를지는 카디널리티 문제입니다.

Chen, 까마귀 발, UML 비교

개념Chen까마귀 발UML
엔티티 / 테이블직사각형컬럼 목록이 든 상자클래스 상자
속성엔티티에 이어진 타원테이블 상자 안의 한 줄클래스 상자 안의 필드
관계엔티티 사이의 마름모양 끝에 카디널리티 기호가 있는 선연관 선
카디널리티마름모 옆의 1, N, M선 끝의 세로선, 원, 까마귀 발다중성 1, 0..1, 1..*, *
기본 키밑줄 친 속성 이름컬럼 줄의 키 표시스테레오타입 또는 속성

요령: 구상 단계에는 Chen, 애플리케이션 코드와 함께 둘 때는 UML, 실제 데이터베이스가 되면 까마귀 발. ErdDocs가 붙여 넣은 스키마로 바로 그리는 것은 마지막 경우입니다.

교과서에 없는 기호: 점선

실제 덤프에는 외래 키가 없는 경우가 많습니다. Rails, Django, Laravel 애플리케이션은 관계를 코드에서 지키고, 데이터베이스는 아무것도 선언하지 않습니다. ErdDocs는 이런 경우를 위해 기호를 하나 더합니다. 실선은 데이터베이스가 선언한 관계, 점선은 컬럼 이름(user_id → users)으로 추정한 관계입니다. 앞의 것은 제약이고, 뒤의 것은 근거 있는 추측입니다.

점선: 덤프에 FOREIGN KEY가 없어, 이름 규칙으로 그은 선.usersposts
점선: 덤프에 FOREIGN KEY가 없어, 이름 규칙으로 그은 선.

실제 스키마에서 보기

아래 툴에 SQL을 붙여 넣으면, 찾아낸 외래 키와 고유 제약으로 모든 선의 「여러」 쪽에 까마귀 발을 그립니다.

내 스키마

자주 묻는 질문

까마귀 발 기호는 무엇을 뜻하나요?

선 끝마다 기호가 두 개까지 있습니다. 테이블에 가까운 쪽이 최대입니다. 세로선은 「최대 하나」, 세 갈래 까마귀 발은 「여러」입니다. 바깥쪽이 최소이며, 세로선은 「적어도 하나」, 원은 「0이어도 됨」입니다. 그래서 원 + 까마귀 발은 「0 이상」, 세로선 + 세로선은 「정확히 하나」로 읽습니다.

Chen과 까마귀 발 중 무엇을 써야 하나요?

교육과 개념 설계에는 Chen. 마름모로 관계를 독립된 요소로 그리므로 수업에 맞습니다. 실제 데이터베이스에는 까마귀 발. 테이블마다 상자 하나에 컬럼을 넣는 모양이 스키마의 실제 모습이기 때문입니다.

다대다 관계는 어떻게 표시하나요?

양 끝에 까마귀 발을 그립니다. 물리 스키마에서 다대다는 중간 테이블(orders와 products 사이의 order_items)로 구현됩니다. 그래서 실제 데이터베이스를 그리는 툴에서는 중간 테이블에 일대다 선 두 개가 모이는 모양이 됩니다.

데이터베이스 툴은 왜 Chen의 마름모와 타원을 그리지 않나요?

물리 데이터베이스에서는 Chen이 따로 그리는 것들이 테이블과 컬럼으로 합쳐지기 때문입니다. 속성 타원은 테이블 상자 안의 한 줄이 됩니다. 관계 마름모는 외래 키 컬럼이나 중간 테이블 중 하나가 됩니다. 이것들을 별도의 도형으로 그리면 다이어그램 크기는 두 배가 되지만 새로 알 수 있는 내용은 없습니다.

관련 페이지