CS/Database

[데이터베이스/DB] 데이터베이스에서 인덱스(INDEX)의 사용

0. 들어가면서 인덱스(Index)는 데이터베이스에서 테이블의 조회 속도를 높여주는 자료구조를 말합니다. 조회 성능의 관점에서 인덱스의 사용은 데이터베이스 안의 레코드를 처음부터 풀스캔(Full Scan)하지 않고, 테이블 내의 컬럼을 색인화하여 B+ Tree로 구성된 구조를 만들고 INDEX 파일 검색으로 속도를 향상시키게 됩니다. 사실 인덱스 자체에 대한 개념은 평소에 우리가 무의식적으로 계속 사용하고 있습니다. List objects = ... Object o = objects.get(index); ... 위와 같이 리스트에서 어떤 자료를 뽑을 때 처음부터 하나하나 세서 해당 위치에 있는 자료를 뽑는 것이 아니라, 인덱스로 바로 접근하여 해당 위치의 데이터를 꺼내오고 있죠. 그렇다면 데이터베이스에서..

2021.11.08 게시됨

CS/Database

[데이터베이스/DB] 관계형 DB에서 JOIN의 개념(Inner join과 Left join)

1. JOIN ? JOIN이란 영어 해석 그대로 두 개 이상의 테이블을 결합하여 데이터를 조회할 때 쓰는 개념입니다. 정규화를 통해 여러 테이블로 나누어진 데이터는 서로 연관관계를 가지고 있을 수 있고, A라는 엔티티를 조회할 때 B라는 엔티티의 부분 정보도 같이 조회하고 싶다면 JOIN 개념이 반드시 필요하죠. 어떻게 보면 JOIN이 필요한 이유는 정규화로부터 파생되었다고 볼 수 있기 때문에, 정규화 개념은 JOIN을 공부하기 이전에 반드시 알아야하는 내용이기도 합니다. 본론으로 돌아와서, JOIN의 예시를 하나 보겠습니다. 위 내용은 게시물(Post)을 조회할 때 게시물을 작성한 유저의 정보와 해당 게시물에 관련된 '좋아요' 정보를 함께 불러오는 JPQL 쿼리입니다. 정규화 과정에 의해 DB 스키마는..

2021.10.26 게시됨

CS/Database

[데이터베이스/DB] 키(Key)의 종류와 개념

1-1. 들어가면서 데이터베이스는 수 많은 테이블과 그 안의 데이터들로 구성되어 있습니다. 그리고 그 테이블은 정렬되지 않고 조직화되지 않은 수천 개, 수만 개의 레코드로 확장되어 있습니다. 이러한 테이블 속에서 특정 레코드를 가져오려면 그 레코드를 유일하게 식별할 수 있는 조건으로 조회하는 작업이 필요한데요. 이 때 필요한 개념이 데이터베이스에서 키(Key)이며, 이번 시간에는 여러가지 키에 대한 개념에 대해 정리해보겠습니다. 우선 키의 정의는 아래와 같습니다. 키(Key): 관계형 데이터베이스(RDBMS)에서 테이블 관의 관계를 설정 및 식별하고, 테이블 내부의 레코드를 고유하게 식별하는 데 사용할 때 사용하는 속성 그리고 밑에서 강한 엔티티 타입과 약한 엔티티 타입을 설명하면서 부분키(Partial..

2021.09.26 게시됨

CS/Database

[데이터베이스/DB] 정규화에 대해서(2) - 제1,2,3 정규형과 BCNF

0. 들어가면서 이전 시간에 정규화는 함수적 종속성과 밀접한 관련이 있다고 했습니다. [데이터베이스/DB] 정규화에 대해서(1) - 이상(Anomaly)과 함수적 종속성(FD) 0. 오버뷰(Overview) 관계형 데이터베이스에서 설계 시 중복을 최소화하기 위해 데이터를 구조화하는 작업을 정규화(Normalization)라고 합니다. 정규화가 왜 필요한지에 대해 이야기하기 위해서, 아래 studyandwrite.tistory.com 릴레이션에는 여러 가지 속성들이 들어가있고, 정규화라는 것은 함수적 종속성을 이용해서 릴레이션을 연관성있게 구성하고 이상(Anomaly)을 없애는 과정이었죠. 정규화에는 크게 제1, 제2, 제3, BCNF 정규형이 있습니다. 각 정규형은 그 단계가 커질수록 그 이전 단계의 정..

2021.09.15 게시됨

CS/Database

[데이터베이스/DB] 정규화에 대해서(1) - 이상(Anomaly)과 함수적 종속성(FD)

0. 오버뷰(Overview) 관계형 데이터베이스에서 설계 시 중복을 최소화하기 위해 데이터를 구조화하는 작업을 정규화(Normalization)라고 합니다. 정규화가 왜 필요한지에 대해 이야기하기 위해서, 아래 간단한 예시를 보겠습니다. 학번 이름 단과대학 과목코드 중간 성적 2016000001 조성현 공과대학 CSE123 A 2016000002 김영희 상경대학 CSE124 B 2016000001 조성현 공과대학 CSE125 C 2016000003 이철수 문과대학 CSE126 F 위 표는 학번, 이름, 단과대학, 과목, 중간 성적을 저장하고 있는 하나의 데이터베이스 스키마입니다. 그리고 학번과 과목코드가 기본 키(Primary Key)로 역할을 하고 있습니다. 학번과 과목코드를 통해 중간 성적을 결정지..

2021.09.15 게시됨