나의 개발 성장일지

테이블 연관관계의 주인(보완필요) 본문

개인 공부/스프링부트 개념정리

테이블 연관관계의 주인(보완필요)

qkq5821 2022. 11. 20. 18:35

테이블에서 소유권표기하는법

1개의 칼럼은 1개의 정보가들어가야한다.

희찬테이블->예약한차 칼럼->흰차,검은차 ->불가능

차테이블->흰차(희찬소유),검은차(희찬소유) 이렇게 가능

 

 

 

 

 

페이지당 테이블간 연관관계를 생각하자

Join은 여러테이블에서 정보를 가져오기위함

Fk는 다른테이블에서 연관정보 가져오는 매개체 -> 가져오는테이블에서 기본키여야함

 

1.연관관계의 주인 = FK를 가진 오브젝트

 

 

2.페이지당 기능구현 생각해보기

 

2-1 메인페이지-> 페이징당 게시글(Board테이블)

2-2 상세페이지->작성자(User테이블),,제목과내용(Board테이블),댓글(reply테이블)

2-2-1 SQL방식-> 3개의 테이블을 JOIN하여 가져옴

2-2-2 JPA방식 -> Board테이블만 가져오면됨

2-2JPA의원리

 

2-2-1 페이지에서 테이블간의 관계를 찾아야함

2-2-2 상세페이지->게시글번호클릭(Board테이블기본키)->User외래키,reply외래키->테이블join가져오기

2-2-3 board테이블현황

Board테이블에 replyid가 외래키로 칼럼존재하면 1정규화 원자성이깨진다.

JoinColumn은 테이블에 외래키를 만들어준다

reply는 다수가 올것이므로 JoinColumn사용X->DB 테이블칼럼으로 오면안된다.

Board테이블 Select시 join으로 값구하기위한 재료로 List<apply>에 담아둔다.

2-2-4 mappedby 설정하기 ->외래키는 reply테이블에 board를 사용한다.

2-2-5 Reply테이블 현황

 

board테이블에 댓글을 저장하면 1개의 칼럼에 다수를 저장해야함->정규화깨짐

reply테이블에 댓글당 어떤 게시글에 썼는지 저장해둔다. ->댓글당 어떤게시글에썼는지 적어둠

 

 

2-2-6 테이블참조시 EAGER은 항상 가져오기  LAZY는 선택적가져오기

 

'개인 공부 > 스프링부트 개념정리' 카테고리의 다른 글

Crud 테스트 2  (0) 2022.11.21
DB 칼럼과 Enum제약조건  (0) 2022.11.21
테이블 생성  (0) 2022.11.20
Yml설정하기  (0) 2022.11.16
Lombok과 Maven환경설정  (0) 2022.11.16