본문으로 건너뛰기
제품 -> ERD가격문서블로그로그인EnglishERD 시작하기

관계와 외래 키

관계(ref)는 테이블 사이의 외래 키를 표현합니다. AI-ERD에서는 캔버스에서 직접 연결하거나 테이블 편집 패널에서 FK를 관리할 수 있습니다.


관계 만들기​

캔버스에서 만들기​

  1. source 테이블의 컬럼 위에 마우스를 올립니다.
  2. target 테이블의 컬럼으로 드래그합니다.
  3. 기본 cardinality >로 ref가 만들어집니다.
  4. 필요하면 편집 패널에서 이름, cardinality, referential action을 조정합니다.

테이블 편집기에서 만들기​

테이블을 선택하고 Foreign Keys 섹션에서 FK를 추가합니다. source 컬럼, target 테이블, target 컬럼을 선택하면 pending FK가 만들어집니다.


자동 제안​

AI-ERD는 컬럼 이름을 바탕으로 FK 후보를 제안합니다. 예를 들어 user_id 컬럼이 있고 users.id가 있다면 이를 연결 후보로 보여줍니다.

명명 규칙을 일관되게 유지하면 초기 스키마 설계 속도가 크게 빨라집니다.


Cardinality​

기호의미
>Many-to-one
<One-to-many
-One-to-one
<>Many-to-many

관계 타입은 캔버스의 연결선에 표시되는 cardinality notation을 결정합니다.


Pending changes 모델​

테이블 편집기에서 FK 변경은 pending workflow를 따릅니다.

  1. 새 FK를 Add하면 pending addition으로 표시됩니다.
  2. 기존 FK를 Edit하면 변경이 staged 상태가 됩니다.
  3. FK를 Delete하면 제거 예정으로 표시됩니다.
  4. Save를 누르면 pending 생성, 수정, 삭제가 함께 커밋됩니다.

이 방식은 컬럼 이름 변경과 FK 변경처럼 관련된 작업을 원자적으로 적용합니다.


On Delete / On Update​

각 관계는 referential action을 지원합니다.

Action동작
No Action참조 row가 있으면 delete/update 거부(기본값)
Cascade참조하는 row도 자동 delete/update
Set NullFK 컬럼을 NULL로 설정
Set DefaultFK 컬럼을 기본값으로 설정
RestrictNo Action과 유사하지만 즉시 검사

관계를 만들거나 편집할 때 설정합니다.


관계 편집과 삭제​

  • Edit: 캔버스의 관계선을 클릭하거나 Refs 탭에서 관계를 찾아 편집기를 엽니다.
  • Delete: 관계를 선택하고 Delete/Backspace를 누르거나 편집 패널의 delete 버튼을 사용합니다.

팁​

  • table_id 같은 naming convention을 따르면 FK 자동 제안이 잘 동작합니다.
  • pending 모델은 partial save를 막습니다. 마음이 바뀌면 저장하지 않고 편집 패널을 닫아 pending 변경을 버릴 수 있습니다.
  • On Delete Cascade는 orders가 삭제될 때 order_items를 함께 삭제하는 것처럼 child table에 유용하지만, 공유 reference table에는 신중하게 사용하세요.