개발자입니다
[비트캠프] 66일차(14주차3일) - SQL(ER Diagram, JOIN) 본문
[비트캠프] 66일차(14주차3일) - SQL(ER Diagram, JOIN)
끈기JK 2023. 2. 8. 08:32
테이블 조인 : 테이블 ERD
stnt 와 lect 는 n : n (다 대 다) 관계이다. 이는 데이터베이스로 표현할 수 없다. 이를 1:다 로 변환하기 위해 lect_appl 을 생성한다.
테이블 관계 : addr I····OI〈 memb
식별(identifying) 관계는 실선 : FK = PK
비식별(non-idenfitying) 관계는 점선 : FK ≠ PK
1:多 일 경우 1 이 부모이다. 부모가 多가 되는 경우는 없다.
테이블 관계 : stnt IO I memb
stnt 의 mno 를 pk 및 fk 로 설정한다.
stnt 는 자식테이블, memb 는 부모테이블이다.
테이블 관계 : stnt 〉IO OI〈 lect
stnt 와 lect 는 다 대 다 관계이다. 이때 관계 테이블인 lect_appl을 생성한다.
관계 테이블 : 두 테이블의 관계를 저장한다. 보통 다대다 관계를 해소하기 위해 만든다.
DB 모델링
DB 모델링 → 데이터를 잘게 쪼갠다. 데이터 간의 관계를 정의한다. → 데이터 중복 제거
데이터 중복의 문제
① 데이터 관리가 힘들다.
- 여러 곳에 같은 데이터가 저장
- 변경하려면 여러 곳을 변경해야 한다.
② 변경 누락 발생 → 데이터 결함 발생
JOIN
① cross join(= cartesian join)
좌변과 우변 결합의 모든 경우의 수를 결과로 리턴한다.
② natural join
같은 이름을 가진 컬럼의 값을 기준으로 두 테이블의 데이터를 합친다.
③ join ~ on
두 테이블의 데이터를 조인하는 기준 컬럼의 이름이 다를 경우 사용하는 문법 (pk 컬럼명 ≠ fk 컬럼명)
조언
*함수 따로 공부하지 마라. 현업 선배가 사용한 함수가 새로운거 나오면 그때 찾아보고 공부하라. 5년차 쯤 되면 함수만 따로 공부하라.
*비즈니스 로직(업무 관련 로직)은 자바에서 다루고 join 정도만 SQL 에서 다루라.
*SI 10년차 됐을때 네카라쿠배 자회사로 옮기면 괜찮다.
과제
/
'네이버클라우드 AIaaS 개발자 양성과정 1기 > DBMS, SQL, JDBC, Servlet' 카테고리의 다른 글
[SQL] 예제 소스 정리 - JDBC (0) | 2023.02.09 |
---|---|
[비트캠프] 67일차(14주차4일) - JDBC(JDBC API), myapp-35 (0) | 2023.02.09 |
[SQL] 예제 소스 정리 - ORDER BY, JOIN, 서브 쿼리, GROUP BY, HAVING (0) | 2023.02.07 |
[비트캠프] 65일차(14주차2일) - SQL(트랜잭션, commit, rollback) (0) | 2023.02.07 |
[SQL] 예제 소스 정리 - DDL, DML, DQL (0) | 2023.02.06 |