목록전체 글 (293)
개발자로 후회없는 삶 살기
서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술합니다. 본론- 인덱스인덱스란 배열의 번호, 책갈피 인덱스 등 빨리 검색을 하기 위한 것 입니다. 인덱스가 없으면 풀 스캔을 해야 찾을 수 있습니다. 인덱스의 특징은 정렬이 되어있습니다. 책의 부록 인덱스를 보면 가나다 순으로 정렬된 인덱스에서 몇 장에 원하는 내용이 있는 지 알 수 있습니다. 이렇게 원하는 데이터 대신에 인덱스를 대신 빨리 찾아 원하는 데이터에 접근할 수 있습니다. - 데이터 베이스 인덱스인덱스 성능 비교를 위한 더미 데이터를 준비합니다. 30만 행 이상의 직원 데이터입니다. 성이 토마스인 사람을 찾아보면 233 행이 나오고 0.091초에 걸려서 찾았습니다. 이 방법은 30만 건을 전부 다 풀 스캔해 본..
서론join이 일어나는 유형에서 on과 where의 차이를 알아봅니다. 조인할 때 어떤 테이블을 먼저 검색하느냐에 따라 DB 조회 성능에 큰 영향을 주므로 잘 알아둬야 합니다. 본론- 이너조인테이블을 옆으로 붙이는 것을 조인이라고 합니다. emp의 fk 데이터인 deptId의 1, 3과 dept의 pk 데이터에 1, 3을 맞춰서 기준 컬럼(deptId)의 공통 속성을 통해 행이 옆으로 연결됩니다. 1. inner join + on 2. inner join + where이너 조인은 on을 쓰나 where을 쓰나 결과가 같습니다. 조건이 있는 테이블에 먼저 조건을 수행하여 emp 테이블에서 1행을 찾고 전체 dept 테이블과 이너 조인을 하게 됩니다. 3. join + using기준 컬럼의 이름이 같을 때..
서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술합니다. 본론다양한 예제로 ERD를 활용해봅니다. - 카카오톡 대화방이번에는 카카오톡 대화방 ERD를 만들어보겠습니다. 역시 요구사항에 대해 카테고리를 작성하고 그 다음에 상세 요건을 작성하는 방향으로 진행합니다. 다양한 카테고리 중에 대화방에만 집중에서 만들어보겠습니다. -> 카테고리1. 대화방 -> 엔터티1. 회원 2. 대화방 카테고리를 보고 큰 틀이 될 엔터티를 설계합니다. 회원 테이블을 중심으로 대화방에 필요한 엔터티들 중에서 이미지 하단에 보이는 친구 목록, 채팅만 생각합니다. -> 관계회원과 대화방은 M:N입니다. 누구를 먼저 클릭할 지에 따라서 대화방 입장에서는 해당 대화방에 참여한 회원들 목록이고 회원들 입..
서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술합니다. 본론그 동안 배운 것을 활용하여 네이버 영화 DB를 분석하고 ERD를 그려보겠습니다. 먼저 기획자가 기획을 하고 개발자가 그 기획서를 보고 요구사항을 분석하여 기능을 리스트업하고 ERD를 그리는 단계입니다. - ERD 그리기네이버 영화 기획에 맞게 ERD를 그립니다. 요구사항에 대한 리스트를 상세하게 작성할 수도 있지만, 먼저 카테고리를 작성하고, 그 다음에 상세하게 요건들을 작성하면 좋습니다. -> 카테고리1. 영화 소개2. 영화 출연진3. 평점, 리뷰 -> 엔터티1. 영화 2. 관객3. 영화인 카테고리를 보고 큰 틀이 될 엔터티를 설계합니다. -> 관계큰 틀의 관계를 설정합니다. 현재 영화 리뷰 ERD를 설계..
서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술합니다. 본론정규화란 ERD에서 중복 요소를 찾아 제거해 나가는 과정입니다. 제 1, 2, 3차 정규화 정도까지만 알면 됩니다. 1. 1차 정규화1차 정규화는 속성의 데이터는 단일 값을 가져함을 의미합니다. 그렇다고 몇 개인지도 모를 취미의 개수를 여러 컬럼으로 만드는 것도 안됩니다. 이럴 땐 행으로 늘립니다. 행으로 늘리면 사원 번호가 중복 될 수 있기에 사원번호와 취미를 pk로 갖는 테이블을 만들어야 합니다. 이 모양은 M:N 관계에서 많이 본 매핑 테이블의 형태입니다. 따라서 사원 테이블과 취미 테이블이 양쪽에 있을 수 있습니다. 이는 수강 과목의 모습과 유사합니다. 과목과 취미는 과목명이나 취미 이름 외에 다..
서론 ※ 이 포스트는 다음 강의의 학습이 목표임을 밝힙니다. https://www.inflearn.com/roadmaps/149 김영한의 스프링 부트와 JPA 실무 완전 정복 로드맵 - 인프런 | 로드맵 Java, JPA 스킬을 학습할 수 있는 개발 · 프로그래밍 로드맵을 인프런에서 만나보세요. www.inflearn.com:443 본론 실무에서 jpa를 바로 도입하면 망하는 이유는 매핑을 제대로 못해서 그렇습니다. 이번 강의에서는 객체와 테이블을 제대로 설계하고 매핑하는 방법과 jpa 동작방식을 정확히 배웁니다. 1) 객체와 테이블을 제대로 설계하고 매핑하는 방법 2) 복잡한 관계 매핑 3) jpa 동작방법 jpa가 제대로 동작하는 방법을 이해하지 못하면 너무 추상화된 기술이기에 에러 해결을 못합니다...
서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술합니다. 본론테이블을 만들 때는 만드는 규칙이 있습니다. 테이블을 정확하고 효율적으로 설계하는 법을 알아봅니다. - 기본키와 외래키1. 기본키기본키와 외래키는 DB 설계에서 참조 관계를 다룰 때 정확이 설계해야 하는 부분입니다. 테이블에 동일한 인물이 두 명있거나 같은 데이터가 들어있는 것을 방지하기 위해 pk를 만들어야 합니다. '1001' pk를 중복 입력하면 중복 에러가 발생합니다. 한 번 pk를 넣어두면 같은 pk를 또 넣을 수 없어서 중복을 방지 할 수 있습니다. 기본키는 컬럼 여러개를 조합해서 만들수 도 있는데 후보키 개념의 '유일성과 최소성'을 만족할 수 있으면 기본키의 후보가 될 수 있습니다. 예시로 '학생..
서론 스프링 MVC와 데이터 접근 기술을 완강하고 기존 중간점검을 리팩토링합니다. 기획 단계에서 리팩토링 요구사항과 트랜잭션 요구사항이 추가됩니다. 설계는 동일하여 배제하고 진행하겠습니다. 본론 - 프로젝트 기획 단계 => 요구사항 분석 중간점검 2 상품관리 프로젝트를 리팩토링 합니다. => 서비스 기능 설계 정리 1. 설계 : 동일 2. 기능 : 동일 - 개발 시작 1. 도메인별 역할 개발 1) 회원 도메인 기존 패키지 구조를 리팩토링했습니다. 2) 상품 도메인 역시 동일하게 유연성보다 실용성을 따져서 인터페이스를 없애고 빠르게 개발할 수 있는 구조를 선택하여 리팩토링했습니다. JPA를 사용하면 스프링 데이터 JPA와 QueryDSL을 서비스에서 둘 다 사용하도록하여 실용성을 따졌을 것입니다. 2. 도..