목록[백엔드]/[DB | 학습기록] (7)
개발자로 후회없는 삶 살기
서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술한다. 본론- 실행 계획DBMS가 실행을 할 때 어떻게 쿼리가 실행되는지 분석한 것을 보여주는 것으로 실행 계획을 함으로써 적절한 인덱스를 선택할 수 있다. type은 위에서 부터 조회 속도가 빠른 순이다. 개발자는 ALL을 없애는 방향으로 개발하면 된다. - pk로 검색first name은 중복 가능한 컬럼이라 데이터를 찾고 또 다음 행을 찾는 full scan을 하는데 중복을 불허한 컬럼은 검색할 데이터 1개를 찾고 바로 끝내서 매우 빠르다. 이 처럼 중복을 불허한 컬럼으로 인덱스를 생성하고 단 1건 검색하면 실행 계획 const를 사용한다. pk 검색이 가장 빠르고 일반적으로 pk 검색이 가장 좋다. - UQ로 검색..
서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술합니다. 본론- 인덱스인덱스란 배열의 번호, 책갈피 인덱스 등 빨리 검색을 하기 위한 것 입니다. 인덱스가 없으면 풀 스캔을 해야 찾을 수 있습니다. 인덱스의 특징은 정렬이 되어있습니다. 책의 부록 인덱스를 보면 가나다 순으로 정렬된 인덱스에서 몇 장에 원하는 내용이 있는 지 알 수 있습니다. 이렇게 원하는 데이터 대신에 인덱스를 대신 빨리 찾아 원하는 데이터에 접근할 수 있습니다. - 데이터 베이스 인덱스인덱스 성능 비교를 위한 더미 데이터를 준비합니다. 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 관계에서 많이 본 매핑 테이블의 형태입니다. 따라서 사원 테이블과 취미 테이블이 양쪽에 있을 수 있습니다. 이는 수강 과목의 모습과 유사합니다. 과목과 취미는 과목명이나 취미 이름 외에 다..
서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술합니다. 본론테이블을 만들 때는 만드는 규칙이 있습니다. 테이블을 정확하고 효율적으로 설계하는 법을 알아봅니다. - 기본키와 외래키1. 기본키기본키와 외래키는 DB 설계에서 참조 관계를 다룰 때 정확이 설계해야 하는 부분입니다. 테이블에 동일한 인물이 두 명있거나 같은 데이터가 들어있는 것을 방지하기 위해 pk를 만들어야 합니다. '1001' pk를 중복 입력하면 중복 에러가 발생합니다. 한 번 pk를 넣어두면 같은 pk를 또 넣을 수 없어서 중복을 방지 할 수 있습니다. 기본키는 컬럼 여러개를 조합해서 만들수 도 있는데 후보키 개념의 '유일성과 최소성'을 만족할 수 있으면 기본키의 후보가 될 수 있습니다. 예시로 '학생..