: Entity Relationship Diagram의 약자로 개체관계도라고 부름
- 요구분석사항을 그림으로 그려 관계를 도출한 그림
- Entity / Relationship / Attribute로 구성
- 서비스에서 ERD는 시스템의 Database구조를 보여준다
[ 예시 ]
- 실제 프로젝트를 하며 사용했던 DataBase
- 재료(item)를 추가하여 재고를 날짜(date)별로 관리하는 시스템
- 게시글(post)를 올려 남는 재고를 교환하는 추가기능
- 각 DB는 각자 기본키를 필수로 가진다(Idx)
: Relational DB에서 다른 Table의 기본키를 자신의 외래키(Foreign key)로
사용할 때 기본키의 역할도 같이 하냐에 따라 Table간 이루어지는 관계
[ 식별 관계 ]
: 부모테이블의 기본키(PK)를 자식테이블에서 외래키(FK)이자
기본키(PF)로 사용하는 관계
- 어떤 user가 어떤 post에 좋아요를 눌렀는지 나타내는 ERD
- likes 테이블은 userIdx / postIdx는 외래키 이면서 기본키로 사용
--> likes 와 user / post 테이블은 ' 식별 관계 '!- MySQL Workbench에서는 실선 === ' 식별관계 ' 를 의미 !
[ 비식별 관계 ]
: 부모테이블의 기본키(PK)를 자식테이블에서 외래키(FK)로만 사용하는 관계
- date 테이블에서 userIdx는 외래키로만 사용된다
--> user와 date테이블은 ' 비식별 관계 '- MySQL Workbech에서 점선 ===' 비식별 관계 ' 를 의미 !
Table간 참조관계에 놓이게 되면, 한 Table이 수정 / 삭제가 되었을 때
관련 Data를 어떻게 처리할 지 미리 설정을 해야한다
--> 이 때 사용되는 옵션 RESTRICT / CASCADE / NO ACTION / SET NULL1) RESTRICT --> 연관된 Table까지 모두 수정 / 삭제 중지!
2) CASCADE --> 연관된 Table의 data도 연쇄삭제 !
3) NO ACTION --> 연관된 Table만 그대로 data 유지 !
4) SET NULL --> 연관된 Table의 data를 null로 대체 !
[ CASCADE ]
- 만약 user가 삭제된다면 연관된 likes / post Table에서 설정이 필요하다
- 삭제되는 user와 관련된 likes / post Table Data를 모두 삭제 해야 한다
--> CASCADE 설정
- MySQL Workbench에서 설정
[ RESTRICT ]
: 참조 관계에 있는 Table의 data가 있을 경우, 삭제를 중지 하는 것이 RESTRICT
- MySQL Workbench에서 수정하는 방법은 CASCADE와 같다
SQL에서 적용시 ' INNER JOIN '과 같은 키워드를 사용해서 할 수 도 있고,
직접 테이블의 요소를 equal로 해서 JOIN문을 만들 수 도 있다
- 키워드를 사용하는 방식과 / 직접 속성을 지정하는 방식의 결과가
조금은 다르게 나오는 경우가 있다- 물론 키워드 사용이 조금 더 편하지만, 뜻대로 안될 때 직접 해볼 것
: 많은 데이터를 처리하는 SQL문을 작성할 때 사용하는 툴
- https://sqlizer.io/#/
- 다양한 파일 형식 (엑셀 / csv / json 등등)
- INSERT 문처럼
귀찮은것 처리에 효율적