본문 바로가기

DataBase

[DB설계] 하나의 게시글에 여러 개의 태그를 등록하고 싶은데 왜 tag테이블이 두 개가 필요한가

하나의 게시글에 여러 개의 태그를 등록할 수 있게 설정해 주려하는데, 

구글링해봐도 모두들 tag테이블을 두 개나 사용하고 있었다..!!!

아니 이게 말이 되나 ? 누가 봐도 board 테이블과 tag 테이블 두개 만들어서 1:N 관계로 해주면 되는 것이 아니였나???

 

그래서 나의 애증관계인 gpt에게 물어봐서 왜 태그 관련 테이블이 하나 더 필요한지 물어보게되었다..!! 뚜둥

 

내가 이해한 대로 기록하자면

 

board 테이블 : 게시글 작성하는 테이블

board_tag 테이블 : board 테이블과 tag 테이블의 관계를 나타냄 (board의 id와 board_tag의 id가 저장)

tag : 게시글에서 작성하는 실제 태그 내용들이 저장 (board_tag의 id와 저장될 name컬럼 필요)

(board_tag 테이블과 tag 테이블의 명이 반대로 되었으면 덜 헷갈렸으려나...)

 

예를 들어서

1번 게시글의 태그 - 사과, 바나나, 프론트엔드

2번 게시글의 태그 - 프론트엔드, 백엔드, 데이터분석

이라면

 

tag테이블에는 실제로 내가 기록한 태그 내용들이 저장된다.

   tag_id    name
   A    사과
   B    바나나
   C    프론트엔드
   D    백엔드
   E    데이터분석

 

board_tag테이블에는 tag_id와 board_id로 관계 저장된다.

   board_id    tag_id
   1    A
   1    B
   1    C
   2    C
   2    D
   2    E

 

이렇게 태그를 나눠서 관리하면 

  1. 중복 태그 방지: 태그 테이블을 사용하면 동일한 태그가 여러 게시글에서 사용될 때 중복 저장되지 않고, 태그 테이블에서 공유될 수 있습니다. 이로써 데이터의 일관성을 유지하고 저장 공간을 절약할 수 있습니다.
  2. 태그 관리 용이성: 태그 테이블을 사용하면 태그를 쉽게 추가, 수정, 삭제할 수 있습니다. 게시글에서 사용하는 태그의 리스트를 관리하기가 용이해집니다.
  3. 태그 검색 및 분류: 태그 테이블을 사용하면 특정 태그를 가진 게시글을 검색하거나, 태그별로 게시글을 분류하는 등의 작업을 쉽게 수행할 수 있습니다.

이러한 이점이 있다고 한다~

 


사실 쓰면서도 헷갈린다;; 흠냐링;;

직접 DB 만들어서 느껴봐야지 완벽 이해 할 것 같다;;

 

티스토리는 진짜 개발자를 위한게 분명한게 표를 마우스로 크기 조절을 못하고 html에서 수정해줘야한다 아오귀찮아

하지만 나 딩딩쓰 안한다

모양이 무엇이 중요허냐 내용이 중요허지~