도메인 이란 ?
여러개를 비슷한거 끼리 묶어서 하나로 만드는 것.
도메인은 범위를 변경하거나 늘릴 수 있다. ( 범주 )
패키지 도메인 별로 생성해서 관리하기 !

DB 설계
bcnf 정규화, 1정규화, 2정규화, 3정규화 등을 가지고 db 설계하는 시대는 지났다.
예)

배달을 하려면 고객, 사장님 테이블이 필요 (핵심 테이블)
동사테이블은 관계에서 나온다. → 주문 테이블
테이블을 만들 때, 동사가 아닌 명사만 생각하기. (사장님, 고객, 상품, 라이더)
그 이후에 주위의 관계를 볼 때 관계 속에서 중요도가 낮은 짜투리 테이블이 나온다.
1번 Case


게시글 1개는 댓글 여러개를 포함할 수 있다. ( 1 : N )
댓글 1개는 게시글 1군데에 포함된다. ( 1 : 1 )
⇒ 큰 숫자가 우선순위가 되어서 1 : N 관계가 된다.
2번 Case
Board 테이블과 Reply 테이블이 Join 되는 순서를 바꾸었다 (Reply 테이블이 먼저 오도록)

2번 케이스가 훨씬 빠르다. → 각 행을 다 안 뒤져봐도 되니까!
PK 찾아버리고 다른 행은 조회하지 않음!
N : FK : Driving Table ( 엔. 포. 드 )
N인 테이블에 FK 가 있음. 그리고 그 테이블을 driving table 이라고 함
FK가 있는 테이블 → Driving Table
PK가 있는 테이블 → Driven Table
왜 Board 전체를 FK 로 참조하지 않고 Board_id 를 Fk로 참조하는 가?
→ 정규화를 해야하니까.
→ 수정이 필요없는 data 는 Board 로 참조할 수도 있다. Board 로 참조하면 Board (1,제목1, 내용1)
데이터를 Reply 테이블에서 내용을 다 조회할 수 있으니까 더 편하다.
→ 수정이 일어나지 않는 “비정형데이터”에는 이렇게 쓸수도 ?
++ 몽고db나 데이터 관련된 db는 board_id 말고 Board (1, 제목1, 내용1)을 fk로 가질 수 있다.
비정형데이터 -> write 안하고 readonly만 하는 데이터. insert 만 하고 update 안하는 데이터들 !

비정형데이터를 수집할 때, 데이터가 많이 들어오면 한군데서 받음.
그리고 여러 db를 만들어서 분산해서 저장.
메타데이터. 중앙에 있는 데이터.
서버가 여러개면 각 서버의 디비에 같은 pk로 들어가서 조회될때 문제가 발생
(→ PK가 1인 DATA를 줘! 했는데 그게 3개나 있음..)
해결 : uuid같은 걸 써서 해쉬값을 pk를 설정한다. ( 예: SDJFHLSDIL212 )
우리가 쓰는 관계형데이터베이는 이렇게 안하고 하나에 DB에 쓰지만
여러개의 DB를 쓰는 경우 위처럼 PK를 설정할 수도 있다!
규칙 → N : N 일때 중간 테이블(동사)이 나온다.
고객 영화
1 ssar 1. 스파이더맨
2 cos 2 배트맨
1명의 고객은 여러 영화 볼 수있다. ( 1 : n )
여러명의 고객은 1개의 영화를 같이 볼 수 있다. ( n : 1 )
n : n 일때 중간 테이블이 나온다. → 동사 ( 예매 ) → 예매에는 고객의 pk와 영화의 pk 가 필요
규칙 → N 테이블 쪽에 FK 가 있어야 한다. → 엔포드 ( N, FK, Driving )

User : Board
( 1 : N )
→ N인 Board 쪽에 Foriegn Key가 있어야 한다! (user의 pk가 Boad에 있음)
n쪽에 foriegn key 가 있어야 한다.
++
JPA 는 하이버네이트 안에 있는 것
User 1명은 게시글을 여러개 쓸 수 있음
→ user : board = 1 : n
→ 이런 관계는 프로그램을 어떻게 짜냐에 따라 달라진다.
엔포드.
Share article