NodeJS - DB 관련 정리

김정욱·2020년 12월 12일
1

NodeJS

목록 보기
17/22
post-custom-banner

ERD

: Entity Relationship Diagram의 약자로 개체관계도라고 부름

  • 요구분석사항을 그림으로 그려 관계를 도출한 그림
  • Entity / Relationship / Attribute로 구성
  • 서비스에서 ERD는 시스템의 Database구조를 보여준다

[ 예시 ]

  • 실제 프로젝트를 하며 사용했던 DataBase
  • 재료(item)를 추가하여 재고를 날짜(date)별로 관리하는 시스템
  • 게시글(post)를 올려 남는 재고를 교환하는 추가기
  • 각 DB는 각자 기본키를 필수로 가진다(Idx)

식별 vs 비식별 관계

: 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에서 점선 ===' 비식별 관계 ' 를 의미 !

CASCADE / RESTRICT

Table간 참조관계에 놓이게 되면, 한 Table이 수정 / 삭제가 되었을 때
관련 Data를 어떻게 처리할 지 미리 설정
을 해야한다
   --> 이 때 사용되는 옵션 RESTRICT / CASCADE / NO ACTION / SET NULL

1) 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와 같다

JOIN

SQL에서 적용시 ' INNER JOIN '과 같은 키워드를 사용해서 할 수 도 있고,
직접 테이블의 요소를 equal로 해서 JOIN문을 만들 수 도 있다


  • 키워드를 사용하는 방식과 / 직접 속성을 지정하는 방식의 결과가
    조금은 다르게 나오는 경우
    가 있다
  • 물론 키워드 사용이 조금 더 편하지만, 뜻대로 안될 때 직접 해볼 것

SQLizer

: 많은 데이터를 처리하는 SQL문을 작성할 때 사용하는 툴


  • INSERT 문처럼
    귀찮은것 처리에 효율적

profile
Developer & PhotoGrapher
post-custom-banner

0개의 댓글