[한화시스템 BEYOND SW캠프 7기] #09. Data modeling / 정규화 / DB DUMP

아로롱·2024년 5월 22일

BEYOND SW CAMP 7

목록 보기
9/30
post-thumbnail

🪡 데이터 모델링

  • 구축할 DB 구조를 약속된 표기법에 따라 표현하고 설계하는 과정.

  • 개념적 데이터 모델링(Relational Schema)

    • Relationship 관계를 중점적으로 표시하는 데이터베이스 구조를 한 눈에 알아보기 위해 그려놓는 다이어그램.
    • ideation 목적으로 사용하는 다이어그램.
  • 논리적 데이터 모델링(ERD : Entity Relationship Diagram)

    • Entity 개체(= 테이블)Relationship 관계를 중점적으로 표시하는 데이터베이스 구조.
    • 백엔드에서 가장 중요하고 필요한 역할 !
  • 물리적 데이터 모델링

    • 최종적으로 데이터 베이스에 실제 테이블을 만드는 SQL문 작업
  • 테이블 간의 참조 관계의 종류

    • mandatory or optional
    • not null이라면 mandatory, nullable이라면 optional

  • 1:n 관계

    • author입장에서의 post와의 관계
  • n:1 관계

    • post입장에서의 author와의 관계
  • 1:1 관계

    • 한 테이블의 레코드가 다른 테이블의 레코드 하나와만 1:1 관계
    • 1:1 관계로 확실하게 보장하기 위해서는 ⭐️fk를 unique설정
    • 1:1 관계 분리 필요성
      - 서비스의 특성을 기준으로 도메인의 명확한 분리를 통해 특정 서비스 변경 사항 발생시 영향도 최소화와 유지보수성 향상
      예시) author테이블과 author_address 테이블로 분리 가능
      💡 한 author 가 여러개의 post 작성 가능 -> author 입장에서는 1 : n
      반대로 post 에 여러 author 지정 X, 여러 post 에 한 author 지정 O -> post 입장에서는 n : 1
  • n:m 관계

    • 만약 여러 author가 posting 글 1개를 수정할 수 있다면 n:m 관계
    • post의 author_id가 multi가 되므로, author_id를 문자열로 하여 여러개 두는 것은 가능.
    • 그러나 정규화가 되지 않는 문제 발생 > n:m 사용도가 낮은 이유 !
    • 해결책
      • 연결테이블을 만들어 1:n, 1:m 관계로 풀어주는 것이 일반적인 해결책
      • author_post와 같은 교차 테이블(Junction Table) 필요
      • author_post는 post와 n:1관계, author와 m:1관계

🔖 정규화

  • 함수적 종속성
    • f(x) = y
    • y는 x의 값에 의해 결정되는 관계로서 y는 x에 종속적이고, 이를 수학적인 표현에서는 y는 x에 '함수 종속적이다' 라고 표현
    • 정규화 관련해서 빈번히 사용되는 표현으로서 a가 b에 함수종속적이다 이면,
      => b의 값에 의해 a가 결정됨을 의미

💾 DB DUMP

  • 데이터 베이스의 구조와 데이터를 SQL 형식으로 추출하는데 사용되는 방식.
  • 데이터베이스 dump 파일 생성
    • mysqldump -u [username] -p [password] [database_name] > dumpfile.sql
  • dump 파일 복원
    • mysql -u [new_username] -p[new_password] [new_database_name] < dumpfile.sql
  • mariaDB가 mysql의 fork 이므로 sql 명령어가 사용 됨.
# local 에서 sql 덤프 파일 생성
mysqldump -u root -p --default-character-set=utf8mb4 board > dumpfile.sql

# dump 파일을 github에 업로드.
# 우분투에서 mariadb 설치
sudo apt-get install mariadb-server
# mariadb 서버 시작
sudo systemctl start mariadb
# mariadb 접속
sudo mariadb -u root -p
# git 에서 가져오기
git clone https://github.com/tteia/mariadb_syntax.git

📌 today

데이터 모델링 개념을 익히면서, draw.io 를 통해 ERD 를 진행한 후
테이블부터 컬럼, 제약 조건까지 모두 만들어보는 40분 실습 타임을 가졌다.
분명 알고 있던 내용인데, 강사님과 함께 작성해보니 어디에 뭘 써야할지 알곘는데,
백지부터 시작해보려니 고작 테이블 3개째 완성하던 때 실습 시간이 종료되었다.

이제 겨우 감 좀 잡았나?! 하던 찰나, 데이터 모델링 파트를 배우고 프로젝트를 대비해
하나 하나 처음부터 구상해보고 작성해보니 지금의 나는 아직 많이 부족하구나,
프로젝트 팀원들에게 큰 도움이 될 수는 없더라도 해가 되지 않도록
정말 열심히 노력해야겠구나. 다시 한 번 마음을 다잡는 시간이 되었다.

앞으로는 한 주 회고록을 작성할 때 개인적인 이야기 보다는,
배운 내용을 한 번 더 점검할 수 있는 시간을 가져보며 글을 작성해야겠다 !

profile
Dilige, et fac quod vis

1개의 댓글

comment-user-thumbnail
2024년 5월 22일

와.. 글보고 자극받고 갑니다! 복습해야겠네요... ㄷㄷ

답글 달기