데이터베이스 모델 설계하는 규칙
RDB와 NoSQL 비교하기RDB와 NoSQL 비교하기
RDB(Relational Database)
관계형 데이터베이스(Relational ...
게시글 댓글 만들면서 모델 설계 이해하기
사용자 테이블
id | username | password | |
1 | sai | 1234 | sai@yahoo.jp |
2 | ssar | 1234 | ssar@nate.com |
게시글 테이블
id | title | content | userId |
1 | 제목1 | 내용1 | 1 |
2 | 제목2 | 내용2 | 1 |
3 | 제목3 | 내용3 | 2 |
댓글 기능 넣기 전에 생각해 봐야할 것
게시글 테이블에 코멘트 관련 칼럼 추가할 수 있나?
id | title | content | userId | comment |
1 | 제목1 | 내용1 | 1 | |
2 | 제목2 | 내용2 | 1 | |
3 | 제목3 | 내용3 | 2 |
댓글 데이터(게시글, 작성자, 작성일)를 하나의 칼럼으로 표현할 수 있는가?
id | title | content | userId | comment |
1 | 제목1 | 내용1 | 1 | ssar, 코멘트1, 2021.09.30 |
2 | 제목2 | 내용2 | 1 | ssar, 코멘트2, 2021.09.30 |
3 | 제목3 | 내용3 | 2 | sai, 코멘트3, 2021.10.01 |
한 칼럼에 여러 데이터를 넣으면 데이터의 원자성이 깨져!!
한 사람 이상의 코멘트를 한 칼럼으로 처리할 수 있나?
id | title | content | userId | comment |
1 | 제목1 | 내용1 | 1 | ssar, 코멘트1, 2021.09.30 mao, 코멘트4, 2021.10.01 |
2 | 제목2 | 내용2 | 1 | ssar, 코멘트2, 2021.09.30 |
3 | 제목3 | 내용3 | 2 | sai, 코멘트3, 2021.10.01 |
한 칼럼에 여러 사람의 댓글 데이터를 넣으면 데이터의 원자성이 깨져!!
결론
댓글 테이블을 따로 만들어야 한다.
댓글 테이블
id | content | userId | boardId |
댓글 번호 | 댓글 내용 | 작성자 번호 | 게시글 번호 |
Foreign Key 공식
Foreign Key는 N:1의 관계에서 N에 넣어준다.
N(FK) 대 1
사용자와 게시글의 관계
사용자 | 게시글 |
1명 | N개 |
하나의 게시글에는 한 사람의 사용자(1)만 있다.
한 사람의 사용자는 여러 게시글(N)을 가질 수 있다.
사용자와 댓글의 관계
사용자 | 댓글 |
1명 | N개 |
하나의 댓글에는 한사람의 사용자(1)만 있다.
한 사람의 사용자는 여러 댓글(N)을 가질 수 있다.
게시글과 댓글의 관계
게시글 | 댓글 |
1개 | N개 |
하나의 댓글은 하나의 게시글(1)만 가질 수 있다.
하나의 게시글은 여러 댓글(N)을 가질 수 있다.